Skip to the content
PCBKitNew board
2 layers76.8 × 100 mmProject CV, the printed circuit board in 3D

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

10

README

README.md

ESP32 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:

BlockFunction
PowerUSB-C input, ESD protection, TP4056 Li-ion charging, DW01A + FS8205A battery protection, AP2112K-3.3 regulation, battery voltage sensing
ProcessorESP32-WROOM-32E module with reset/boot circuitry
CommunicationCH340C USB-UART bridge with auto-program (DTR/RTS reset) circuit, I2C breakout
I/ODual 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 PCB Routing

3D Render PCB 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:

  1. 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, Connector libraries all failed to load). Fixed using KiCad's "Reset Libraries" button in the Symbol Libraries manager.

  2. Custom part (FS8205A) had no native KiCad footprint — imported via easyeda2kicad from its LCSC part number, which required linking both a symbol library and a separate footprint library (.pretty folder) through two different dialogs in two different KiCad editors (Schematic Editor vs. PCB Editor) — not obvious at first.

  3. Duplicate global labels merging unrelated nets — reused generic labels like INPUT and OUTPUT in 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).

  4. 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.

  5. Invalid reference designators blocking PCB sync — two LED symbols were accidentally named Green(Done)1 and RED(charging)1 instead of standard alphanumeric designators, which KiCad's schematic/ERC tolerated but the PCB sync step rejected outright. Renamed to proper D4/D5 format.

  6. 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.

  7. 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

text
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
QtyValueFootprintReferences
510kResistor_SMD:R_0603_1608MetricR11, R12, R13, R14, R18
51kResistor_SMD:R_0603_1608MetricR4, R5, R7, R8, R17
40.1uFCapacitor_SMD:C_0603_1608MetricC3, C6, C8, C9
410uFCapacitor_SMD:C_0805_2012MetricC1, C2, C4, C5
4LEDLED_SMD:LED_0805_2012MetricD2, D3, D4, D5
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_PadH1, H2, H3, H4
4TestPointTestPoint:TestPoint_Pad_D2.0mmTP1, TP2, TP3, TP4
3SW_Omron_B3FSButton_Switch_SMD:SW_SPST_TL3342SW2, SW3, SW4
2100kResistor_SMD:R_0603_1608MetricR9, R10
24.7kResistor_SMD:R_0603_1608MetricR15, R16
25.1kResistor_SMD:R_0603_1608MetricR1, R2
2Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ3, J4
2Conn_01x15Connector_PinHeader_2.54mm:PinHeader_1x15_P2.54mm_VerticalJ5, J6
2MMBT3904Package_TO_SOT_SMD:SOT-23Q2, Q3
1100Resistor_SMD:R_0603_1608MetricR6
11uFCapacitor_SMD:C_0603_1608MetricC7
12kResistor_SMD:R_0603_1608MetricR3
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U1
1BME280Package_LGA:Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumberingU7
1CH340CPackage_SO:SOIC-16_3.9x9.9mm_P1.27mmU6
1Conn_01x02Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ2
1DW01APackage_TO_SOT_SMD:SOT-23-6U4
1ESP32-WROOM-32ERF_Module:ESP32-WROOM-32EU5
1FS8205A_C908265FS8205A_lib:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BRQ1
1PolyfuseFuse:Fuse_1206_3216MetricF1
1SS14Diode_SMD:D_SMAD1
1SW_Wuerth_450301014042Button_Switch_SMD:SW_SPDT_CK_JS102011SAQNSW1
1TP4056-42-ESOP8Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.3mm_ThermalViasU3
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6Ue
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1

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 mmMonitoring Gunung, the printed circuit board in 3D

    Monitoring Gunung

    rafdi03/PCB_Desain

    Schematic PCB Project

    50 parts
  • 2 layers75 × 49 mmEsp32 node .kicad sch, the printed circuit board in 3D

    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 mmWalkiepcb, the printed circuit board in 3D

    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 mm4LayerLabProject, the printed circuit board in 3D

    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 mmTableLight, the printed circuit board in 3D

    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 mmFlagshep Audio Player V1, the printed circuit board in 3D

    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 mmPocket lightning detector, the printed circuit board in 3D

    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 mmRC controller, the printed circuit board in 3D

    RC controller

    tyke01/bonk

    An open source RC controller.

    72 parts