Skip to the content
PCBKitNew board
2 layers88 × 130 mmWindowmaster controller v2, the printed circuit board in 3D

Open hardware and ESP32-S3 firmware for a local 24 V window actuator controller with MQTT and Home Assistant integration.

Size
88 × 130 mm
Copper layers
2
Thickness
1.6 mm
Parts
68
Nets
41
Pads
234
Tracks, vias
425, 323
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
6 Sep 2026
Updated
6 Sep 2026

Overview

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.

Main components

12

README

hardware/controller-v2/README.md

Hardware v1.0

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.

Files and manufacturing

  • 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.
  • render/: high-resolution populated-board views, including both relays, three terminal blocks and all three pinheaders; native KiCad recipe and a model/image provenance manifest. CAD illustrations, not acceptance photos.
  • Manufactured-board photos: original WCC mainboard, v1.0 front/back before manual assembly, and the powered relay bring-up state.

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:

  • The stored rotation-correction map is empty. Do not add a catalog-derived rotation without checking the actual placement preview.
  • Check Q_REV (AOD409): the DPAK tab is drain and must face west in the board view. Check AO3400A orientation and the horizontal Qwiic connector opening as well.
  • Check the bulk capacitor, LEDs and diodes for correct polarity.

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.

Manual assembly and optional wall switch

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:

ReferencesParts
K_OPEN, K_CLOSETwo SRD-05VDC-SL-C 5 V SPDT relays
J_24V, J_MOTORTwo 2-pin Phoenix MKDS-1,5-style terminal blocks, 5.08 mm pitch
J_SWITCHOne 3-pin terminal block of the same family and pitch
J_IO, J_PROG, J_PWRVertical 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.

Printed button instructions

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.

Editing and generating

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.

Parts

68
QtyValueFootprintReferences
7100nFCapacitor_SMD:C_0805_2012MetricC_3V3_HF, C_BST, C_EN, C_MCU_HF, C_SWC, C_SWO, C_WDT
64.7kResistor_SMD:R_0805_2012MetricR_ADC, R_EN_PU, R_SCL_PU, R_SDA_PU, R_SWC_PU, R_SWO_PU
4100RResistor_SMD:R_0805_2012MetricR_CLOSE_G, R_OPEN_G, R_SWC_S, R_SWO_S
322uF/25VCapacitor_SMD:C_1206_3216MetricC_5V_A, C_5V_B, C_LDO_OUT
2100kResistor_SMD:R_0805_2012MetricR_CLOSE_PD, R_OPEN_PD
210uF/25VCapacitor_SMD:C_0805_2012MetricC_LDO_IN, C_MCU
210uF/50V X5RCapacitor_SMD:C_1206_3216MetricC_24V, C_FLT
2220RResistor_SMD:R_0603_1608MetricR_LED_PWR, R_LED_STAT
1100nF Gate-BeruhigungCapacitor_SMD:C_0805_2012MetricC_QREV
110kResistor_SMD:R_0805_2012MetricR_QREV
1120R@100MHz 2AInductor_SMD:L_0603_1608MetricL_FLT
115V Zener Gate-KlemmeDiode_SMD:D_SOD-123D_QREV
11uFCapacitor_SMD:C_0805_2012MetricC_ADC
124V DC EingangTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ_24V
13AFuse:Fuse_1206_3216MetricF_24V
14.7uHInductor_SMD:L_Sunlord_SWPA6045SL_BUCK
150mOhm 3WResistor_SMD:R_2512_6332MetricR_SHUNT
168uF/35V HybridCapacitor_SMD:CP_Elec_6.3x7.7C_24V_BULK
1BOOTButton_Switch_SMD:SW_Push_1P1T_XKB_TS-1187ASW_BOOT
1Buck 24V->5V fest, 2APackage_TO_SOT_SMD:TSOT-23-6U_BUCK
1ESD 3.3V CDiode_SMD:D_SOD-923D_SWC_ESD
1ESD 3.3V ODiode_SMD:D_SOD-923D_SWO_ESD
1ESP32-S3-WROOM-1-N8RF_Module:ESP32-S3-WROOM-1U_MCU
1Freilauf AUFDiode_SMD:D_SOD-123D_OPEN_FW
1Freilauf ZUDiode_SMD:D_SOD-123D_CLOSE_FW
1IO expansionConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ_IO
1LDO 5V->3.3VPackage_TO_SOT_SMD:SOT-223-3_TabPin2U_LDO
1Motor (2x WMX 804)TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ_MOTOR
1N-MOS Spule AUFPackage_TO_SOT_SMD:SOT-23Q_OPEN
1N-MOS Spule ZUPackage_TO_SOT_SMD:SOT-23Q_CLOSE
1P-FET Verpolschutz 60V 40mOhmPackage_TO_SOT_SMD:TO-252-2Q_REV
1Power out 24/5/3V3Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ_PWR
1ProgrammierheaderConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ_PROG
1Qwiic I2CConnector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ_QWIIC
1RESETButton_Switch_SMD:SW_Push_1P1T_XKB_TS-1187ASW_RST
1Relais SPDT 5V, AUFRelay_THT:Relay_SPDT_SANYOU_SRD_Series_Form_CK_OPEN
1Relais SPDT 5V, ZURelay_THT:Relay_SPDT_SANYOU_SRD_Series_Form_CK_CLOSE
1Supervisor + WatchdogPackage_TO_SOT_SMD:SOT-23-5U_WDT
1TP 24VTestPoint:TestPoint_Pad_D1.5mmTP_24V
1TP 3V3TestPoint:TestPoint_Pad_D1.5mmTP_3V3
1TP 5VTestPoint:TestPoint_Pad_D1.5mmTP_5V
1TP GNDTestPoint:TestPoint_Pad_D1.5mmTP_GND
1TP ISENSETestPoint:TestPoint_Pad_D1.5mmTP_ISENSE
1TVS 30V TransientenschutzDiode_SMD:D_SMBD_OV_CB
1TVS bidirektional (DNP)Diode_SMD:D_SMBD_MOT_TVS
1WandtasterTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3-5.08_1x03_P5.08mm_HorizontalJ_SWITCH
1gruen 3V3LED_SMD:LED_0805_2012MetricLED_PWR
1rot IO17LED_SMD:LED_0805_2012MetricLED_STAT

