
Power dual buck
HeyPCB/power-kit
Six open power and charging boards: KiCad 10, JLCPCB-ready, CERN-OHL-S-2.0

Open hardware and ESP32-S3 firmware for a local 24 V window actuator controller with MQTT and Home Assistant integration.
Windowmaster controller v2 is an open-source printed circuit board by Simplycissmus, from the Simplycissmus/windowmaster-s3-controller repository on GitHub. It is a 2-layer board of 88 × 130 mm with 68 parts on 41 nets, routed with 425 tracks and 323 vias.
It is built around the ESP32-S3-WROOM-1-N8, CC0805KRX7R9BB104 and CL31A226KAHNNNE, with the 0805W8F1003T5E (SMT业务专用), CL21A106KAYNNNE and CL31A106KBHNNNE among its other parts. It belongs with the home automation and IoT boards and the ESP32 boards of this library.
Current board: 88 × 130 mm, 2 layers, 68 components, 41 nets, with soldered ESP32-S3-WROOM-1-N8. The first public hardware release is v1.0, targeting firmware 1.0.0. v2 is its original internal design identifier, retained in the board markings, directory names and fabrication records. The board has been manufactured and assembled. Bring-up and actual window traces are recorded in the firmware documents. No copper/part changes accompany 1.0.0.
windowmaster-controller-v2.kicad_pro, .kicad_sch, .kicad_pcb: editable project.ground_truth.json: components, connections, GPIO map and design decisions.pin_audit.json: pin assignments and their sources.fab/windowmaster-controller-v2-gerber.zip: Gerbers and drill data.fab/jlcpcb-bom.csv, fab/jlcpcb-cpl.csv: assembly BOM and placement.fab/handbestueckung.csv: manually fitted parts.fab/MANIFEST.json, fab/DRC.json, fab/routing.log: original export evidence.The original export uses KiCad 10.0.1, reports zero DRC errors/open connections
and six documented footprint-library warnings. The board SHA-256 must match
fab/MANIFEST.json. A host check of that report is not a new KiCad DRC run.
Inspect placement/polarity in the manufacturer's viewer. The original German
fab/README.txt is retained as export evidence; the essential checks are:
Recheck part stock before any new order (python3 check_jlc_stock.py 5). Select
ENIG in the order form; it is not encoded in the Gerbers. No purchase is automated.
The data describes top-side assembly plus manual through-hole parts.
SPEC.md contains the English design rationale. Current operating limits, including the TVS/overvoltage limitation, are in ../../docs/operating-limits.md. The final enclosure is not supplied; the Mini560 enclosure is historical.
The five-board order included 54 SMT components per board. JLCPCB did not fit the relays, terminal blocks or pinheaders. Complete population adds these eight through-hole parts separately:
| References | Parts |
|---|---|
K_OPEN, K_CLOSE | Two SRD-05VDC-SL-C 5 V SPDT relays |
J_24V, J_MOTOR | Two 2-pin Phoenix MKDS-1,5-style terminal blocks, 5.08 mm pitch |
J_SWITCH | One 3-pin terminal block of the same family and pitch |
J_IO, J_PROG, J_PWR | Vertical 2.54 mm pinheaders, 8 / 6 / 4 pins respectively |
Leave D_MOT_TVS unpopulated; the five test points are bare pads. Match the exact
footprints and connector orientation before buying parts. Original part records
remain in fab/handbestueckung.csv; the table above is the English assembly guide.
In the owner's installation the wall-switch terminal and expansion/programming
headers are optional. Actual order costs and assembly scope
are recorded separately from the BOM used to manufacture a new batch.
J_SWITCH accepts two normally open, volt-free momentary contacts: pin 1 is GND,
pin 2 OPEN and pin 3 CLOSE. Each contact connects its input to GND when pressed.
The inputs share the controller's ground and are not galvanically isolated.
Do not apply an external voltage or mains to them. Route switch wiring separately
from motor wiring.
The owner does not use this input, and a physical wall switch has not been tested. Firmware support and host tests do not validate a switch, cable or installation. If you fit one, complete the optional wall-switch checks in commissioning.
The manufactured back silkscreen says “long press = run to end stop / short press = stop”. That describes an earlier plan. Firmware 1.0.0 uses hold-to-run wall buttons; release requests a stop, subject to the 500 ms minimum run time. Follow the firmware guide for operation. The original manufacturing files and photographs retain the actual printed text.
Open the existing project directly in KiCad 10.0.1 with its matching standard libraries. Normal inspection/manufacture does not require a generator or any private MCP service. The schematic and PCB include their symbols/footprints.
Generators use Python 3.11+, kicad-sch-api for schematic authoring and KiCad's
pcbnew Python bindings for routing/import. The original kicad-sch-api version was
not recorded, so generator replay is not claimed to be dependency-reproducible.
Use a separate working copy for generator changes; retain the reviewed routed board.
KICAD10_SYMBOL_DIR and KICAD10_FOOTPRINT_DIR override standard library discovery;
WMC_FOOTPRINT_DIR can add a custom footprint directory.
The historical routing workflow is: schematic → unrouted PCB → DSN export →
Freerouting 2.2.4 → SES import → one postroute.py pass → tests → ERC/DRC → fabrication.
create_pcb.py refuses to overwrite an already routed board. Do not bypass it.
postroute.py is not idempotent; never run it twice on a finished board.
For a schematic change, pin/net parity, antenna keepout, board envelope and
copper checks all need fresh evidence. Review rendering as well as numeric checks.
After review, commit design sources before running python3 export_fab.py, then
commit the exported package separately. The exporter requires a clean source tree
and rejects unapproved DRC findings or mismatched BOM/CPL. It replaces fab/;
use a disposable checkout when inspecting failures. Do not use ALLOW_DIRTY for a release.
The 1.0.0 source snapshot preserves the original fabrication source-commit identifier
in SOURCE_MANIFEST.json; the original private Git history is deliberately absent.
File hashes make snapshot contents reviewable, but are not a cryptographic signature.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 100nF | Capacitor_SMD:C_0805_2012Metric | C_3V3_HF, C_BST, C_EN, C_MCU_HF, C_SWC, C_SWO, C_WDT |
| 6 | 4.7k | Resistor_SMD:R_0805_2012Metric | R_ADC, R_EN_PU, R_SCL_PU, R_SDA_PU, R_SWC_PU, R_SWO_PU |
| 4 | 100R | Resistor_SMD:R_0805_2012Metric | R_CLOSE_G, R_OPEN_G, R_SWC_S, R_SWO_S |
| 3 | 22uF/25V | Capacitor_SMD:C_1206_3216Metric | C_5V_A, C_5V_B, C_LDO_OUT |
| 2 | 100k | Resistor_SMD:R_0805_2012Metric | R_CLOSE_PD, R_OPEN_PD |
| 2 | 10uF/25V | Capacitor_SMD:C_0805_2012Metric | C_LDO_IN, C_MCU |
| 2 | 10uF/50V X5R | Capacitor_SMD:C_1206_3216Metric | C_24V, C_FLT |
| 2 | 220R | Resistor_SMD:R_0603_1608Metric | R_LED_PWR, R_LED_STAT |
| 1 | 100nF Gate-Beruhigung | Capacitor_SMD:C_0805_2012Metric | C_QREV |
| 1 | 10k | Resistor_SMD:R_0805_2012Metric | R_QREV |
| 1 | 120R@100MHz 2A | Inductor_SMD:L_0603_1608Metric | L_FLT |
| 1 | 15V Zener Gate-Klemme | Diode_SMD:D_SOD-123 | D_QREV |
| 1 | 1uF | Capacitor_SMD:C_0805_2012Metric | C_ADC |
| 1 | 24V DC Eingang | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal | J_24V |
| 1 | 3A | Fuse:Fuse_1206_3216Metric | F_24V |
| 1 | 4.7uH | Inductor_SMD:L_Sunlord_SWPA6045S | L_BUCK |
| 1 | 50mOhm 3W | Resistor_SMD:R_2512_6332Metric | R_SHUNT |
| 1 | 68uF/35V Hybrid | Capacitor_SMD:CP_Elec_6.3x7.7 | C_24V_BULK |
| 1 | BOOT | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW_BOOT |
| 1 | Buck 24V->5V fest, 2A | Package_TO_SOT_SMD:TSOT-23-6 | U_BUCK |
| 1 | ESD 3.3V C | Diode_SMD:D_SOD-923 | D_SWC_ESD |
| 1 | ESD 3.3V O | Diode_SMD:D_SOD-923 | D_SWO_ESD |
| 1 | ESP32-S3-WROOM-1-N8 | RF_Module:ESP32-S3-WROOM-1 | U_MCU |
| 1 | Freilauf AUF | Diode_SMD:D_SOD-123 | D_OPEN_FW |
| 1 | Freilauf ZU | Diode_SMD:D_SOD-123 | D_CLOSE_FW |
| 1 | IO expansion | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J_IO |
| 1 | LDO 5V->3.3V | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U_LDO |
| 1 | Motor (2x WMX 804) | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal | J_MOTOR |
| 1 | N-MOS Spule AUF | Package_TO_SOT_SMD:SOT-23 | Q_OPEN |
| 1 | N-MOS Spule ZU | Package_TO_SOT_SMD:SOT-23 | Q_CLOSE |
| 1 | P-FET Verpolschutz 60V 40mOhm | Package_TO_SOT_SMD:TO-252-2 | Q_REV |
| 1 | Power out 24/5/3V3 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J_PWR |
| 1 | Programmierheader | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J_PROG |
| 1 | Qwiic I2C | Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J_QWIIC |
| 1 | RESET | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW_RST |
| 1 | Relais SPDT 5V, AUF | Relay_THT:Relay_SPDT_SANYOU_SRD_Series_Form_C | K_OPEN |
| 1 | Relais SPDT 5V, ZU | Relay_THT:Relay_SPDT_SANYOU_SRD_Series_Form_C | K_CLOSE |
| 1 | Supervisor + Watchdog | Package_TO_SOT_SMD:SOT-23-5 | U_WDT |
| 1 | TP 24V | TestPoint:TestPoint_Pad_D1.5mm | TP_24V |
| 1 | TP 3V3 | TestPoint:TestPoint_Pad_D1.5mm | TP_3V3 |
| 1 | TP 5V | TestPoint:TestPoint_Pad_D1.5mm | TP_5V |
| 1 | TP GND | TestPoint:TestPoint_Pad_D1.5mm | TP_GND |
| 1 | TP ISENSE | TestPoint:TestPoint_Pad_D1.5mm | TP_ISENSE |
| 1 | TVS 30V Transientenschutz | Diode_SMD:D_SMB | D_OV_CB |
| 1 | TVS bidirektional (DNP) | Diode_SMD:D_SMB | D_MOT_TVS |
| 1 | Wandtaster | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3-5.08_1x03_P5.08mm_Horizontal | J_SWITCH |
| 1 | gruen 3V3 | LED_SMD:LED_0805_2012Metric | LED_PWR |
| 1 | rot IO17 | LED_SMD:LED_0805_2012Metric | LED_STAT |
It measures 88 × 130 mm and has 2 copper layers, 1.6 mm thick.
68 parts, built around the ESP32-S3-WROOM-1-N8, CC0805KRX7R9BB104, CL31A226KAHNNNE and 0805W8F1003T5E (SMT业务专用). 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 Simplycissmus/windowmaster-s3-controller repository on GitHub, at the commit this page was made from: the board is hardware/controller-v2/windowmaster-controller-v2.kicad_pcb and its schematic hardware/controller-v2/windowmaster-controller-v2.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 Simplycissmus before reusing the design.

HeyPCB/power-kit
Six open power and charging boards: KiCad 10, JLCPCB-ready, CERN-OHL-S-2.0

Gamecard/k2-plus-cm5
K2 Plus CM5 – Creality K2 Plus mit Upstream-Klipper auf einem Raspberry Pi CM5

HeyPCB/whisker
Drop-in controller for Petoi's Nybble robot cat running the stock OpenCat firmware: ATmega328P, PCA9685, MPU-6050, USB-C, 3 A buck, protected battery input. 4-layer KiCad 10 board plus printed cradle.

MicroType-Engineering/MTE_USB_HUB
As designed on the MicroType Engineering's YouTube series: https://youtu.be/uzqXgHHZUUs

harrislab-brown/CyberDiver
Untethered cyber-physical robotic platform for water entry experiments


mjm-12/transistor-hfe-measurement-circuit
Transistor hFE measurement circuit (KiCad, CERN-OHL-P-2.0)

ryanbjohnson/PentairMasterTempESP32
This folder is the KiCad project area for the MasterTemp 125 ESP32 interface board.