Skip to the content
PCBKitNew board
4 layers63.2 × 70.5 mmHomectrl v2, the printed circuit board in 3D

home automation controller

Size
63.2 × 70.5 mm
Copper layers
4
Thickness
1.6 mm
Parts
141
Nets
97
Pads
414
Tracks, vias
953, 310
Pours
10
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
27 Jul 2025
Updated
16 Oct 2026

Overview

Homectrl v2 is an open-source printed circuit board by jeevan9s, from the jeevan9s/homectrl-sys repository on GitHub. It is a 4-layer board of 63.2 × 70.5 mm with 141 parts on 97 nets, routed with 953 tracks and 310 vias.

It is built around the ESP32-S3-WROOM-1-N8, DMP4065S-7 and SI2347DS-T1-GE3-1, with the TMC2209, TPD2E001DRLR and TPD4E001DRLR among its other parts. Its parts include 43 capacitors, 39 resistors, 15 diodes, 8 ICs and 8 connectors. It belongs with the radio and wireless and home automation and IoT boards and the ESP32 boards of this library.

Main components

12

README

README.md

homectrl

Home-automation controller with a Next.js dashboard.

Status

  • Controller PCB currently being manufactures
  • Firmware and docs development in progress.
  • Mechanical components currently being printed.
Table of Contents

I built homectrl because I wanted to automate my first apartment.

Overview

Practicality is a consistent motive when building.

As I moved into my first apartment during my first year at Queen's University, I wanted a device capable of smart-control for plants and window blinds, which are main components of my studio. This pushed me to build homectrl, a controller that leverages sensor readings, actuators, and WiFi for home automation.

The first version was manufactured in October of 2025, and this was my first PCB designed. It was a bit elementary, lots of breakout boards soldered on, an MCU devkit, etc. Over the year I designed several other PCBs and learned a lot, which pushed me to produce a second version that I can use reliably for my 2nd year in Kingston.

It's now June and the controller is being manufactured while I write docs and firmware.

Features

Controller

The controller is powered by a 12V 2A adapter and driven by an ESP32-S3.

Below is a list of features from power circuits to various peripherals.

  • Power-entry circuitry with OC/OV protetction, RPP, and PI-filter
  • Regulation circuit featuring buck converter, 5V ORing, and LDO for logic power (3V3)
  • ESP32-S3 breakout circuitry with USB differential routing, S3 boot mode selection and reset toggle.
  • Controlled power delivery via CMOS and PMOS for main pump and moisture sensor power.
  • Low-side switching for pump control.
  • Stepper motor driven by TMC2209 with UART for blind control.
  • Float switches for monitoring irrigation tank.
  • Analog soil moisture sensor connectors with local RC filters.
  • ESD protection with TVS diode arrays on all external connections.
  • Visual and audible indication.

App

The controller communicates to a Next.js webapp via Websockets and is also connected to Alexa via SinricPro for voice control, over WiFi/MQTT.

  • Next.js dashboard with modern responsive shadCN-tailwindcss UI.
  • Slider and switch control via UI.
  • Voice control with Alexa via SinricPro

Mechanical

  • Lightweight container with USB and power ports and slots for cable management.
  • Vents for airflow and audible indication.
  • Magnetic joints for easy lid removal and secure operation.

Architecture

Systems

Electrical

This section provides low-level explanations of the significant circuits of each "module" of the controller.

I encourage you to clone the repo or you use KiCanvas to look at the schematic and board files.

All electronics were designed with KiCad.

Power System

Power Entry

The 12V 2A power enters through a barrel jack connector, where it is then met with a 24V 3A fuse for over-current protection. A PTC resettable fuse was selected for durability.

The positive plug line VPLUG is then protected from voltage spikes with a Transient Voltage Supression (TVS) diode placed in paralell for clamping.

  • The diode's standoff @ 14V
  • Breakdown @ 15.3V
  • Clamps @ 23.2V

The positive line then goes through a Reverse Polarity Protection (RPP) circuit, using a P-Channel MOSFET for lossless efficiency (lower V drop than standard diodes).

A Zener diode and resistor is placed between the MOSFET's gate and source for gate over-voltage protection.

A bulk electrolytic (100μF) capacitor, ferrite bead, and high-frequency (0.1μF) capacitor are then placed to create a third-order low pass filter (π-filter).

  • This is used to smooth voltage spikes and reduce EMI.

