

PoolDosingController
KiCad 10 PCB design for the ESP32 board that this repository's firmware runs on. It regulates power for the ESP32 and a DS18S20 temperature sensor, and switches four 12V output channels for pumps/relays.
- Size
- 108.9 × 78 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 42
- Nets
- 53
- Pads
- 158
- Tracks, vias
- 175, 20
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 26 Aug 2026
- Updated
- 13 Sep 2026
Overview
PoolDosingController is an open-source printed circuit board by Dynacore-dev, from the Dynacore-dev/PoolGuard repository on GitHub. It is a 2-layer board of 108.9 × 78 mm with 42 parts on 53 nets, routed with 175 tracks and 20 vias.
It is built around the ESP32-DEVKITC-32E, DS18S20+ and L7805ABD2T-TR, with the MMBT3904, IRFZ44N and SS16 among its other parts. Its parts include 13 resistors, 12 transistors, 6 capacitors, 5 diodes and 3 ICs. It belongs with the ESP32 boards of this library.
Main components
6ESP32-DEVKITC-32E
-- ModulesEspressif SystemsModulesDS18S20+
TO-92-55℃~+125℃ 1uA 3V~5.5V 750ms 9bit Single bus Temperature threshold monitoring、On-chip non-volatile parameter storage ±0.5℃ TO-92 Temperature Sensors ROHSMaxim Integrated (Analog Devices)Temperature SensorsL7805ABD2T-TR
TO-263-2-40℃~+125℃@(Tj) 1 1.5A 2V@(1A) 35V 4.3mA 5V 68dB@(120Hz) Fixed Over Temperature Protection、Short Circuit Protection Positive TO-263-2 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSSTMicroelectronicsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsMMBT3904
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)IRFZ44N
TO-220110pF 130W 18mΩ@10V 39nC@10V 430pF 4V 50A 60V 880pF N-Channel TO-220 MOSFETs ROHSOSENMOSFETsSS16
SMA(DO-214AC)-55℃~+150℃ 100uA@60V 1A 60V 700mV@1A Independent SMA(DO-214AC) Schottky Diodes ROHSFUXINSEMISchottky Diodes
README
hardware/PoolDosingController/README.mdPoolDosingController (KiCad hardware)
KiCad 10 PCB design for the ESP32 board that this repository's firmware runs on. It regulates power for the ESP32 and a DS18S20 temperature sensor, and switches four 12V output channels for pumps/relays.
Overview
| MCU | ESP32-DevKitC (U3) |
| Board size | 108.9 x 78.0 mm, 2 layers |
| Power in | 12V via J2 (2-pin screw terminal) |
| Regulated rails | +12V (unregulated, direct), +5V (U1, LM7805S linear regulator), +3.3V (from the ESP32-DevKitC's own onboard regulator) |
| Temperature sensor | DS18S20 (U2, onboard) + external sensor header J1 (3-pin, +3.3V/DATA/GND) |
| Switched outputs | 4 channels via J3 (8-pin screw terminal), each a low-side IRFZ44N MOSFET driven through an MMBT3904 transistor stage, with an SS16 flyback diode across the load |
| DRC status | 0 errors (see Design status) |
Output channels
J3 provides 4 independent 12V low-side switched outputs (D2-D5 / Q1-Q12 / R2-R13, one MOSFET + driver transistor + flyback diode per channel):
- Peristaltic dosing pump 1 (0.3-1A)
- Peristaltic dosing pump 2 (0.3-1A)
- Finder relay, drives the main pool filter pump (relay coil current only, ~30-70mA)
- Reserve / spare channel
Each channel's copper (D2-A...D5-A nets) is on the Pumpenausgaenge→PumpOutputs netclass (1.5mm min. trace width, sized for the peristaltic pump's worst-case 1A draw with margin).
Connectors
| Ref | Type | Function |
|---|---|---|
J1 | 3-pin, 2.54mm (Xinya XY308) | External DS18S20 sensor: +3.3V / DATA / GND |
J2 | 2-pin, 5.0mm (Phoenix) | +12V power input |
J3 | 8-pin, 5.0mm (Phoenix) | 4x switched 12V output channels (2 pins each) |
Netclasses
| Name | Nets | Trace width | Via (dia/drill) |
|---|---|---|---|
PumpOutputs | Net-(D2-A) … Net-(D5-A) | 1.5mm | 1.0 / 0.5mm |
Supply_12V | +12V, GND | 1.0mm | 1.0 / 0.5mm |
Supply_Logic | +5V, +3.3V | 0.6mm | 0.6 / 0.3mm |
Default | everything else (control/signal lines) | 0.2mm | 0.6 / 0.3mm |
+12V and GND are additionally backed by copper pours (zones) on B.Cu/F.Cu, so the netclass trace width only governs short stub connections into the pour, not the bulk current path.
Bill of materials
Full BOM: PoolDosingController-BOM.csv. Summary:
| Ref | Qty | Value | MPN |
|---|---|---|---|
| C1 | 1 | 0.33uF | |
| C2, C3 | 2 | 0.1uF | |
| C4, C5, C6 | 3 | 10uF | |
| D1 | 1 | 1N4001 | |
| D2, D3, D4, D5 | 4 | SS16 | |
| J1 | 1 | 3-pin 2.54mm terminal block | |
| J2 | 1 | 2-pin 5.0mm terminal block | |
| J3 | 1 | 8-pin 5.0mm terminal block | |
| Q1-Q8 | 8 | MMBT3904 | |
| Q9-Q12 | 4 | IRFZ44N | |
| R1 | 1 | 2.2K | |
| R2, R3, R4, R5 | 4 | 220 | |
| R6-R13 | 8 | 10K | |
| U1 | 1 | LM7805S | L7805ABD2T-TR |
| U2 | 1 | DS18S20 | DS18S20+ |
| U3 | 1 | ESP32-DevKitC | ESP32-DEVKITC-32E |
C2's footprint (PCM_Capacitor_SMD_AKL:C_0805_2012Metric) has a documented, not-yet-installed alternate part on its LCSC_Alt_0402 field: JLCPCB C1525 (Samsung CL05B104KO5NNNC, 0402, 100nF 16V X7R, Basic). Its footprint (CAPC2012X140N) is included under library/footprints/ if you want to switch to it.
Design status
Last full design review: 0 DRC errors. Remaining warnings (non-blocking):
- 199x
connection_width— thermal spoke connections to the copper pours, expected/cosmetic. - 32x
text_height— a few silkscreen labels below the strict 0.8mm rule. - 4x
lib_footprint_mismatch— the embedded footprint copies forJ1/J2/J3/C1have drifted slightly from the current version of their (stock KiCad) libraries; purely a library-vs-board diff, not a design error. - 3x info:
+12V/+5V/+3.3Vhave no test point (informational only).
Opening this project
This folder is fully self-contained: library/ holds local copies of every non-stock symbol library, footprint library, and 3D model this design uses (sym-lib-table/fp-lib-table point at them via ${KIPRJMOD}), so git clone + open in KiCad 10 works without installing any third-party library packages first. The only gap is a missing 3D model for J1's exact connector (cosmetic 3D-preview only, a similarly-sized substitute is used); see the netclass/library setup notes in the project's commit history for details.
Parts
42| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 10K | PCM_Resistor_SMD_AKL:R_1206_3216Metric_Pad1.42x1.75mm_HandSolder | R6, R7, R8, R9, R10, R11, R12, R13 |
| 8 | MMBT3904 | PCM_Package_TO_SOT_SMD_AKL:SOT-23 | Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8 |
| 4 | 220 | PCM_Resistor_SMD_AKL:R_1206_3216Metric_Pad1.42x1.75mm_HandSolder | R2, R3, R4, R5 |
| 4 | IRFZ44N | PCM_Package_TO_SOT_THT_AKL:TO-220-3_Vertical_GDS | Q9, Q10, Q11, Q12 |
| 4 | SS16 | Diode_SMD:D_SMA | D2, D3, D4, D5 |
| 3 | 10uF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C4, C5, C6 |
| 2 | 0.1uF | PCM_Capacitor_SMD_AKL:C_0805_2012Metric | C2, C3 |
| 1 | 0.33uF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C1 |
| 1 | 1N4001 | PCM_Diode_THT_AKL:D_DO-41_SOD81_P7.62mm_Horizontal | D1 |
| 1 | 2.2K | PCM_Resistor_SMD_AKL:R_1206_3216Metric_Pad1.42x1.75mm_HandSolder | R1 |
| 1 | DS18S20 | Package_TO_SOT_THT:TO-92_Inline | U2 |
| 1 | ESP32-DevKitC | PCM_Espressif:ESP32-DevKitC | U3 |
| 1 | LM7805S | PCM_Package_TO_SOT_SMD_AKL:TO-263-3_TabPin2 | U1 |
| 1 | Screw_Terminal_01x03 | TerminalBlock:TerminalBlock_Xinya_XY308-2.54-3P_1x03_P2.54mm_Horizontal | J1 |
| 1 | Screw_Terminal_2_P5.00mm | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-5.0-H_1x02_P5.00mm_Horizontal | J2 |
| 1 | Screw_Terminal_4_P5.00mm | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-8-5.0-H_1x08_P5.00mm_Horizontal | J3 |
Questions
How big is the PoolDosingController PCB?
It measures 108.9 × 78 mm and has 2 copper layers, 1.6 mm thick.
What parts does the PoolDosingController use?
42 parts, built around the ESP32-DEVKITC-32E, DS18S20+, L7805ABD2T-TR and MMBT3904. 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 PoolDosingController KiCad files?
From the Dynacore-dev/PoolGuard repository on GitHub, at the commit this page was made from: the board is hardware/PoolDosingController/PoolDosingController.kicad_pcb and its schematic hardware/PoolDosingController/PoolDosingController.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the PoolDosingController design in my own project?
Its repository states no licence, so its author keeps all rights: ask Dynacore-dev before reusing the design.
Similar boards
- 2 layers95 × 48 mm

