

Project CV
ESP32 battery-powered IoT dev board with Li-ion charging, protection, and sensor support — designed in KiCad
- Size
- 76.8 × 100 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 62
- Nets
- 108
- Pads
- 285
- Tracks, vias
- 654, 80
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 6 Oct 2026
- Updated
- 6 Oct 2026
Overview
Project CV is an open-source printed circuit board by KazimGL, from the KazimGL/ESP32-PowerIoT-DevBoard repository on GitHub. It is a 2-layer board of 76.8 × 100 mm with 62 parts on 108 nets, routed with 654 tracks and 80 vias.
It is built around the CH340C, ESP32-WROOM-32E and BME280, with the AP2112K-3.3, DW01A and TP4056-42-ESOP8 among its other parts. Its parts include 18 resistors, 9 capacitors, 6 ICs, 6 connectors and 5 diodes. It belongs with the power boards and the ESP32 boards of this library.
Main components
10CH340C
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 ModulesBME280
LGA-8(2.5x2.5)-40℃~+85℃ 0%RH~100%RH 1.71V~3.6V 1.8uA 16bit I2C、SPI ±0.5℃ ±3%RH LGA-8(2.5x2.5) Temperature and Humidity Sensor ROHSBoschTemperature And Humidity SensorAP2112K-3.3
SOT253.3V 600mA CMOS Low Dropout Linear Regulator with EnableDiodes IncorporatedUncategorisedDW01A
SOT-23-6L-40℃~+85℃ 1 2.5V 300mV~10V 3uA 4.3V Protection IC Support SOT-23-6L Battery Management ROHSPUOLOPBattery ManagementTP4056-42-ESOP8
ESOP-8-40℃~+85℃ 1 1A 2uA 4.2V 4V~8V Charging IC Lithium Battery Support ESOP-8 Battery Management ROHSTOPPOWERBattery ManagementMMBT3904
SOT-23-55℃~+150℃ 1 NPN 100 100nA 200mA 200mW 300MHz 300mV 40V 6V NPN SOT-23 Bipolar (BJT) ROHSJiangsu Changjing Electronics Technology (CJ)Bipolar (BJT)FS8205A
SOT-23-6-55℃~+150℃ 1.2V 1.5W 2 N-Channel 20V 31.5mΩ@2.5V 466pF 5.7nC@4.5V 58pF 65pF 6A SOT-23-6 MOSFETs ROHSTECH PUBLICMOSFETsSS14
SMA(DO-214AC)-55℃~+150℃ 1A 25A 300uA@40V 40V 550mV@1A Independent SMA(DO-214AC) Schottky Diodes ROHSMDDSchottky DiodesUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)
README
README.mdESP32 PowerIoT Dev Board
A battery-powered ESP32 development board with onboard Li-ion charging, protection, regulation, and sensor support — designed end-to-end in KiCad.
Designed by Kazim Bhojani (KaizBuilts [blocked]) — a fresher PCB design project built to learn the complete hardware design workflow from schematic to fabrication-ready Gerbers.
📋 Overview
This board combines four functional subsystems into a single 2-layer PCB:
| Block | Function |
|---|---|
| Power | USB-C input, ESD protection, TP4056 Li-ion charging, DW01A + FS8205A battery protection, AP2112K-3.3 regulation, battery voltage sensing |
| Processor | ESP32-WROOM-32E module with reset/boot circuitry |
| Communication | CH340C USB-UART bridge with auto-program (DTR/RTS reset) circuit, I2C breakout |
| I/O | Dual GPIO breakout headers (1×15 each), user LED, user button, BME280 environmental sensor |
⚙️ Specs
- MCU: ESP32-WROOM-32E (WiFi + Bluetooth)
- Charging: TP4056, USB-C input, configurable charge current
- Protection: DW01A + FS8205A (overcharge / overdischarge / short-circuit)
- Regulation: AP2112K-3.3, 600mA LDO
- Sensor: BME280 (temperature, humidity, pressure) over I2C
- Layers: 2-layer PCB
- Design tool: KiCad 10.0.5
- Board size: ~65mm × 50mm
🖼️ Images
PCB Layout / Routing

3D Render

