Skip to the content
2 layers100.7 × 57.4 mmCurrent monitoring board, the printed circuit board in 3D

Current monitoring board

joefscholtz/current_monitoring_esp32

Firmware and hardware design ESP32 and ESP-IDF framework for measuring current and detecting leakage using CT sensors.

Size
100.7 × 57.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
45
Nets
69
Pads
214
Tracks, vias
332, 103
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
7 May 2026
Updated
13 May 2026

Overview

Current monitoring board is an open-source printed circuit board by joefscholtz, from the joefscholtz/current_monitoring_esp32 repository on GitHub. It is a 2-layer board of 100.7 × 57.4 mm with 45 parts on 69 nets, routed with 332 tracks and 103 vias.

It is built around the CH340C, ESP32-WROOM-32E and AP2112K-3.3, with the USBLC6-2P6, BAT54S and S8050 among its other parts. Its parts include 16 resistors, 9 capacitors, 5 ICs, 5 diodes and 5 connectors. It belongs with the sensors and measurement boards and the ESP32 boards of this library.

Main components

9

README

README.md

current_monitoring_esp32

Modular firmware project in PlatformIO and hardware design in KiCad using ESP32 and ESP-IDF framework for measuring current and detecting leakage using CT sensors, publishing the data via MQTT through Wifi ( and Ethernet, but not yet fully implemented ). For more informatation on design decisions consult the docs directory.

Custom ESP32-WROOM-32E Board

Project structure

text
.
├── .github/workflows/          # CI/CD
├── app/                        # Two alternatives to consume the library
│   ├── bare_metal/             # Simple Super-Loop implementation
│   └── rtos/                   # RTOS Task-based
├── components/                 # Library ESP-IDF style components
│   └── current_monitor/        # RMS, Differential math, Calibration
│   └── network_manager/        # Wifi, Ethernet and MQTT
├── docs/                       # Documentation
├── kicad/                      # KiCad files
│   └── current_monitor_board/  # KiCad project
│   └── mods/                   # KiCad libraries
├── scripts/                    # Scripts for the project
├── test/                       # Unit tests for the monitor library
├── platformio.ini              # Multi-environment config
├── wokwi.toml                  # Simulation config for ESP32 + Sensors
└── diagram.json                # Wokwi hardware layout

Installation

With Docker

Requirements:

  • Docker
  • Docker Compose
  • just (Optional)

using just:

bash
just dev init

without just

bash
DOCKER_COMPOSE_SERVICE=current_monitoring_esp32-app

docker-compose run --rm $DOCKER_COMPOSE_SERVICE just init

Without Docker:

Requirements:

  • uv (Python manager)
  • PlatformIO CLI
  • Wokwi (Optional, needed for simulation)
  • just (Optional)

using just:

bash
just init

without just

bash
uv sync
uv run pio run -t compiledb

Git hooks

using uv and just

bash
just pre-commit-init

using only uv

bash
uv run pre-commit install --hook-type pre-commit --hook-type pre-push

and it can also be installed using only Python.

Build

With Docker

using just:

bash
just dev build

without just

bash
DOCKER_COMPOSE_SERVICE=current_monitoring_esp32-app

docker-compose run --rm $DOCKER_COMPOSE_SERVICE just build

Without Docker:

using just:

bash
just build

without just

bash
uv run pio run -e bare_metal -e rtos

Flash

...

TODO

current_monitor:

  • Acquisition interval missed
  • Convert raw into voltage
  • Calibration
  • Move pin definitions to Kconfig
  • Check MAX_DIGI_VALUE

mqtt:

App:

Flash

  • Add flash scripts
  • efuse
  • self-contained flash script

Docs:

  • Hardware mapping
  • C4 model

KiCad

  • MQTT thru Ethernet

Other:

  • Test with PlatformIO IDE
  • Run Tests without static inline functions

Parts

