Skip to the content
2 layers29.2 × 52.1 mmESP32, the printed circuit board in 3D

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

2

README

README.md

nRF905 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

See Buiding the hardware

Compiling / Installing

  1. Install the Arduino IDE
  2. Open the nRF905API.ino file in Arduino IDE
  3. In the File menu select Preferences and add the following to Additional Board Manager URLs:
text
https://arduino.esp8266.com/stable/package_esp8266com_index.json,https://dl.espressif.com/dl/package_esp32_index.json
  1. In the Tools menu select Board and find the board you are using (DO-IT ESP32 / Wemos / NodeMCU etc).
  2. In the Sketch menu select Upload
  3. 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 password nrf905api.
  4. Open a webbrowser and go to http://192.168.4.1/
  5. Follow the configuration wizard:
    cfglang
    cfgauth
    cfgwifi
    cfgfan
    cfgfand1
    cfgfand2
    cfgboot
  6. 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

ParameterRequiredDescription
frequencyNoSet the RF frequency
crcNooff: disable CRC
8: enable 8-bit CRC
16: enable 16-bt CRC
txpowerNoSet the RF transmit power
-10: -10dBm
-2: -2dBm
6: 6dBm
10: 10dBm
rxpowerNoSet the RF receive power
normal: normal receive mode
low: low power receive mode
txaddrwidthNoSet the number of Tx address bytes
1: 1 byte
4: 4 bytes
rxaddrwidthNoSet the number of Rx address bytes
1: 1 byte
4: 4 bytes
txpayloadwidthNoSet the number of Tx payload bytes
1...32: Payload is 1...32 bytes
rxpayloadwidthNoSet the number of Rx payload bytes
1...32: Payload is 1...32 bytes
txaddrNoSet the Tx address
0x12345678: Set Tx address to 0x12345678
rxaddrNoSet the Rx address
0x12345678: Set Rx address to 0x12345678
nvramNoStore the nRF905 configuration in NVRAM
true: Store nRF905 config in NVRAM
false: 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

ParameterRequiredDescription
txaddrYesAddress to send the data to
payloadYesThe data to be sent
timeoutNoTimeout 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

ParameterRequiredDescription
reset NoReset the system
true: Reset system
nvram NoClear the NVRAM
clear: 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

ParameterRequiredDescription
modelYesFan model:
zehnder: Zehnder fans (868.400MHz)
buva: BUVA fans (868.200MHz)
networkYesNetwork ID of your fan network
main_unit_idYesID of your fan main unit
device_idYesID 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

ParameterRequiredDescription
speedYesFan speed:
low: Low speed
medium: Medium speed
high: High speed
max: Maximum speed
timerNoSet 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

ParameterRequiredDescription
voltageYesVoltage:
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

ParameterRequiredDescription
device_idNoDevice 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
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_3.2mm_M3_ISO14580H1, H2, H3, H4
333pFCapacitor_SMD:C_0603_1608MetricC3, C5, C8
212nHInductor_SMD:L_0603_1608MetricL1, L3
222pFCapacitor_SMD:C_0603_1608MetricC2, C12
25.6pFCapacitor_SMD:C_0603_1608MetricC9, C10
110nFCapacitor_SMD:C_0603_1608MetricC7
110nHInductor_SMD:L_0603_1608MetricL2
116MHzCrystal:Crystal_HC49-4H_VerticalX1
11MResistor_SMD:R_0603_1608MetricR1
122kResistor_SMD:R_0603_1608MetricR2
122pF Capacitor_SMD:C_0603_1608MetricC1
127kLED_SMD:LED_0603_1608MetricR3
13.3nFCapacitor_SMD:C_0603_1608MetricC4
14.7nFCapacitor_SMD:C_0603_1608MetricC6
14.7pFCapacitor_SMD:C_0603_1608MetricC13
168LED_SMD:LED_0603_1608MetricR4
1BC547Package_TO_SOT_SMD:SOT-323_SC-70T1
1CDLED_SMD:LED_0603_1608MetricD3
1ESP32LConnector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_VerticalK1L1
1ESP32_RConnector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_VerticalK1R1
1RF outConnector_Coaxial:SMA_Amphenol_132134_VerticalK2
1nRF905Package_DFN_QFN:TQFN-32-1EP_5x5mm_P0.5mm_EP2.1x2.1mmIC1
1not fittedCapacitor_SMD:C_0603_1608MetricC11

More from eelcohn/nRF905-API

2
  • 2 layers25.4 × 34 mmWemos D1, the printed circuit board in 3D

    Wemos D1

    eelcohn/nRF905-API

    API webinterface for the nRF905

    31 parts69MIT
  • 2 layers18.8 × 31.8 mmPTR8000, the printed circuit board in 3D

    PTR8000

    eelcohn/nRF905-API

    API webinterface for the nRF905

    23 parts69MIT

Similar boards

  • 2 layers83.3 × 65.3 mmSimonShield, the printed circuit board in 3D

    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 mmSeaTalk1, the printed circuit board in 3D

    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 mmIPoS, the printed circuit board in 3D

    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 mmRC6502 General Video Adapter, the printed circuit board in 3D

    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 mmMega Amp, the printed circuit board in 3D

    Mega Amp

    theacodes/genesynth

    A Sega Genesis inspired synthesizer

    40 parts178Apache-2.0
  • 2 layers40 × 100 mmBack pcb, the printed circuit board in 3D

    Back pcb

    ZeroPhone/ZeroPhone-PCBs

    PCB files for ZeroPhone - for gerbers and schematics, go to "Releases" tab!

    118 parts148GPL-3.0
  • 2 layers100 × 100 mmCANBuster, the printed circuit board in 3D

    CANBuster

    GBert/misc

    miscellaneous stuff / unsorted

    182 parts99

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).