Schematic 📄 schematic.pdf
3D Design Overview 📄 PRoject_cv.pdf
🧠 Design Process & AI-Assisted Workflow
This project was built while learning PCB design fundamentals from scratch, using Claude (Anthropic) as a design-review assistant throughout the process — not to generate the design automatically, but to:
- Review each schematic block (Power, Processor, Communication, I/O) for wiring correctness before moving forward
- Explain why certain circuits work the way they do (e.g., the EN/IO0 auto-reset logic, battery protection MOSFET gate drive, I2C pull-up sizing)
- Walk through ERC/DRC error messages line-by-line and explain root causes rather than just handing over a fix
- Catch real mistakes along the way (several were my own, and at least one was the AI's — an incorrect DTR/RTS pin mapping that was caught and corrected by cross-checking against esptool's actual reset sequence rather than assumption)
This was an intentionally iterative process: wire a section → verify in ERC → get it reviewed → fix → repeat. Every connection in this board was manually drawn, checked, and understood — the AI's role was review and explanation, not auto-generation.
🐛 Real Issues Faced During This Build
Documenting these because they were the most time-consuming (and most educational) parts of the project:
-
KiCad global symbol library table accidentally broken — while trying to fix a missing footprint library path, the entire global symbol library table collapsed down to a single broken entry, causing 72 cascading ERC warnings across unrelated components (
power,Diode,Switch,Connectorlibraries all failed to load). Fixed using KiCad's "Reset Libraries" button in the Symbol Libraries manager. -
Custom part (FS8205A) had no native KiCad footprint — imported via
easyeda2kicadfrom its LCSC part number, which required linking both a symbol library and a separate footprint library (.prettyfolder) through two different dialogs in two different KiCad editors (Schematic Editor vs. PCB Editor) — not obvious at first. -
Duplicate global labels merging unrelated nets — reused generic labels like
INPUTandOUTPUTin multiple places on the schematic, which KiCad silently merged into a single net across the whole sheet, causing misleading ERC warnings until traced back and renamed to unique, meaningful net names (VBUS_FUSED,3V3,-BATT, etc). -
USB-C footprint/symbol pin-count mismatch — J1 was assigned a 6-pin "power only" USB-C footprint while the schematic symbol used the full 16-pin USB 2.0 pinout (including D+/D−), causing 10 pad-not-found errors during PCB sync. Fixed by selecting the correct 16-pin footprint (
USB_C_Receptacle_HRO_TYPE-C-31-M-12) matching the real connector's datasheet. -
Invalid reference designators blocking PCB sync — two LED symbols were accidentally named
Green(Done)1andRED(charging)1instead of standard alphanumeric designators, which KiCad's schematic/ERC tolerated but the PCB sync step rejected outright. Renamed to properD4/D5format. -
DRC hole-size violation on the ESP32 module footprint — the ESP32-WROOM-32E footprint's castellated pads required a 0.2mm minimum drill size, but the board's design rules were set to a 0.3mm minimum, causing 21 repeated violations. Resolved by adjusting the board's minimum drill size constraint to match both the footprint and the target fab's actual capability.
-
Incomplete thermal relief connections on copper pour zones for small shield/ground pads — fixed by reducing the thermal relief gap and spoke width settings to better fit smaller pad geometries.
Each of these was worked through methodically: understand the error → identify root cause → fix → re-verify, rather than blindly applying fixes.
📁 Repository Contents
project_CV.kicad_pro → KiCad project file
project_CV.kicad_sch → Schematic source
project_CV.kicad_pcb → PCB layout source
schematic.pdf → Exported schematic (all 4 blocks)
PRoject_cv.pdf → Full project document
*.png → PCB layout / 3D render screenshots
README.md → This file🔧 Tools Used
- KiCad 10.0.5 — schematic capture, PCB layout, DRC/ERC
- easyeda2kicad — custom part import (FS8205A battery protection MOSFET)
- Claude (Anthropic) — design review and debugging assistant
Built as a learning project to understand the full PCB design lifecycle — schematic capture, component selection, DFM, fabrication file generation, and bring-up — end to end.
Parts
62| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 10k | Resistor_SMD:R_0603_1608Metric | R11, R12, R13, R14, R18 |
| 5 | 1k | Resistor_SMD:R_0603_1608Metric | R4, R5, R7, R8, R17 |
| 4 | 0.1uF | Capacitor_SMD:C_0603_1608Metric | C3, C6, C8, C9 |
| 4 | 10uF | Capacitor_SMD:C_0805_2012Metric | C1, C2, C4, C5 |
| 4 | LED | LED_SMD:LED_0805_2012Metric | D2, D3, D4, D5 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_2.2mm_M2_Pad | H1, H2, H3, H4 |
| 4 | TestPoint | TestPoint:TestPoint_Pad_D2.0mm | TP1, TP2, TP3, TP4 |
| 3 | SW_Omron_B3FS | Button_Switch_SMD:SW_SPST_TL3342 | SW2, SW3, SW4 |
| 2 | 100k | Resistor_SMD:R_0603_1608Metric | R9, R10 |
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric | R15, R16 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | Conn_01x04_Pin | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J3, J4 |
| 2 | Conn_01x15 | Connector_PinHeader_2.54mm:PinHeader_1x15_P2.54mm_Vertical | J5, J6 |
| 2 | MMBT3904 | Package_TO_SOT_SMD:SOT-23 | Q2, Q3 |
| 1 | 100 | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | 1uF | Capacitor_SMD:C_0603_1608Metric | C7 |
| 1 | 2k | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U1 |
| 1 | BME280 | Package_LGA:Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumbering | U7 |
| 1 | CH340C | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U6 |
| 1 | Conn_01x02 | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J2 |
| 1 | DW01A | Package_TO_SOT_SMD:SOT-23-6 | U4 |
| 1 | ESP32-WROOM-32E | RF_Module:ESP32-WROOM-32E | U5 |
| 1 | FS8205A_C908265 | FS8205A_lib:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BR | Q1 |
| 1 | Polyfuse | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | SS14 | Diode_SMD:D_SMA | D1 |
| 1 | SW_Wuerth_450301014042 | Button_Switch_SMD:SW_SPDT_CK_JS102011SAQN | SW1 |
| 1 | TP4056-42-ESOP8 | Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.3mm_ThermalVias | U3 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | Ue |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
The 61 most common of 62 parts.
Questions
How big is the Project CV PCB?
It measures 76.8 × 100 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Project CV use?
62 parts, built around the CH340C, ESP32-WROOM-32E, BME280 and AP2112K-3.3. 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 Project CV KiCad files?
From the KazimGL/ESP32-PowerIoT-DevBoard repository on GitHub, at the commit this page was made from: the board is project_CV.kicad_pcb and its schematic project_CV.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Project CV design in my own project?
Its repository states no licence, so its author keeps all rights: ask KazimGL before reusing the design.
Similar boards
- 2 layers61.3 × 63.3 mm