- 2 layers99.1 × 99.1 mm

Raw
PCBench/PCBench
resolution = [0.5, 0.5] pcbfolder = '../PCBs/' pcbnames = ["1Bitsy1bitsy"] iters = 30 env = PCBRoutingEnv(resolution=resolution, pcbfolder=pcbfolder, pcbnames=pcbnames) obs, info = env.reset() for in range(iters): act =…
77 parts21MIT - 2 layers100.6 × 99.1 mm

- 4 layers160 × 100 mm

- 2 layers120 × 90 mm

PLC STM32 Modbus
danhmanu/PLC-STM32F407VET6
Mạch nguyên lý KiCad 10 cho bộ PLC: điều khiển qua LAN bằng Modbus TCP (module W5500 Lite), nạp code qua USB‑C (CH340C), 16 ngõ ra transistor cách ly quang, 10 ngõ vào analog 4–20mA.
264 parts - 2 layers79.8 × 79.8 mm

Before
PNT2110/FC_ESP32
An ESP32-WROOM-32 based flight controller designed for 1S brushed quadcopters.
76 parts - 2 layers98 × 79.5 mm

Flex over can
twisted-builds-llc/sloppy_holley_flex-over-can
CAN bus input/output module for Holley Terminator X (also HP/Dominator class ECUs).
86 parts1 - 2 layers83.5 × 65.5 mm

Proyecto board
Alexanderabad/Alexander_Abad-Microcontroladores-C1-2025
Tareas de Micro C1-2025
30 parts