

SmartCurtain
SmartCurtain is an open-source, automated curtain controller designed for smooth, quiet, and reliable operation.
- Size
- 80.4 × 46 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 28
- Nets
- 42
- Pads
- 150
- Tracks, vias
- 465, 26
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 5 Oct 2026
- Updated
- 21 Oct 2026
Overview
SmartCurtain is an open-source printed circuit board by fedcr, from the fedcr/SmartCurtain repository on GitHub. It is a 2-layer board of 80.4 × 46 mm with 28 parts on 42 nets, routed with 465 tracks and 26 vias.
It is built around the ESP32-C3-WROOM-02-H4 and CH224K. Its parts include 4 ICs, 3 capacitors, 2 connectors and 1 transistor. It belongs with the home automation and IoT boards and the ESP32 and RISC-V boards of this library.
Main components
2ESP32-C3-WROOM-02-H4
SMD,20x18mm-105dBm -40℃~+105℃ 2.4GHz 20.5dBm 345mA 3V~3.6V 82mA Bluetooth5.0 ESP32-C3 On-board PCB Antenna UART、SPI、I2C、I2S、USB SMD,20x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesCH224K
ESSOP-10-150mil-1mm-40℃~+90℃ 100W 4V~30V 5V、9V、12V、15V、20V Overvoltage Protection、Thermal Protection PD 3.0 Power Receiver Controller ESSOP-10-150mil-1mm USB PD ROHSWCH (Nanjing Qinheng Microelectronics)USB Converters
README
README.mdSmartCurtain
SmartCurtain is an open-source, automated curtain controller designed for smooth, quiet, and reliable operation. Built around the ESP32 microcontroller, it integrates stepper motor drive with stall detection, physical controls, Home Assistant integration via ESPHome/MQTT, and a modular 3D-printed transmission system.
Features
- Microcontroller: ESP32-based core with Wi-Fi and Bluetooth connectivity.
- Motor Control: TMC2209 silent stepper motor driver for ultra-quiet movement, customizable microstepping, and stall detection.
- Local Control: Rotary encoder (EC11) with integrated push-button for local open/close and fine-tuning.
- Smart Integration: Fully compatible with Home Assistant (ESPHome / MQTT) for scheduled routines, presence detection, and sunrise/sunset automation.
- Hardware & Enclosure: Fully parametric 3D-printable parts designed in OpenSCAD with integrated cable routing, belt tensioning, and secure wall/track mounting.
Repository Structure
├── BOM.csv # Project Bill of Materials ├── JOURNAL.md # Build log and design development notes ├── PCB/ # KiCad design files, ERC/DRC reports │ ├── SmartCurtain.kicad_sch # Schematic file │ ├── SmartCurtain.kicad_pcb # PCB layout file │ └── Fabrication/ # Gerbers, drill files, Pick & Place, BOM ├── Print Files/ # 3D modeling source files and printable STLs │ ├── smartcurtain.scad # Parametric OpenSCAD master file │ └── STL/ # Ready-to-slice STL meshes └── SmartCurtain_firmware/ # Source code and Home Assistant integration ├── SmartCurtain_firmware.ino └── SmartCurtain_configuration.yaml
Hardware and Schematic
Schematic Overview
The board integrates power regulation, the ESP32 module, the TMC2209 driver stage, and connectors for peripherals (encoder, endstops/sensors, mmWave presence sensor).
PCB Layout and 3D Render
- Layers: 2-layer FR4 design
- Clearance & Trace Widths: Verified via KiCad DRC/ERC reports (see PCB/DRC.rpt and PCB/ERC.rpt)
3D Printing and Mechanical Assembly
All 3D parts are modeled in OpenSCAD and exported to Print Files/STL/:
- smartcurtain_base.stl and smartcurtain_lid.stl: Main electronics and motor enclosure.
- smartcurtain_drive_pulley.stl and smartcurtain_idler_pulley.stl: Timing belt drive system.
- smartcurtain_idler_bracket.stl and smartcurtain_idler_carriage.stl: Belt tensioner assembly.
- smartcurtain_trolley.stl and smartcurtain_track_adapter.stl: Curtain track mounting and trolley interface.
- smartcurtain_fit_test_coupon.stl and smartcurtain_pulley_coupon.stl: Quick test prints for verifying tolerances before full printing.
Recommended Print Settings
- Material: PETG (recommended for heat and mechanical resistance)
- Layer Height: 0.20 mm
- Infill: 15% (Gyroid) (for the mechanical 100%)
- Perimeters/Walls: 4 walls for mechanical rigidity
Firmware
- Open SmartCurtain_firmware/SmartCurtain_firmware.ino in Arduino IDE or PlatformIO.
- Install required dependencies (ESP32 board package, AccelStepper / TMCStepper).
- Configure your pin definitions matching SmartCurtain.kicad_sch.
Home Assistant Integration:
Import SmartCurtain_firmware/SmartCurtain_configuration.yaml into your ESPHome or Home Assistant configuration. Follow on-screen discovery to calibrate travel limits and assign entities.
Bill of Materials (BOM)
A complete breakdown of components, ratings, and part numbers can be found in 'BOM.csv' and 'PCB/Fabrication/SmartCurtain_BOM.csv'
Parts
28| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 2 | 4.7 k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | 4.7 k, 4.7 k |
| 2 | C | Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm | C4, C6 |
| 2 | Screw_Terminal_01x04 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-4-5.08_1x04_P5.08mm_Horizontal | Light/Climate, RadarmmWave1 |
| 1 | 1 kΩ | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | 1 kΩ |
| 1 | 10 kΩ | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | 10 kΩ |
| 1 | 100nF | Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm | C5 |
| 1 | 22 Ω - 47 Ω | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | 47 Ω |
| 1 | 470 Ω | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | 470 Ω |
| 1 | 6.8 kΩ | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | 6.8 kΩ |
| 1 | CH224K | Package_SO:SSOP-10-1EP_3.9x4.9mm_P1mm_EP2.1x3.3mm | U2 |
| 1 | C_Polarized | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C_Polarized |
| 1 | ESP32-C3-WROOM-02 | RF_Module:ESP32-C3-WROOM-02 | U1 |
| 1 | LD271 | LED_THT:LED_D5.0mm_IRGrey | LD271 |
| 1 | Mini360_Buck | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J5 |
| 1 | PC817 | Package_DIP:DIP-4_W7.62mm | U4 |
| 1 | Q_NPN_BCE | Package_TO_SOT_THT:TO-92L_Inline | Q1 |
| 1 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | EC11 |
| 1 | Screw_Terminal_01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal | RadarmmWave |
| 1 | Stepper | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-4-5.08_1x04_P5.08mm_Horizontal | J1 |
| 1 | TMC2209_StepStick | Module:Pololu_Breakout-16_15.2x20.3mm | U3 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | USBC |
Questions
How big is the SmartCurtain PCB?
It measures 80.4 × 46 mm and has 2 copper layers, 1.6 mm thick.
What parts does the SmartCurtain use?
28 parts, built around the ESP32-C3-WROOM-02-H4 and CH224K. 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 SmartCurtain KiCad files?
From the fedcr/SmartCurtain repository on GitHub, at the commit this page was made from: the board is PCB/SmartCurtain.kicad_pcb and its schematic PCB/SmartCurtain.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the SmartCurtain design in my own project?
Its repository states no licence, so its author keeps all rights: ask fedcr before reusing the design.
Similar boards
- 2 layers56.5 × 47.2 mm