- 2 layers75 × 49 mm

Esp32 node .kicad sch
Salma-lotfy-Wazery/esp32-battery-powered-iot-node
Custom 2-layer PCB designed in KiCad featuring ESP32, integrated LiPo charging (TP4056), USB-C power delivery, and sensor telemetry.
50 parts - 2 layers45 × 100 mm

Walkiepcb
houseofthe051010/ESP32-Walkie-Talkie-V2
This ESP32 Walkie Talkie is redesigned with a SX1262 radio, a PCB, and a full case redesign.
93 parts1 - 4 layers62 × 46.9 mm

4LayerLabProject
ZharbolatDinmukhamed/Haptic-Glove-PCB
A wrist-mounted PCB for a haptic feedback glove, developed as part of my Research Assistantship at the Tactile Laboratory, Nazarbayev University.
122 parts - 2 layers62 × 6 mm

TableLight
jonny190/TableLight
A 3D-printable, battery-powered, USB-C rechargeable table lamp in the classic "Poldina" shape - honeycomb disc base, thin stem, down-firing cone shade with a white top - running WLED on an ESP32, with a capacitive touch…
72 partsMIT - 4 layers70.9 × 75 mm

Flagshep Audio Player V1
HYLDAIC/Flagshep-V1_Audio-Player
A high fidelity semi-portable audio player student project with provided PCB files, 3D files and Code
77 parts1CERN-OHL-P-2.0 - 2 layers99.7 × 35 mm

Pocket lightning detector
Matyas604/Pocket-lightning-detector
A lightning detector that runs on a battery and fits in your pocket. It records the distance, energy and current time of a lightning strike, and you can then view this data via Bluetooth in mobile app.
74 parts1GPL-3.0 - 4 layers125 × 100 mm