The ferrite bead was primariy selected for its saturation current and DCR.

The approximate current draw with safety margin $I_{net}$ is 2A.

$I_{\mathrm{sat}} = 1.5 \times I_{\mathrm{net}} \approx 3 A$

Minimize heat dissipation.

$DCR$ is 20Ω

$P_{heat} = DCR \times I_{\mathrm{sat}} \approx 0.06 W$

Voltage Regulation (I)

The controller uses a cascade regulation system, starting with the TPS5405DR buck converter.

The input voltage is VPLUG (12V), after the protection and filtering circuitry, and the output is 5V.

The $R_{osc}$ value will determine the switching frequency of the converter.

Switching frequency is governed by the relationship. $$R_{\text{OSC}} (\text{k}\Omega) = 21.82 \cdot f_{\text{SW}}^{-1.167}$$

I chose a value of 50kΩ for a $f_{SW}$ of approximately 525 kHz

For the soft-start capacitor $C_{ss}$ , I chose a value of 10nF for a soft-start time of 5ms

The values below were taken from the TPS5405DR Datasheet

$$ C_{SS} = \frac{t_{SS} \cdot I_{SS}}{V_{REF}} $$

$$ C_{SS} = \frac{(5,\mathrm{ms})(2,\mathrm{\mu A})}{0.8,\mathrm{V}} = 12.5,\mathrm{nF} \approx 10,\mathrm{nF} $$

The inductor values were chosen using the equation below.

$$ L=\frac{V_{out}\left(V_{in}-V_{out}\right)} {V_{in}f_{sw}\Delta I_L} $$

Using our calculated $f_{sw}$ from above and our voltage requirements (12V in, 5V out): $$ L= \frac{(5,\mathrm{V})(12,\mathrm{V}-5,\mathrm{V})} {(12,\mathrm{V})(490,\mathrm{kHz})(0.6,\mathrm{A})}

\approx 10,\mathrm{\mu H} $$

The Schottky diode is rated for the 2A output current and 12V

5V ORing

The 5V rails from both USB and the buck converter are combined using an OR-ing circuit (Dual Ideal Diodes) to prevent backfeeding before feeding the second stage of regulation.

In this configuration, the outputs of both LM66100 ideal diode controllers are tied together to form the shared 5V rail. The CE pins of each device are also tied to the output rail, ensuring both controllers are only enabled once the rail is present

This allows for testing over serial with devices that are powered by VPLUG (12V).

Voltage Regulation (II)

The second stage of voltage regulation involes a Low-Dropout Regulator (LDO), the MCP1826S

It is fed the combined 5V rail from the OR-ing circuit to produce the controller's logic-level voltage: 3V3

Controlled Pump Power Delivery

The power for the pumps is controlled using a complementary-MOSFET (CMOS) setup, driven by a digital HIGH from the S3.

  • When the control signal is low or floating, the N-channel MOSFET remains off and a pull-up resistor holds the gate of the P-channel MOSFET at the supply voltage, keeping it disabled and disconnecting the load rail.
  • When the control signal is driven high, the N-channel MOSFET turns on and pulls the P-channel gate low, creating sufficient gate-source voltage to enable conduction and connect the supply to the load.

Voltage Sensing

A resistor divider circuit is used to produce a signal to be read by the S3's internal ADC.

  • $R_1 = 100,\mathrm{k\Omega}$
  • $V_{plug} = 12,\mathrm{V}$
  • $V_{out} = 2,\mathrm{V}$

$$ R_2 = \frac{R_1 \cdot V_{out}}{V_{batt} - V_{out}} $$

$$ R_2 = \frac{100,000 \cdot 2}{12 - 2} = 20,\mathrm{k\Omega} $$

Microcontroller

The controller is driven by an ESP32-S3-WROOM microcontroller.

Digital IO

Mode Select and Reset Toggle

The S3 can be put into BOOT mode and RESET with onboard buttons.

BOOT mode determines whether the chip runs existing code from flash memory or waits to download new firmware.

  • The ESP32 samples the BOOT pin (GPIO0) during reset to determine the boot mode.
  • It is active-low: when pulled to GND during reset, the chip enters UART bootloader mode for flashing firmware.
  • The circuit uses a momentary push-button to GND and a 10kΩ pull-up resistor to ensure a defined high state during normal operation.