45
QtyValueFootprintReferences
6100kResistor_SMD:R_0805_2012MetricR1, R2, R3, R4, R5, R15
4100Resistor_SMD:R_0805_2012MetricR9, R10, R13, RLo1
410kResistor_SMD:R_0805_2012MetricR8, R11, R12, R14
2100nFCapacitor_SMD:C_0402_1005MetricC7, C9
210nFCapacitor_SMD:C_0402_1005MetricC4, C5
21702473Phoenix connector foot:PHOENIX_1702473J5, J6
25.1kResistor_SMD:R_0805_2012MetricR6, R7
2BAT54SPackage_TO_SOT_SMD:SOT-23D3, D4
2S8050Package_TO_SOT_THT:TO-92_InlineQ1, Q2
2SS14Diode_SMD:D_SMAD1, D2
2TCJB226M025R0150ECapacitor_Tantalum_SMD:CP_EIA-1608-08_AVX-JC1, C2
2TS-1088-AR02016Button_Switch_SMD:SW_SPST_TS-1088-xR020BOOT_BUTTON1, EN_BUTTON1
1100uFCapacitor_SMD:C_0402_1005MetricC8
110uCapacitor_SMD:C_0402_1005MetricC3
122kResistor_SMD:R_0805_2012MetricRLe1
122uFCapacitor_SMD:C_0402_1005MetricC6
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U3
1CH340CPackage_SO:SOIC-16_3.9x9.9mm_P1.27mmU4
1CUI_PD-30Connector:CUI_PD-30J2
1ESP32-WROOM-32ERF_Module:ESP32-WROOM-32EU6
1LEDLED_SMD:LED_0402_1005MetricD6
1Microsemi_FlashPro-JTAG-10Connector_IDC:IDC-Header_2x05_P2.54mm_Vertical_SMDJ4
1OPA2333xxDPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U2
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ1

Similar boards

  • 2 layers45.4 × 22.2 mmTrace, the printed circuit board in 3D

    Trace

    ayaangrover/trace

    a dev board

    15 parts2
  • 2 layers61.3 × 63.3 mmMonitoring Gunung, the printed circuit board in 3D

    Monitoring Gunung

    rafdi03/PCB_Desain

    Schematic PCB Project

    50 parts
  • 2 layers60 × 47 mmAstro driver, the printed circuit board in 3D

    Astro driver

    rudnik275/astronaut-lamp

    Ночник «космонавт на луне» → нативное HomeKit-устройство на ESP32 + HAA: разбор родной платы, схема драйвера, конфиг, корпус

    51 parts
  • 2 layers76.8 × 100 mmProject CV, the printed circuit board in 3D

    Project CV

    KazimGL/ESP32-PowerIoT-DevBoard

    ESP32 battery-powered IoT dev board with Li-ion charging, protection, and sensor support — designed in KiCad

    62 parts
  • 2 layers49.4 × 95.7 mmPhysiowand, the printed circuit board in 3D

    Physiowand

    1tsMS/Physiowand

    91 parts
  • 2 layers63.5 × 41.5 mmRoofEsp, the printed circuit board in 3D

    RoofEsp

    alex1klimovich/esp32-solar-attic-fan-controller

    ESP32 solar attic fan controller with custom power, sensing, USB-C, and JLCPCB-ready hardware

    53 parts
  • 4 layers62.5 × 60 mmUnijoysticle2 c64, the printed circuit board in 3D

    Unijoysticle2 c64

    ricardoquesada/unijoysticle2

    Bluetooth gamepad support for the Commodore 64 / Atari / Amiga, etc.

    58 parts62
  • 2 layers62 × 72 mmMsx joyblue v2-build2, the printed circuit board in 3D

    Msx joyblue v2-build2

    herraa1/msx-joyblue-v2

    Use bluetooth joysticks with your MSX computer

    64 parts5GPL-3.0

Questions

How big is the Current monitoring board PCB?

It measures 100.7 × 57.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Current monitoring board use?

45 parts, built around the CH340C, ESP32-WROOM-32E, AP2112K-3.3 and USBLC6-2P6. 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 Current monitoring board KiCad files?

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

Can I use the Current monitoring board design in my own project?

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