Skip to the content
PCBKitNew board
4 layers100 × 100 mmEEMON42, the printed circuit board in 3D

ESP32-C3-based 36-channel home energy monitor

Size
100 × 100 mm
Copper layers
4
Thickness
1.61 mm
Parts
382
Nets
324
Pads
1,394
Tracks, vias
2,995, 330
Pours
15
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
2 Sep 2022
Updated
4 Oct 2026

Overview

EEMON42 is an open-source printed circuit board by jfcliche, from the jfcliche/EEMON42 repository on GitHub. It is a 4-layer board of 100 × 100 mm with 382 parts on 324 nets, routed with 2,995 tracks and 330 vias.

It is built around the ESP32-C3-WROOM-02-H4, PL133-97QC and TPS5403D, with the ADE7816ACPZ, KC2520Z16.3840C1KX00 and PEC12R-4117F-S0012 among its other parts. Its parts include 171 resistors, 122 capacitors, 18 connectors, 12 ICs and 12 diodes. It belongs with the ESP32 and RISC-V boards of this library.

Main components

12

README

README.md

EEMON42

ESP32-C3-based 42-channel home energy monitor using the Analog Device ADE7816 emergy monitor chip

Features

  • 42 Current monitoring inputs with 3.5 mm jacks for current transformers
  • Single board, 10x10 cm design with OLED screen with a OLED/switch/rotary encoder user interface
  • Two AC voltage for split phase voltage monitoring and board powering
  • Micropython control software with MQTT telemetry streamed over WiFi

Status

V0 Hardware - Board is built. - Hardware validation: - Switcher works. Board can be powered via USB or AC jacks. - Can operate the ESP32 via the USB and micropython. - All buttons work. - OLED display works - Only one ADE7816 is populated so far, but we can read registers. - Todo: - Check analog inputs of ADE7816. Populate rest of the board. Calibrate all inputs.

Software - Building basic micropyton modules - Todo: - Implement main loop and monitoring/GUI tasks as coroutines. Improve display functions. Integrate with Home Assistant.

Design Details:

  • Accurate Energy monitoring performed by seven ADE7816
    • ESP32-C3 controller implemented with a Espressif ESP32-C3-WROOM-02 or AI Thinker ESP-C3-13 module, providing
      • Single core RISC-V 160 MHz processor
      • 4 MB flash
      • Wifi, Bluetooth
      • Embedded USB controller
    • 96x64 pixel, 0.96" OLED display
    • 3 pushbutton keys
    • Rotary encoder with integrated push button
    • Dual 9-15VAC inputs for line voltage monitoring and powering the board
    • Micro-USB connector for UART programming and JTAG debugging, and alternate board powering
    • Integrated DC-DC converter for wide input voltage range

Rationale

The EEMON42 was developed as personal project for learning all the steps to build an embedded controller project from A to Z, starting from from schematics & layout, online PCB manufacturing, hand soldering of high density SMD devices, an developing the embedded controller software. More specifically, this includes:

  • Learn KiCAD 6.0 and learn to place and route designs
  • Use PCBWay or JLCPCB to manufacture the PCB
  • Learn SMD soldering techniques for sizes down to 0603 and QFN 0.5mm pitch devices
  • Learn the internal architecture of the ESP32-C3-based module
  • Software development tools (Visual Studio Code / Platform IO / ESP IDF/ Micropython etc)

History

2022/06: Design start 2022/12: Board was manufactured by PCBJLC. Board is assembled. Preliminary hardware verification is performed: power, ESP32, buttons and OLED display works with Micropython. Discovered bug in esptool that prevent the flashing stub to operate when USB-enabled micropython has booted first. 2023/03: ADE7816 is installed. Successful communication with it. Implement Python object for it. Implement SPI object to handle SPI CS pins shared with buttons and pin interrupts.

Known bugs & gotcha's:

v1 hardware:

  • GPIO9 can be pull down and prevent micropython boot if encoder is left in mid-position
  • Missing GPIO2 & GPIO8 pullup (but still works without those)
  • A reset switch would be nice, but is becoming les and less necessary as hardware matures
  • A power LED would prevent accidental soldering on a powered board...
  • Pad and copper pour cleareaces too small close to USB connector: rookie solderers might cause shorts when applying too much solder...
  • serial number chip (or some GPIO strapping) might be useful for software to identify the hardware automatically. rev2 GPIOs assignments will change.
  • encoder is a bit too close to screen for big fingers. Buttons should be spread out more.
  • Find socket with proper height for screen.

Changelog:

v2 hardware (under development):

  • OLED CS7 is now on FSPICS0 for native hardware-enabled CS toggling (if possible)
  • Encoder Button CS2 is on GPIO9 to prevent unwanted boot mode and allow user-controlled to force downnloader boot (although USB interface does not need it except for esptool bug)
  • CS0 and CS1 moved to other GPIOs
  • Added weak pullups on GPIO2 and GPIO8 to be sure

Parts

382
QtyValueFootprintReferences
561kResistor_SMD:R_0603_1608MetricR10, R11, R12, R13, R14, R102, R103, R111, R112, R113, R114, R115, R116, R131, R132, R140 +40
5622nFCapacitor_SMD:C_0603_1608MetricC2, C10, C11, C12, C15, C34, C103, C104, C107, C108, C109, C110, C111, C112, C117, C118 +40
46499Resistor_SMD:R_0603_1608MetricR100, R101, R125, R126, R127, R128, R129, R130, R146, R147, R148, R149, R150, R151, R167, R168 +30
42RBResistor_SMD:R_0603_1608MetricR1, R105, R106, R107, R108, R109, R110, R134, R135, R136, R137, R138, R139, R155, R156, R157 +26
32MountingHole_Pad_Connector_Audio_local:STX-4335_Combined_Mounting_HoleH1, H2, H10, H11, H12, H13, H14, H15, H16, H17, H18, H19, H20, H21, H22, H23 +16
244.7uF/16VCapacitor_SMD:C_0603_1608MetricC13, C16, C19, C22, C24, C41, C42, C47, C55, C56, C100, C105, C113, C114, C119, C123 +8
180.22uFCapacitor_SMD:C_0603_1608MetricC14, C20, C21, C25, C29, C43, C48, C57, C62, C71, C76, C101, C106, C115, C120, C124 +2
100.1uFCapacitor_SMD:C_0603_1608MetricC6, C17, C18, C33, C44, C58, C72, C86, C102, C116
922Resistor_SMD:R_0603_1608MetricR15, R17, R18, R60, R81, R104, R133, R154, R175
72.2kResistor_SMD:R_0603_1608MetricR24, R119, R120, R121, R122, R123, R124
76_port_3.5mm_audio_jack_array_module_left_column_Connector_Audio_local:6_ports_3.5mm_audio_jack_array_module_left_columnJ2, J5, J7, J9, J11, J13, J15
76_port_3.5mm_audio_jack_array_module_right_column_Connector_Audio_local:6_ports_3.5mm_audio_jack_array_module_right_columnJ3, J6, J8, J10, J12, J14, J16
7ADE7816Package_DFN_QFN:QFN-40-1EP_6x6mm_P0.5mm_EP4.6x4.6mmU2, U4, U5, U6, U7, U9, U10
7D_Schottky_Dual_CommonAnode_KKA_ParallelPackage_TO_SOT_SMD:SOT-323_SC-70D6, D7, D8, D9, D10, D11, D12
5B240AE-13Diode_SMD:D_SOD-123FD1, D2, D3, D4, D5
421.5KResistor_SMD:R_0603_1608MetricR19, R20, R25, R27
447nFCapacitor_SMD:C_0603_1608MetricC27, C28, C30, C31
4MountingHoleMountingHole:MountingHole_2.7mm_M2.5MH1, MH2, MH3, MH4
3SW_MEC_5E_Button_Switch_SMD:SW_Push_1P1T_NO_6x6mm_H13mmSW2, SW3, SW4
20Resistor_SMD:R_0603_1608MetricR97, R98
2100pFCapacitor_SMD:C_0603_1608MetricC23, C26
210uF/50VCapacitor_SMD:C_1206_3216MetricC3, C32
222pFCapacitor_SMD:C_0603_1608MetricC98, C99
233_SnapEDA Library:RESCAV50P200X100X55-8NRN1, RN2
2Barrel_Jackemon36:PJ-002AJ1, J4
110nFCapacitor_SMD:C_0603_1608MetricC5
116.384MHzOscillator:Oscillator_SMD_Kyocera_KC2520Z-4Pin_2.5x2.0mmU3
12.2KResistor_SMD:R_0603_1608MetricR23
12.2nFCapacitor_SMD:C_0603_1608MetricC4
1220uF/35VCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC7
147kResistor_SMD:R_0603_1608MetricR3
150Resistor_SMD:R_0603_1608MetricR117
1680uF/35VCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC1
182uHInductor_SMD:L_Bourns_SRN8040TAL1
1Conn_02x03_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ17
1DNLResistor_SMD:R_0603_1608MetricR2
1DNPResistor_SMD:R_0603_1608MetricR26
1ESP32-C3-WROOM-02-N4emon36:MODULE_ESP32-C3-WROOM-02-H4U1
1Logo_Open_Hardware_Smallemon36:OSHW_logo_10mmLOGO1
1MISOTestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mmTP3
1MOSITestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mmTP2
1PEC12R-4117F-S0012_SnapEDA Library:ENC_PEC12R-4025F-S0024U12
1PL133-97QCemon36:PL133-97QCU11
1SCLKTestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mmTP1
1SSD1331_RGB_OLED_94x64emon36:SSD1331_RGB_OLED_96x64DISP1
1TPS5403Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU8
1USB_B_MicroConnector_USB:USB_Micro-B_Amphenol_10118194_HorizontalJ37

