

ESP32
API webinterface for the nRF905
- Size
- 29.2 × 52.1 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 31
- Nets
- 42
- Pads
- 123
- Tracks, vias
- 192, 5
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 29 Mar 2020
- Updated
- 27 Sep 2026
Overview
ESP32 is an open-source printed circuit board by eelcohn, from the eelcohn/nRF905-API repository on GitHub, published under the MIT licence. It is a 2-layer board of 29.2 × 52.1 mm with 31 parts on 42 nets, routed with 192 tracks and 5 vias.
It is built around the NRF905 and BC547. Its parts include 13 capacitors, 4 resistors, 3 switches, 3 inductors and 1 IC. It belongs with the ESP32 boards of this library.
Main components
2NRF905
QFN-32-EP(5x5)-100dBm -40℃~+85℃ 1.9V~3.6V 10dBm 12.5mA 430MHz~928MHz 433MHz、868MHz、915MHz 50Kbps 9mA CRC check function、Manchester decoding function、Automatic retransmission function ISM SPI transceiver QFN-32-EP(5x5) RF Transceiver ICs ROHSNordic SemiconRF Transceiver ICsBC547
TO-92Bipolar (BJT)Jiangsu Changjing Electronics Technology (CJ)
README
README.mdnRF905 Arduino API
nRF905 Arduino API. Compatible with ESP8266 and ESP32 boards, tested on Wemos D1 mini Pro, NodeMCU 1.0 (ESP-12E module) and DOIT ESP32 Dev Module.
Building the hardware
Compiling / Installing
- Install the Arduino IDE
- Open the nRF905API.ino file in Arduino IDE
- In the File menu select Preferences and add the following to Additional Board Manager URLs:
https://arduino.esp8266.com/stable/package_esp8266com_index.json,https://dl.espressif.com/dl/package_esp32_index.json- In the Tools menu select Board and find the board you are using (DO-IT ESP32 / Wemos / NodeMCU etc).
- In the Sketch menu select Upload
- When the code has been uploaded the device will reboot and start a WiFi access point named
nRF905. Connect to that access point with the passwordnrf905api. - Open a webbrowser and go to
http://192.168.4.1/ - Follow the configuration wizard:







- Your device will now connect to your WiFi network.
Support
Due to lack of time it might take a long time for me to give support.
Usage
/api/v1/config.json
Configure the nRF905.
Example:
http://192.168.x.y/api/v1/config.json?frequency=868400000&crc=16&txpower=10&rxpower=normal&rxaddr=a55a5aa5&txaddr=a55a5aa5&rxaddrwidth=4&txaddrwidth=4&rxpayloadwidth=16&txpayloadwidth=16
| Parameter | Required | Description |
|---|---|---|
frequency | No | Set the RF frequency |
crc | No | off: disable CRC8: enable 8-bit CRC16: enable 16-bt CRC |
txpower | No | Set the RF transmit power-10: -10dBm-2: -2dBm6: 6dBm10: 10dBm |
rxpower | No | Set the RF receive powernormal: normal receive modelow: low power receive mode |
txaddrwidth | No | Set the number of Tx address bytes1: 1 byte4: 4 bytes |
rxaddrwidth | No | Set the number of Rx address bytes1: 1 byte4: 4 bytes |
txpayloadwidth | No | Set the number of Tx payload bytes1...32: Payload is 1...32 bytes |
rxpayloadwidth | No | Set the number of Rx payload bytes1...32: Payload is 1...32 bytes |
txaddr | No | Set the Tx address0x12345678: Set Tx address to 0x12345678 |
rxaddr | No | Set the Rx address0x12345678: Set Rx address to 0x12345678 |
nvram | No | Store the nRF905 configuration in NVRAMtrue: Store nRF905 config in NVRAMfalse: Do not store nRF905 config in NVRAM |
/api/v1/status.json
This will show a status page with details about the hardware. This API call takes no parameters.
Example:
http://192.168.x.y/api/v1/status.json
/api/v1/receive.json
This will return a list of received data frames by the nRF905. This API call takes no parameters.
Example:
http://192.168.x.y/api/v1/receive.json
/api/v1/send.json
This will transmit data. After the data has been transmitted, the API will wait for data to be received (a reply to the transmitted data). By default it will wait for 2 seconds, but you can change this by adding the timeout parameter.
Example:
http://192.168.x.y/api/v1/send.json?txaddr=aabbccdd&payload=0400035efa0c04a55a5aa50000000000&timeout=10
| Parameter | Required | Description |
|---|---|---|
txaddr | Yes | Address to send the data to |
payload | Yes | The data to be sent |
timeout | No | Timeout for reading data after the transmission is completed (in seconds) Default: 2 seconds |
/api/v1/systemconfig.json
Configure the system board.
Example:
http://192.168.x.y/api/v1/systemconfig.json?reset=true
| Parameter | Required | Description |
|---|---|---|
reset | No | Reset the systemtrue: Reset system |
nvram | No | Clear the NVRAMclear: Clear the NVRAM |
Fan API calls
/api/v2/fan/link.json
Link the nRF905-API to a fan device. This API call takes no parameters.
Example:
http://192.168.x.y/api/v2/fan/link.json
/api/v2/fan/config.json
Configure the fan parameters.
Example:
http://192.168.x.y/api/v2/fan/config.json?model=zehnder&network=1a2b3c4d&main_unit_id=91&device_id=5d
| Parameter | Required | Description |
|---|---|---|
model | Yes | Fan model:zehnder: Zehnder fans (868.400MHz)buva: BUVA fans (868.200MHz) |
network | Yes | Network ID of your fan network |
main_unit_id | Yes | ID of your fan main unit |
device_id | Yes | ID of your nRF905-API |
/api/v2/fan/setspeed.json
Set the fan speed of your fan device.
Example:
http://192.168.x.y/api/v2/fan/setspeed.json?speed=high
| Parameter | Required | Description |
|---|---|---|
speed | Yes | Fan speed:low: Low speedmedium: Medium speedhigh: High speedmax: Maximum speed |
timer | No | Set the fan timer (number of minutes) |
/api/v2/fan/setvoltage.json
Set the fan voltage of your fan device.
Example:
http://192.168.x.y/api/v2/fan/setvoltage.json?voltage=2.4
| Parameter | Required | Description |
|---|---|---|
voltage | Yes | Voltage:0.0...10.0: Voltage; range between 0.0 volt and 10.0 volt |
/api/test/fan/querydevice.json
Query a device for it's current settings (this API endpoint is not yet finished and is in test-mode).
Example:
http://192.168.x.y/api/test/fan/querydevice.json?device_id=32
| Parameter | Required | Description |
|---|---|---|
device_id | No | Device ID: ID of a fan device. By default it will select the fan it's linked to |
Disclaimer
This project is an independent, unofficial project. It is not affiliated with, endorsed by or supported by Zehnder Group, BUVA, ESPHome, Nabu Casa or any other manufacturer or organisation mentioned. All product names, trademarks and other intellectual property of third parties mentioned in this project remain the property of their respective owners and are used for identification and interoperability only.
The information and software in this project are provided "as is", for personal and educational use, without warranty of any kind, express or implied, including fitness for a particular purpose. The protocol description was obtained by observing radio traffic and may be incomplete or wrong. Using this project to control ventilation equipment is at your own risk: it may, for example, affect the equipment's warranty, or its ventilation of your home.
You must not use this project, or any information in it, in a harmful or illegal way, including in ways that violate radio regulations or the rights of others. The author(s) of this project and the owners of any third-party intellectual property cannot be held liable for any damage or loss resulting from the use or misuse of this project or its information.
Parts
31| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_ISO14580 | H1, H2, H3, H4 |
| 3 | 33pF | Capacitor_SMD:C_0603_1608Metric | C3, C5, C8 |
| 2 | 12nH | Inductor_SMD:L_0603_1608Metric | L1, L3 |
| 2 | 22pF | Capacitor_SMD:C_0603_1608Metric | C2, C12 |
| 2 | 5.6pF | Capacitor_SMD:C_0603_1608Metric | C9, C10 |
| 1 | 10nF | Capacitor_SMD:C_0603_1608Metric | C7 |
| 1 | 10nH | Inductor_SMD:L_0603_1608Metric | L2 |
| 1 | 16MHz | Crystal:Crystal_HC49-4H_Vertical | X1 |
| 1 | 1M | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 22k | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | 22pF | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 27k | LED_SMD:LED_0603_1608Metric | R3 |
| 1 | 3.3nF | Capacitor_SMD:C_0603_1608Metric | C4 |
| 1 | 4.7nF | Capacitor_SMD:C_0603_1608Metric | C6 |
| 1 | 4.7pF | Capacitor_SMD:C_0603_1608Metric | C13 |
| 1 | 68 | LED_SMD:LED_0603_1608Metric | R4 |
| 1 | BC547 | Package_TO_SOT_SMD:SOT-323_SC-70 | T1 |
| 1 | CD | LED_SMD:LED_0603_1608Metric | D3 |
| 1 | ESP32L | Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_Vertical | K1L1 |
| 1 | ESP32_R | Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_Vertical | K1R1 |
| 1 | RF out | Connector_Coaxial:SMA_Amphenol_132134_Vertical | K2 |
| 1 | nRF905 | Package_DFN_QFN:TQFN-32-1EP_5x5mm_P0.5mm_EP2.1x2.1mm | IC1 |
| 1 | not fitted | Capacitor_SMD:C_0603_1608Metric | C11 |
More from eelcohn/nRF905-API
2- 2 layers25.4 × 34 mm

- 2 layers18.8 × 31.8 mm

Similar boards
- 2 layers83.3 × 65.3 mm

SimonShield
github-linguist/linguist
Language Savant. If your repository's language is being reported incorrectly, send us a pull request!
46 parts14kMIT - 2 layers56 × 65 mm

SeaTalk1
dotnet/iot
This repo includes .NET Core implementations for various IoT boards, chips, displays and PCBs.
24 parts2.4kMIT - 2 layers132.1 × 45.7 mm

IPoS
peterheinrich/InternetOverSpaghetti
Transmitting IP packages over a pair of spaghetti thus demonstrating how media independent IP really is.
42 parts342 - 2 layers99.1 × 99.7 mm

RC6502 General Video Adapter
tebl/RC6502-Apple-1-Replica
An expandable SBC-version of the Apple 1 computer, easy to get started with and lot of cool stuff that can be added to it!
80 parts193GPL-3.0 - 2 layers55.9 × 38.6 mm

- 2 layers99.9 × 70 mm

- 2 layers40 × 100 mm

Back pcb
ZeroPhone/ZeroPhone-PCBs
PCB files for ZeroPhone - for gerbers and schematics, go to "Releases" tab!
118 parts148GPL-3.0 - 2 layers100 × 100 mm

Questions
How big is the ESP32 PCB?
It measures 29.2 × 52.1 mm and has 2 copper layers, 1.6 mm thick.
What parts does the ESP32 use?
31 parts, built around the NRF905 and BC547. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the ESP32 KiCad files?
From the eelcohn/nRF905-API repository on GitHub, at the commit this page was made from: the board is hardware/ESP32/ESP32.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the ESP32 design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).