Questions

How big is the Windowmaster controller v2 PCB?

It measures 88 × 130 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Windowmaster controller v2 use?

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.

Where can I download the Windowmaster controller v2 KiCad files?

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.

Can I use the Windowmaster controller v2 design in my own project?

Its repository states no licence, so its author keeps all rights: ask Simplycissmus before reusing the design.

Similar boards

  • 4 layers50 × 36 mmPower dual buck, the printed circuit board in 3D

    Power dual buck

    HeyPCB/power-kit

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

    34 partsCERN-OHL-S-2.0
  • 4 layers90 × 56.1 mmK2-cm5-traeger, the printed circuit board in 3D

    K2-cm5-traeger

    Gamecard/k2-plus-cm5

    K2 Plus CM5 – Creality K2 Plus mit Upstream-Klipper auf einem Raspberry Pi CM5

    137 partsGPL-3.0
  • 4 layers64.6 × 55.2 mmWhisker, the printed circuit board in 3D

    Whisker

    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.

    118 partsCERN-OHL-S-2.0
  • 6 layers100 × 114 mmMTE USB HUB, the printed circuit board in 3D

    MTE USB HUB

    MicroType-Engineering/MTE_USB_HUB

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

    159 parts41GPL-2.0
  • 4 layers23.8 × 19.1 mmActiveImpactor Encoder Celera, the printed circuit board in 3D

    ActiveImpactor Encoder Celera

    harrislab-brown/CyberDiver

    Untethered cyber-physical robotic platform for water entry experiments

    19 parts2CC-BY-SA-4.0
  • 2 layers135 × 80 mmSpin Coater, the printed circuit board in 3D

    Spin Coater

    hacker-fab/uw-spincoater

    UW Spincoater implementation, started Fall 2025

    100 parts2
  • 4 layers100 × 60 mmTransistor hfe measurement circuit, the printed circuit board in 3D

    Transistor hfe measurement circuit

    mjm-12/transistor-hfe-measurement-circuit

    Transistor hFE measurement circuit (KiCad, CERN-OHL-P-2.0)

    96 parts1CERN-OHL-P-2.0
  • 4 layers160 × 100 mmMastertemp esp32, the printed circuit board in 3D

    Mastertemp esp32

    ryanbjohnson/PentairMasterTempESP32

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

    95 partsMIT