BOOT0 LevelBoot Mode
HIGHProgramming Mode
LOWMemory Mode

RESET controls the Enable (EN) pin which is the ON/OFF (reset) switch for the ESP32.

  • It is active-low: when pulled to GND it turns off the chip, and when released, it restarts.
  • The circuit consists of a momentary push-button, a pull-up resistor to ensure the chip is enabled by default, and a 1µF capacitor to filter out button noise.

Pump Interface

The controller interfaces with 12V 300mA rated pumps for irrigation.

These pumps connect via JST-XH vertical headers and are met with flyback diodes for inductive spike protection, and decoupling to filter out noise.

Each pump is controlled by a low-side switch using an A03400A N-channel MOSFET.

  • The gate of the MOSFET is driven by an S3 GPIO pin and is pulled down to GND for state definition.
  • The drain is connected to the negative terminal of the pump and the source to GND.

This will bridge the negative pump terminal to GND and effectively turn it ON when the gate is HIGH.

Stepper Motor Interface

The controller interfaces with a NEMA 17 stepper motor through a TMC2209 driver for blind control.

The NEMA 17 stepper motor connects via a vertical 4-position JST-XH header.

The positive and negative terminals of both stepper coils feed the OBX and OAX pins of the driver.

The driver is powered by VPLUG and is decoupled for bulk and high-frequency noise with electrolytic and ceramic capacitors.

  • The driver is put to sleep by the ENN pin to avoid power consumption, which is why I didn't use a CMOS/controlled-power delivery setup.

The main control signals are STEP and DIR, controlling the speed and direction, respectively. These connect digital pins on the S3.

The single-wire UART interface was used for advanced chip config, live diagnostics, and features.

The BRA and BRB connect to 0.11Ω sense resistors to monitor and regulate current through the motor coils.

For addressing, the MS1_AD01 and MS2_AD1 pins are pulled low to set the binary address bits to 00 and the UART slave address to %0.

The CP0 and CP1 pins are tied together with a 22nF capacitor to generate a boost voltage for the internal charge pump. This boosted voltage switches the internal N-channel MOSFETs fully on.

Peripheral Devices

Sensors

The controller interfaces with two capactive soil-moisture sensors (SMS) and an Ambient Light Sensor (ALS).

These connections are made with vertical 4-pin JST-XH headers.

I designed the ALS breakout board, in the future I'd be interested in designing the moisture sensors. For now I'm using the Adafruit models.

The 3V3 SMS power is controlled through a simple A03407A P-channel mosfet, and the signals are filtered with a resistor-capacitor network at the S3 ADC pins.

The ALS communicates with the I2C protocol and is powered by 3V3.

The two analog signals and I2C clock and data signals are ESD-protected by a TPD43001 TVS diode array.

Float Switches

The controller interfaces with two float switches.

These connections are made with a vertical 3-pin JST-XH header.

The signals are pulled up to 3V3 to establish a defined logic stateand filtered with a resistor-capacitor network at the S3 ADC pins.

Indicator Components

  • RGB LED
  • Passive LEDs for simple indication
  • Buzzer for audible indication

Mechanical

This section provides insight on the mechanical components of homectrl.

I used Fusion360 to design everything.

Container

The container uses a rounded-rectangular exterior to house the board.

The board is mounted using M2 standoffs designed from the base of the container.

  • It features USB-C and barrel-jack portholes for easy flashing and power connection.
  • The backside has slot cutouts for actuator and sensor cables.
  • Vent holes were used throughout the container for airflow and weight management (more lightweight).

Lid

The lid is mounted magnetically on the outer top face of the container using projected holes for small magnets.

  • Its design is honestly quite minimal, I did add a small hole for the controller's RGB LED to shine through.

Firmware

Web-App

Repository Structure

Gallery


huge thanks to PCBWay for sponsoring this project's first revision.
check out REV A


Jeevan Sanchez, 2026

Parts

