

Current monitoring board
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
9CH340C
SOP-16-20℃~+70℃ 2Mbps 3.3V、5V 50uA 7mA Transceiver USB 2.0 SOP-16 USB Converters ROHSWCH (Nanjing Qinheng Microelectronics)USB ConvertersESP32-WROOM-32E
SMD,18x25.5mmSMD,18x25.5mm WiFi Modules ROHSEspressif SystemsWiFi ModulesAP2112K-3.3
SOT253.3V 600mA CMOS Low Dropout Linear Regulator with EnableDiodes IncorporatedUncategorisedUSBLC6-2P6
SOT-666-6-40℃~+125℃ 150nA 17V 2 3.5pF 5.25V 5A@8/20us 6V ESD IEC 61000-4-2 Unidirectional SOT-666-6 ESD and Surge Protection (TVS/ESD) ROHSSTMicroelectronicsESD And Surge Protection (TVS/ESD)BAT54S
SOT-231 Pair Series Connection 1V@100mA 200mA 2uA@25V 30V 600mA SOT-23 Schottky Diodes ROHSMDDSchottky DiodesS8050
SOT-23-55℃~+150℃ 1 NPN 100MHz 100nA 120 25V 300mW 500mA 5V 600mV NPN SOT-23 Bipolar (BJT) ROHShongjiachengBipolar (BJT)SS14
SMA(DO-214AC)-55℃~+150℃ 1A 25A 300uA@40V 40V 550mV@1A Independent SMA(DO-214AC) Schottky Diodes ROHSMDDSchottky DiodesTCJB226M025R0150E
1411-55℃~+125℃ 150mΩ@100kHz 22uF 25V 400mA@100kHz 55uA ±20% 1411 Tantalum Capacitors ROHSKyocera AVXTantalum CapacitorsTS-1088-AR02016
SMD,4x3mm-30℃~+80℃ 1.6N 100,000 cycles 12V 2mm 3.9mm 3mm 50mA Black Round Button SMD(SMT) Tab SPST Surface Mount,Vertical Without Bracket SMD,4x3mm Tactile Switches ROHSXUNPUTactile Switches
README
README.mdcurrent_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.

Project structure
.
├── .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 layoutInstallation
With Docker
Requirements:
- Docker
- Docker Compose
- just (Optional)
using just:
just dev initwithout just
DOCKER_COMPOSE_SERVICE=current_monitoring_esp32-app
docker-compose run --rm $DOCKER_COMPOSE_SERVICE just initWithout Docker:
Requirements:
- uv (Python manager)
- PlatformIO CLI
- Wokwi (Optional, needed for simulation)
- just (Optional)
using just:
just initwithout just
uv sync
uv run pio run -t compiledbGit hooks
using uv and just
just pre-commit-initusing only uv
uv run pre-commit install --hook-type pre-commit --hook-type pre-pushand it can also be installed using only Python.
Build
With Docker
using just:
just dev buildwithout just
DOCKER_COMPOSE_SERVICE=current_monitoring_esp32-app
docker-compose run --rm $DOCKER_COMPOSE_SERVICE just buildWithout Docker:
using just:
just buildwithout just
uv run pio run -e bare_metal -e rtosFlash
...
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 inlinefunctions
Parts
45| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 100k | Resistor_SMD:R_0805_2012Metric | R1, R2, R3, R4, R5, R15 |
| 4 | 100 | Resistor_SMD:R_0805_2012Metric | R9, R10, R13, RLo1 |
| 4 | 10k | Resistor_SMD:R_0805_2012Metric | R8, R11, R12, R14 |
| 2 | 100nF | Capacitor_SMD:C_0402_1005Metric | C7, C9 |
| 2 | 10nF | Capacitor_SMD:C_0402_1005Metric | C4, C5 |
| 2 | 1702473 | Phoenix connector foot:PHOENIX_1702473 | J5, J6 |
| 2 | 5.1k | Resistor_SMD:R_0805_2012Metric | R6, R7 |
| 2 | BAT54S | Package_TO_SOT_SMD:SOT-23 | D3, D4 |
| 2 | S8050 | Package_TO_SOT_THT:TO-92_Inline | Q1, Q2 |
| 2 | SS14 | Diode_SMD:D_SMA | D1, D2 |
| 2 | TCJB226M025R0150E | Capacitor_Tantalum_SMD:CP_EIA-1608-08_AVX-J | C1, C2 |
| 2 | TS-1088-AR02016 | Button_Switch_SMD:SW_SPST_TS-1088-xR020 | BOOT_BUTTON1, EN_BUTTON1 |
| 1 | 100uF | Capacitor_SMD:C_0402_1005Metric | C8 |
| 1 | 10u | Capacitor_SMD:C_0402_1005Metric | C3 |
| 1 | 22k | Resistor_SMD:R_0805_2012Metric | RLe1 |
| 1 | 22uF | Capacitor_SMD:C_0402_1005Metric | C6 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | CH340C | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U4 |
| 1 | CUI_PD-30 | Connector:CUI_PD-30 | J2 |
| 1 | ESP32-WROOM-32E | RF_Module:ESP32-WROOM-32E | U6 |
| 1 | LED | LED_SMD:LED_0402_1005Metric | D6 |
| 1 | Microsemi_FlashPro-JTAG-10 | Connector_IDC:IDC-Header_2x05_P2.54mm_Vertical_SMD | J4 |
| 1 | OPA2333xxD | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U1 |
| 1 | USBLC6-2P6 | Package_TO_SOT_SMD:SOT-666 | U2 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J1 |
Similar boards
- 2 layers45.4 × 22.2 mm

- 2 layers61.3 × 63.3 mm

- 2 layers60 × 47 mm

Astro driver
rudnik275/astronaut-lamp
Ночник «космонавт на луне» → нативное HomeKit-устройство на ESP32 + HAA: разбор родной платы, схема драйвера, конфиг, корпус
51 parts - 2 layers76.8 × 100 mm

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 mm

- 2 layers63.5 × 41.5 mm

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 mm

Unijoysticle2 c64
ricardoquesada/unijoysticle2
Bluetooth gamepad support for the Commodore 64 / Atari / Amiga, etc.
58 parts62 - 2 layers62 × 72 mm

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.