- 2 layers45 × 25 mm

Easy PD Sink
openwch/ch32v003
CH32V003 is an ultra-cheap RISC-V MCU with 2KB SRAM, 16KB flash, and up to 18 GPIOs that sells for under $0.10
41 parts599 - 4 layers170.2 × 141.9 mm
![[DFR1142]Lite Carrier for LattePanda Mu, the printed circuit board in 3D](/embed/boards/ltbrain-mubook.jpg?size=s&soon)
[DFR1142]Lite Carrier for LattePanda Mu
LtBrain/MuBook
A x86 carrier board for the LattePanda Mu
308 parts37MIT - 6 layers100 × 120 mm

Astra piNas
jlcjak/astra_piNas
Six-layer CM5 Lite dual-NVMe carrier with PCIe switch, Ethernet, microSD, USB-C PD and PoE. Review design; fabrication hold documented.
176 parts30 - 2 layers29.1 × 45.1 mm

USB GC2
Xenii1642/USB-GC2
Meet the new generation of USB-C GameCube Power Board. Now compatible with both 12V and 15V chargers. Two voltages, twice the potential.
23 parts24CERN-OHL-S-2.0 - 4 layers91.7 × 66.8 mm

Pico expansion board
eamars/RaspberryPi-Pico-Motor-Expansion-Board
A raspberry pi pico expansion board designed for OpenTrickler project
68 parts18GPL-3.0 - 2 layers14 × 100 mm

Powerline USB C
Andreas-Dorfner/Powerline-USB-C
Powerline is a small 3HP Front Entry USB-C eurorack power supply.
22 parts16 - 4 layers75.1 × 60.9 mm