Questions

How big is the EEMON42 PCB?

It measures 100 × 100 mm and has 4 copper layers, 1.61 mm thick.

What parts does the EEMON42 use?

382 parts, built around the ESP32-C3-WROOM-02-H4, PL133-97QC, TPS5403D and ADE7816ACPZ. 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 EEMON42 KiCad files?

From the jfcliche/EEMON42 repository on GitHub, at the commit this page was made from: the board is hardware/kicad/eemon42/eemon42.kicad_pcb and its schematic hardware/kicad/eemon42/ADE7816.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the EEMON42 design in my own project?

Its repository states no licence, so its author keeps all rights: ask jfcliche before reusing the design.

Similar boards

  • 2 layers66 × 76.2 mmADE7816 Breakout, the printed circuit board in 3D

    ADE7816 Breakout

    whatnick/ADE7816_Breakout

    Breakout board to assist energy monitor development with ADE7816

    57 parts2
  • 2 layers36 × 25.7 mmTP540xSAL, the printed circuit board in 3D

    TP540xSAL

    cdntinker/TP540xEVM

    (This project started as a result of the truly awful EVM design from TI for these chips.)

    19 parts
  • 4 layers80 × 74.5 mmGSM STM, the printed circuit board in 3D

    GSM STM

    reljamar/MQTT-GSM-receiver

    A basic IoT device that connects to a mobile network and activates an output pin based on an MQTT message

    108 partsMIT
  • 4 layers100 × 70 mmElonMux, the printed circuit board in 3D

    ElonMux

    EPFLXplore/Power_HW

    KiCad design files for the power boards of the Xplore rover.

    329 parts7
  • 2 layers89 × 44 mmCDRC, the printed circuit board in 3D

    CDRC

    lilindian16/customDRC

    Development of custom Audison DRC interface

    85 parts4
  • 2 layers90 × 100 mmMeshcore NaIon, the printed circuit board in 3D

    Meshcore NaIon

    Alksndr55/mesh-repeater

    Mesh Repeater v1 — одноплатный LoRa-репитер для MeshCore и Meshtastic, 90×100 мм. Упор на максимальное энергосбережение и работу в суровых сибирских зимах. Солнечный зарядник, Na-ion 1S / LTO 2S.

    154 parts3