

ZBSmartMeter
This is a ZigBee device to collect data from smartmeters using the DLMS/COSEM protocol.
- Size
- 43.3 × 37.6 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 37
- Nets
- 58
- Pads
- 180
- Tracks, vias
- 169, 20
- Pours
- 121
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 10 Jul 2023
- Updated
- 5 Mar 2024
Overview
ZBSmartMeter is an open-source printed circuit board by Tropaion, from the Tropaion/ZigBee_SmartMeter_Reader repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 43.3 × 37.6 mm with 37 parts on 58 nets, routed with 169 tracks and 20 vias.
It is built around the ESP32-C6-MINI-1U-H4, TLV1117-33DCY and CPDQ5V0-HF, with the SMAJ40CA among its other parts. Its parts include 11 resistors, 9 capacitors, 6 diodes, 5 connectors and 3 ICs. It belongs with the radio and wireless and home automation and IoT boards and the ESP32 and RISC-V boards of this library.
Main components
4ESP32-C6-MINI-1U-H4
SMD,13.2x12.5mm-105.5dBm -40℃~+105℃ 2.4GHz 20.5dBm 382mA 3V~3.6V 73mA ESP32-C6FH4 Integrated Bluetooth function、Integrated Zigbee function、Support USB interface UART、SDIO、SPI、I2C、GPIO、USB SMD,13.2x12.5mm WiFi Modules ROHSEspressif SystemsWiFi ModulesTLV1117-33DCY
UncategorisedTexas InstrumentsCPDQ5V0-HF
0402(SOD-923F)-40℃~+125℃ 1 15pF 174W@8/20us 18.6V 1uA 5.6V 5V 9.4A@8/20us ESD IEC 61000-4-2 0402(SOD-923F) ESD and Surge Protection (TVS/ESD) ROHSComchipESD And Surge Protection (TVS/ESD)SMAJ40CA
DO-214AC(SMA)ESD And Surge Protection (TVS/ESD)hongjiacheng
README
README.mdZigBee_SmartMeter_Reader
This is an open-source ZigBee device based on the new ESP32-C6 to collect data from smartmeters using the DLMS/COSEM protocol.
Ever since I got the smartmeter "Sagemcom T-210D" with the P1 user interface, I wanted to integrate it into my ZigBee network. Since I didn't find any existing solution, I decided to develop my own.
If someone is interested in buying an assembled PCB, pm me. Currently I have one board with external antenna available.
THE PROJECT IS STILL WIP.
Hardware
View the latest PCB Interactive BOM.
You can also view the latest Schematic or Layout.
The same hardware could also be used with WLAN and ESPHome.
For this project, I used the ESP32-C6-MINI-1U. I chose the version with an external antenna, since, in most cases, the devices will be mounted in an isolated meter box. And, since many of them are made of metal (Faraday cage), like in my case, I opted for an external antenna to mount on the outside of the meter box.
To provide easy flashing and debugging the USB-C-Socket is connected to the ESP internal USB-JTAG-Converter. In the case that the converter is not working, the UART0 programming interface is connected to J2 and J3, which will not be assembled.
For production use in the meter box, only the 5V supply terminal (J5) which in my case will be connected to a 5V DIN Power Supply and RJ12 (J1) cable going to the smartmeter is needed.
Since most smartmeters send encrypted data, you probably need to request an decryption key from your provider. This key has to be configured in the software. The current plan for this is to provide a simple configuration terminal which is accessible via the USB-C-Socket.
Software
The software will be separated into three core components/libraries. Each will be individually tested and then combined.
- human_interface - handles button input and led (working)
- zigbee - handles zigbee basic functions
- zigbee_electricity_meter - handles everything zigbee and electricity meter related (cluster)
- smartmeter - read data via uart, parse layers and decrypt data
Possible additional functionalities:
- zigbee_ota - updating firmware via zigbee
- configuration_console - usb console to configure device (decryption key)
OR
- zigbee custom configuration cluster - cluster configure device (decryption key)
Structure of SmartMeter data
How the data is handled is a bit complicated and consists of three layers:
- MBUS-Layer
- DLMS-Layer
- OBIS-Layer
Each layer will be handled by a parser.
See the diagram to understand the structure and how the parser handles the data:

Sources
- esphome-dlms-meter
- SmartMeter P1 Interface
- M-Bus Specification, Page 22+
- ZigBee Home Automation Profile
- ZigBee Cluster Library Specification
Enclosue
The first version of the enclosure is released and now in printing.
Attribution
Thanks to EspressIf for sponsoring two samples of ESP32-C6-MINI-1U.
Thanks to PCBWay for sponsoring the production of the PCB and Stencil for v0.2. It was my first time using their service and they have nice customer service and great build quality. The image in the hardware section shows the result of v0.2.
Parts
37| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | CPDQ5V0-HF | Diode_SMD:D_SOD-923 | D4, D5, D6 |
| 2 | 10kΩ 1% | Resistor_SMD:R_0603_1608Metric | R5, R6 |
| 2 | 160Ω | Resistor_SMD:R_0603_1608Metric | R8, R9 |
| 2 | 1µF/10V | Capacitor_SMD:C_0603_1608Metric | C5, C6 |
| 2 | 220Ω | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | 5.1kΩ 1% | Resistor_SMD:R_0603_1608Metric | R10, R11 |
| 2 | SW_Push | Button_Switch_SMD:SW_SPST_TL3305A | SW1, SW2 |
| 1 | 0.1µF/50V/10% | Capacitor_SMD:C_0603_1608Metric | C8 |
| 1 | 100Ω 1% | Resistor_SMD:R_0603_1608Metric | R4 |
| 1 | 10µF | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 10µF/25V/20% | Capacitor_SMD:C_0603_1608Metric | C9 |
| 1 | 1N5819 | Diode_SMD:D_SOD-123 | D3 |
| 1 | 1µF/16V/10% | Capacitor_SMD:C_0603_1608Metric | C4 |
| 1 | 220nF | Capacitor_SMD:C_0603_1608Metric | C2 |
| 1 | 22µF/10V | Capacitor_SMD:C_0805_2012Metric | C7 |
| 1 | 30kΩ 1% | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 330µF 10% | Capacitor_SMD:CP_Elec_8x10.5 | C3 |
| 1 | 680Ω | Resistor_SMD:R_0603_1608Metric | R7 |
| 1 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J3 |
| 1 | Conn_01x04 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J2 |
| 1 | ESP32-C6-MINI-1/U | Espressif:ESP32-C6-MINI-1U | U3 |
| 1 | LEDmA | LED_SMD:LED_0603_1608Metric | D2 |
| 1 | MountingHole | MountingHole:MountingHole_2.2mm_M2 | H1 |
| 1 | NCN5150DG | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U1 |
| 1 | RJ12 | Connector_RJ:RJ12_Amphenol_54601 | J1 |
| 1 | SMAJ40CA | SMAJ40CA:DIOM4325X250N | D1 |
| 1 | Screw_Terminal_01x02 | Connector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_2-G_1x02_P5.00mm_Horizontal | J5 |
| 1 | TLV1117-33 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | USB_C_Receptacle_USB2.0 | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J6 |
Questions
How big is the ZBSmartMeter PCB?
It measures 43.3 × 37.6 mm and has 2 copper layers, 1.6 mm thick.
What parts does the ZBSmartMeter use?
37 parts, built around the ESP32-C6-MINI-1U-H4, TLV1117-33DCY, CPDQ5V0-HF and SMAJ40CA. 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 ZBSmartMeter KiCad files?
From the Tropaion/ZigBee_SmartMeter_Reader repository on GitHub, at the commit this page was made from: the board is hardware/external_antenna/ZBSmartMeter.kicad_pcb and its schematic hardware/external_antenna/ZBSmartMeter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the ZBSmartMeter design in my own project?
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers54.1 × 21.9 mm

- 2 layers54.1 × 33.9 mm

Chrononauts board
dsg-jam/chrononauts-quest
This sub-folder contains the hardware design files for an RF transceiver system built using an ESP32-C3 module and a CC1101 RF chip.
59 partsMIT - 2 layers35 × 55 mm

- 2 layers158 × 85 mm

- 2 layers65 × 56.1 mm

- 4 layers98 × 100 mm

Esp32s3-can sd logger
MrBlahhhh/esp32-shield-can1-can2-kdcan-analogin-sdcard
A carrier board an ESP32-S3-DevKitC-1 plugs into, turning it into a vehicle data logger. The dev board brings the MCU and its power; this board brings everything that has to touch a car.
164 parts1 - 2 layers25.4 × 42.9 mm

- 4 layers75.5 × 78 mm

Current loop gen
andrzejkasica/CO-sensor
Project based on ME2-CO gas sensor with current loop and 2 relays output.
126 parts