141
QtyValueFootprintReferences
250.1uFCapacitor_SMD:C_0402_1005MetricC10, C12, C14, C15, C17, C20, C21, C24, C25, C26, C27, C28, C29, C30, C31, C32 +9
1110kResistor_SMD:R_0402_1005MetricR4, R5, R6, R9, R14, R19, R23, R25, R26, R28, R33
9150Resistor_SMD:R_0402_1005MetricR7, R13, R15, R16, R17, R18, R22, R24, R36
51kResistor_SMD:R_0402_1005MetricR27, R31, R32, R39, R40
410uFCapacitor_SMD:C_0603_1608MetricC11, C16, C22, C23
422uFCapacitor_SMD:C_0805_2012MetricC6, C13, C42, C44
34.7kResistor_SMD:R_0402_1005MetricR1, R34, R35
3AO3400APackage_TO_SOT_SMD:SOT-23Q3, Q4, Q5
2clipboard:fc8df92e-a3b3-4f73-a46e-2aabbf2af471,
20.11Resistor_SMD:R_0603_1608MetricR29, R30
20.1uFCapacitor_SMD:C_0603_1608MetricC18, C19
21.8KResistor_SMD:R_0402_1005MetricR12, R37
2100uFEEH_ZK1V101XP:CAP_EEHZK1V101XPC1, C34
210uFCapacitor_SMD:C_0805_2012MetricC2, C3
25.1kResistor_SMD:R_0402_1005MetricR20, R21
2ID_LM66100DCKRPackage_TO_SOT_SMD:SOT-363_SC-70-6UE1, UE2
2LOGOLOGOG***, G***
2MountingHoleMountingHole:MountingHole_2.2mm_M2H1, H2
2PLUG_LEDLED_SMD:LED_0603_1608MetricD2, D7
2SS14Diode_SMD:D_SMAD5, D9
1100kResistor_SMD:R_0603_1608MetricR2
1100kResistor_SMD:R_0402_1005MetricR8
110nFCapacitor_SMD:C_0402_1005MetricC4
110uHInductor_SMD:L_Changjiang_FNR6045SL1
12.2uFCapacitor_SMD:C_0402_1005MetricC40
120KResistor_SMD:R_0402_1005MetricR11
122nFCapacitor_SMD:C_0402_1005MetricC38
12N7002Package_TO_SOT_SMD:SOT-23Q2
13.3nFCapacitor_SMD:C_0402_1005MetricC8
13A 24V PTCFuse:Fuse_1812_4532MetricF1
13V3_LEDLED_SMD:LED_0603_1608MetricD8
13V3_TP_PADTestPoint:TestPoint_Pad_1.5x1.5mmTP2
1470Resistor_SMD:R_0402_1005MetricR10
150kResistor_SMD:R_0402_1005MetricR3
15V_BATT_TP_PADTestPoint:TestPoint_Pad_1.0x1.0mmTP6
15V_MUX_TP_PADTestPoint:TestPoint_Pad_1.0x1.0mmTP8
15V_USB_TP_PADTestPoint:TestPoint_Pad_1.0x1.0mmTP4
1ALS_CONNConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ7
1AO3407APackage_TO_SOT_SMD:SOT-23Q1
1BAT54JDiode_SMD:D_SOD-323FD13
1Barrel_JackConnector_BarrelJack:BarrelJack_HorizontalJ1
1CMT-0525-75-SMT-TRCMT_0525_75_SMT_TR:XDCR_CMT-0525-75-SMT-TRBZ1
1DBG_LEDLED_SMD:LED_0603_1608MetricD11
1DMP4065S-7Package_TO_SOT_SMD:SOT-23U3
1ESP32-S3-WROOM-1ESP32-S3-WROOM-1-N16R2:XCVR_ESP32-S3-WROOM-1-N16R2U4
1FSW1_CONNConnector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ8
1FerriteBeadResistor_SMD:R_1206_3216MetricFB1
1GND_B_PADTestPoint:TestPoint_Pad_1.0x1.0mmTP9
1GND_TP_DRILLTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP3
1GND_TP_PADTestPoint:TestPoint_Pad_1.5x1.5mmTP1
1MCP1826SPackage_TO_SOT_SMD:SOT-223-3_TabPin2U2
1MMSZ5243BT1GDiode_SMD:D_SOD-123D3
1ON_LEDLED_SMD:LED_0603_1608MetricD10
1PUMP1_CONNConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ2
1PUMP2_CONNConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ3
1S3_BOOT_SWTACT_TS1185:SW_5-B-B-B-A_XKBSW2
1S3_RESET_SWTACT_TS1185:SW_5-B-B-B-A_XKBSW1
1SI2347DS-T1-GE3Si2347DS:SOT_7DS-T1-GE3_VISU9
1SMAJ14ADiode_SMD:D_SMAD1
1SMS1_CONNConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ6
1SS34Diode_SMD:Nexperia_CFP3_SOD-123WD4
1STEP_CONNConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ4
1SYS_LEDLED_SMD:LED_WS2812B-Mini_PLCC4_3.5x3.5mmD14
1TMC2209ul_TMC2209:QFN28_5X5_TRIU5
1TPD2E001DRLRTPD2E001DRLR:SOT50P160X60-5NU8
1TPD4E001DRLRPackage_TO_SOT_SMD:Texas_R-PDSO-N6_DRL-6U7
1TPS5405DRTPS5405DR:SOIC127P599X175-8NU1
1USB_C_CONNConnector_USB:USB_C_Receptacle_G-Switch_GT-USB-7010ASVJ5
1USB_LEDLED_SMD:LED_0603_1608MetricD6
1VPLUG_TP_DRILLTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP5
1VPLUG_TP_PADTestPoint:TestPoint_Pad_1.0x1.0mmTP7
1VPMP_LEDLED_SMD:LED_0603_1608MetricD15
1WIFI_LEDLED_SMD:LED_0603_1608MetricD12

