
Isolated SMPS Based Power Module
uttkarsh-chimane/Isolated-AC-DC-SMPS-Based-Power-Module
An isolated 230VAC to 5VDC power supply using the HLK-PM01 AC-DC module with input protection, EMI filtering, and custom PCB design in KiCad 10.

PCB design for five zone sprinkler system. For ESPHome with an Esp32 module.
Sprinkler System is an open-source printed circuit board by Swamp-Ig, from the Swamp-Ig/Sprinkler-System repository on GitHub. It is a 2-layer board of 165 × 85 mm with 80 parts on 78 nets, routed with 511 tracks and 36 vias.
It is built around the ESP32-WROOM-32U, HLK-PM01 and AMS1117-3.3, with the EL817, ULN2803A and 10D471K among its other parts. Its parts include 20 resistors, 13 capacitors, 12 connectors, 9 switches and 5 ICs. It belongs with the home automation and IoT boards and the ESP32 boards of this library.
A custom PCB for controlling up to six 24 VAC irrigation solenoid valves via WiFi, using an ESP32 and ESPHome with native Home Assistant integration.
This board carries mains voltage (Line and Neutral) on the PCB.
The HLK-PM01 module is connected directly to mains. The 24 VAC solenoid rail is transformer-isolated but still carries AC voltage.
See Assembly Notes for enclosure requirements and conformal coating instructions.
The controller has three linked paths: logic power, 24 VAC valve power, and relay control.
Logic power: Mains → F1 → HLK-PM01 → 5 V → AMS1117-3.3 → 3.3 V → ESP32 + logic
24 VAC path: Mains → F1 → G3MB-202P SSR (K1, GPIO16) → J2 → external transformer → J3 → F2 → zone relays (K20–K25) → solenoids
Control: ESP32 GPIO17–23 → ULN2803A → relay coils K20–K25 → zone outputs J20–J25
When a zone is activated, the ESP32 first enables the 24 VAC rail (K1), then drives the selected relay through the ULN2803A. The ULN2803A acts as a low-side driver, keeping ESP32 GPIO current low while switching the 24 VAC solenoid load through the relay contacts.
| Ref | Component | Value / Part No. | Notes |
|---|---|---|---|
| U4 | ESP32 module | ESP32-WROOM-32U | External antenna (U.FL) |
| U3 | AC-DC module | HLK-PM01 | 100–240 VAC in, 5 V / 600 mA out |
| U1 | LDO regulator | AMS1117-3.3 | SOT-223 |
| U2 | Optocoupler | EL817 | Isolates the 24 VAC rail sense |
| U5 | Darlington array | ULN2803A | SOIC-18 |
| K1 | Solid-state relay | Omron G3MB-202P | Gates the 24 VAC solenoid rail (GPIO16) |
| K20–K25 | Relay ×6 | Omron G5LE-1 | SPDT, 5 V coil, 10 A / 250 VAC contacts |
| RV20–RV25 | Varistor ×6 | 68 V | Surge protection, one per zone output |
| RV1 | Varistor | 10D471K (275 VAC) | Across mains L–N input, after F1 |
| RV2 | Varistor | 10D471K (275 VAC) | Across K1 SSR output / transformer primary |
| F1 | Fuse | T1A (time-delay) | Mains supply — slow-blow for transformer/HLK inrush |
| F2 | Fuse | T2A (time-delay) | 24 VAC supply — slow-blow for solenoid inrush |
| D1 | Diode | 1N4148 (0805) | 24 VAC rail sense |
| C5 | Capacitor | 220 µF / ≥10 V | 5 V rail bulk reservoir (THT radial) |
| C1, C7 | SMD capacitors | 10 µF | Supply filtering |
| C2, C3 | SMD capacitors | 22 µF | Supply filtering / sense |
| C4, C6, C20–C25 | SMD capacitors | 100 nF | ESP32 VDD (C4), EN reset (C6), zone snubbers (C20–C25) |
| R1, R3, R5, R6, R8, R10, R11 | SMD resistors | 10 kΩ | Sense, pull-ups, pull-downs |
| R2, R9, R12–R14 | SMD resistors | 4.7 kΩ | Sense, LED series, I²C pull-ups |
| R4, R7 | SMD resistors | 470 Ω | EN/BOOT switch series |
| R20–R25 | SMD resistors | 100 Ω | Zone snubber series |
| LED1, LED2 | LED ×2 | 0805 | IO2 status / power |
| SW1, SW2 | Tactile switch ×2 | — | EN (reset) / BOOT |
| J1 | Screw terminal | Phoenix PT 1,5/3-5.0 (3-pin, 5.0 mm) | Mains input — must be mains-rated |
| J2 | Screw terminal | 2-pin, 5.0 mm | 240 VAC output to transformer primary |
| J3, J20–J25 | Pluggable terminal ×7 | KF2EDG-style, 2-pin | 24 VAC — J3 transformer in, J20–J25 zone outputs |
| XFMR | Transformer (external) | 240 VAC → 24 VAC, ≥50 VA, safety-rated | Size for zones × ~8 VA each |
See manufacturing/bom/bom.csv for the full BOM with quantities and footprints.
Sprinkler System.kicad_pro ← KiCad project file
Sprinkler System.kicad_sch ← Schematic
Sprinkler System.kicad_pcb ← PCB layout
Sprinkler System.pretty/ ← Custom footprints and 3D models
symbols/ ← Custom symbol library (G3MB-202P)
manufacturing/
gerbers/ ← Gerber files for PCB fabrication
drill/ ← Excellon drill files
pos/ ← Pick-and-place centroid files
bom/bom.csv ← Bill of materials
docs/
schematic.pdf ← Schematic PDF
pcb.pdf ← PCB layer PDF
board.step ← 3D STEP model
wiring.md ← Connector and GPIO reference
esphome.md ← ESPHome firmware configuration
assembly.md ← Build and commissioning guide
.githooks/pre-commit ← Auto-exports fabrication outputs on commit
setup / setup.ps1 ← One-time dev environment setup
release / release.ps1 ← Tag a release version.\setup.ps1Configures the git hook path and verifies kicad-cli is available. Use ./setup in Git Bash / WSL.
Gerbers, drill files, PDFs, BOM, netlist, and STEP are regenerated automatically by the pre-commit hook whenever Sprinkler System.kicad_pcb or Sprinkler System.kicad_sch are staged. No manual export step is needed.
Run DRC and ERC from within KiCad before committing — fix all errors before submitting to a board house.
.\release.ps1 v1.1.0Stamps the schematic and PCB title blocks with the version and date, commits (triggering a fresh fabrication export), and creates the git tag. Use ./release v1.1.0 in Git Bash / WSL. Then push:
git push && git push origin v1.1.0| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C4, C6, C20, C21, C22, C23, C24, C25 |
| 7 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R3, R5, R6, R8, R10, R11 |
| 6 | 100 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R20, R21, R22, R23, R24, R25 |
| 6 | 68V | Varistor:RV_Disc_D15.5mm_W5.4mm_P7.5mm | RV20, RV21, RV22, RV23, RV24, RV25 |
| 6 | G5LE-1-DC5 | Relay_THT:Relay_SPDT_Omron-G5LE-1 | K20, K21, K22, K23, K24, K25 |
| 5 | 4k7 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2, R9, R12, R13, R14 |
| 4 | MountingHole_3.2mm_M3_ISO7380 | MountingHole:MountingHole_3.2mm_M3_ISO7380 | H1, H2, H3, H4 |
| 2 | 10D471K | Varistor:RV_Disc_D12mm_W4mm_P7.5mm | RV1, RV2 |
| 2 | 10u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C7 |
| 2 | 22u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C3 |
| 2 | 470 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R4, R7 |
| 1 | 1N4148 | Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D1 |
| 1 | 220u | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C5 |
| 1 | 3v3 | TestPoint:TestPoint_Pad_D1.5mm | TP3 |
| 1 | 5V | TestPoint:TestPoint_Pad_D1.5mm | TP2 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | BOOT | Button_Switch_SMD:SW_Push_SPST_NO_Alps_SKRK | SW2 |
| 1 | Conn_Button | Connector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_Vertical | J4 |
| 1 | EL817 | Package_SO:SOP-4_3.8x4.1mm_P2.54mm | U2 |
| 1 | EN | Button_Switch_SMD:SW_Push_SPST_NO_Alps_SKRK | SW1 |
| 1 | ESP32-WROOM-32U | RF_Module:ESP32-WROOM-32U | U4 |
| 1 | G3MB-202P | Sprinkler System:RELAY_G3MB-202P | K1 |
| 1 | Gnd | TestPoint:TestPoint_Pad_D1.5mm | TP1 |
| 1 | HLK-PM01 | Converter_ACDC:Converter_ACDC_Hi-Link_HLK-PMxx | U3 |
| 1 | I2C | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J6 |
| 1 | I2C_VCC | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabels | JP1 |
| 1 | IO2 | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | LED1 |
| 1 | Main_Supply | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-3-5.0-H_1x03_P5.00mm_Horizontal | J1 |
| 1 | PWR | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | LED2 |
| 1 | Station_0 | Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_Horizontal | J20 |
| 1 | Station_1 | Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_Horizontal | J21 |
| 1 | Station_2 | Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_Horizontal | J22 |
| 1 | Station_3 | Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_Horizontal | J23 |
| 1 | Station_4 | Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_Horizontal | J24 |
| 1 | Station_5 | Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_Horizontal | J25 |
| 1 | T1A | Sprinkler System:Fuseholder_5x20mm_15mm_Pins | F1 |
| 1 | T2A | Sprinkler System:Fuseholder_5x20mm_15mm_Pins | F2 |
| 1 | UART0 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J5 |
| 1 | ULN2803A | Package_SO:SOIC-18W_7.5x11.6mm_P1.27mm | U5 |
| 1 | XFMR_In | Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_Horizontal | J3 |
| 1 | XFMR_Out | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-5.0-H_1x02_P5.00mm_Horizontal | J2 |

uttkarsh-chimane/Isolated-AC-DC-SMPS-Based-Power-Module
An isolated 230VAC to 5VDC power supply using the HLK-PM01 AC-DC module with input protection, EMI filtering, and custom PCB design in KiCad 10.


ikatkov/hot-plate
The heating is not uniform (enough?). The father points of the hotplate are 5C colder than the center, where the ceramic heating element is located.




R-Mutura/DISHWASHER
Contains hardware and Software implementation of a dishwasher product

It measures 165 × 85 mm and has 2 copper layers, 1.6 mm thick.
80 parts, built around the ESP32-WROOM-32U, HLK-PM01, AMS1117-3.3 and EL817. 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.
From the Swamp-Ig/Sprinkler-System repository on GitHub, at the commit this page was made from: the board is Sprinkler System.kicad_pcb and its schematic Sprinkler System.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask Swamp-Ig before reusing the design.