Questions

How big is the Homectrl v2 PCB?

It measures 63.2 × 70.5 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Homectrl v2 use?

141 parts, built around the ESP32-S3-WROOM-1-N8, DMP4065S-7, SI2347DS-T1-GE3-1 and TMC2209. 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 Homectrl v2 KiCad files?

From the jeevan9s/homectrl-sys repository on GitHub, at the commit this page was made from: the board is hardware/homectrl-v2/homectrl-v2.kicad_pcb and its schematic hardware/homectrl-rB/ESP-breakout.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Homectrl v2 design in my own project?

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

More from jeevan9s/homectrl-sys

2
  • 4 layers134 × 84.7 mmHomectrl rB, the printed circuit board in 3D

    Homectrl rB

    jeevan9s/homectrl-sys

    home automation controller

    136 parts2
  • 2 layers20 × 18 mmLux module, the printed circuit board in 3D

    Lux module

    jeevan9s/homectrl-sys

    home automation controller

    13 parts2

Similar boards

  • 4 layers233 × 230.5 mmBB3plus mainboard, the printed circuit board in 3D

    BB3plus mainboard

    eez-open/eez-bb3plus

    EEZ Bench Box 3 Plus (BB3+) Modular T&M chassis

    439 parts13
  • 4 layers95 × 95 mmTelemetryOnboard, the printed circuit board in 3D

    TelemetryOnboard

    Spaceflight-Rocketry-Giessen-e-V/Telemetry

    Open-Source Rocket Telemetry System Based On Radiocrafts RC232 Radio Modules

    143 parts27CERN-OHL-S-2.0
  • 6 layers100 × 37 mmPickleRick, the printed circuit board in 3D

    PickleRick

    icl-rocketry/Ricardo-PickleRick

    A more compact Ricardo classic featuring a new sensor array, 4 pyro channels and 4 servo channels. Includes Ricardo bus plug too.

    223 parts2MIT
  • 2 layers96.4 × 127.6 mmBottom layer Panel, the printed circuit board in 3D

    Bottom layer Panel

    vekkax/Braille_Display

    A braille learning aid for kids

    396 parts1
  • 4 layers25.1 × 17.8 mmBOTTOM PCB, the printed circuit board in 3D

    BOTTOM PCB

    SaikoJuanma/phone_replacement

    this projects aims to create a replacement for the phone, so I can stop using my phone on the home and get rid off distractions. ## Upcoming features 1. Timer and alarm. 2. PCB and schematics for the project. 3.

    82 parts
  • 4 layers32.2 × 34.1 mmS3P, the printed circuit board in 3D

    S3P

    kanaboid/elektronika

    Haase Industries S3P boards: Arduino IDE code and KiCad schematic.

    57 parts
  • 4 layers249.5 × 95 mmEEZ BB3 CM4 R1B0, the printed circuit board in 3D

    EEZ BB3 CM4 R1B0

    intergalaktik/bb3-cm4

    CM4 compatible MCU board

    251 parts35
  • 2 layers175.3 × 95.3 mmLCD PMOD, the printed circuit board in 3D

    LCD PMOD

    goran-mahovlic/LVDS_RGB_experimental

    174 parts5