Skip to the content
PCBKitNew board
4 layers134 × 84.7 mmHomectrl rB, the printed circuit board in 3D

home automation controller

Size
134 × 84.7 mm
Copper layers
4
Thickness
1.6 mm
Parts
136
Nets
95
Pads
385
Tracks, vias
1,159, 461
Pours
5
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
27 Jul 2025
Updated
16 Oct 2026

Overview

Homectrl rB is an open-source printed circuit board by jeevan9s, from the jeevan9s/homectrl-sys repository on GitHub. It is a 4-layer board of 134 × 84.7 mm with 136 parts on 95 nets, routed with 1,159 tracks and 461 vias.

It is built around the ESP32-S3-WROOM-1-N16R8, ADS1115IDGSR and TMC2209-LA-T, with the SI2301CDS-T1-GE3, TPD2E001DRLR and CC0603KRX7R9BB104 among its other parts. Its parts include 40 capacitors, 30 resistors, 12 diodes, 9 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

136
QtyValueFootprintReferences
14LOGOLOGOG***, G***, G***, G***, G***, G***, G***, G***, G***, G***, G***, G***, G***, G***
80.1uFCapacitor_SMD:C_0603_1608MetricC14, C15, C28, C31, C32, C34, C42, C43
60.1uF Capacitor_SMD:C_0603_1608MetricC13, C21, C22, C23, C24, C35
4clipboard:d7d3f97e-8634-446f-a052-60447301ad40, , ,
410kResistor_SMD:R_0603_1608MetricR19, R20, R22, R24
410uF Capacitor_SMD:C_0603_1608MetricC10, C16, C17, C19
41kResistor_SMD:R_0402_1005MetricR6, R15, R16, R27
41kResistor_SMD:R_0603_1608MetricR17, R18, R21, R23
30.1uF Capacitor_SMD:C_0402_1005MetricC18, C20, C36
310uF Capacitor_SMD:C_0805_2012MetricC2, C25, C26
34.7kResistor_SMD:R_0402_1005MetricR12, R13, R14
20.11Resistor_SMD:R_1206_3216MetricR25, R26
2100kResistor_SMD:R_0402_1005MetricR2, R3
210kResistor_SMD:R_0402_1005MetricR29, R31
21uF Capacitor_SMD:C_0805_2012MetricC11, C12
2330Resistor_SMD:R_0402_1005MetricR7, R30
24.7KResistor_SMD:R_0603_1608MetricR4, R5
247uF Capacitor_SMD:C_0805_2012MetricC6, C9
25.1kResistor_SMD:R_0603_1608MetricR10, R11
2AO3400APackage_TO_SOT_SMD:SOT-23Q2, Q3
2ID_LM66100DCKRLM66100:SC-70-6U3, U4
2MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2
2SI2301ul_SI2301CDS-T1-GE3:TO-236_VISU6, U7
10.47uF Capacitor_SMD:C_0603_1608MetricC7
11.5kResistor_SMD:R_0402_1005MetricR28
1100uF EEH_ZK1V101XP:CAP_EEHZK1V101XPC41
1100uF EEE_FK1V101P:CAP_EEEFK1V101PC1
110uF Capacitor_SMD:C_1206_3216MetricC37
112V-LEDLED_SMD:LED_0805_2012MetricD4
115kResistor_SMD:R_0402_1005MetricR1
12.2uF Capacitor_SMD:C_0603_1608MetricC27
1220uF EEE_FK1V101P:CAP_EEEFK1V101PC33
122nF Capacitor_SMD:C_0603_1608MetricC29
122uF Capacitor_SMD:C_0805_2012MetricC8
13.3nF Capacitor_SMD:C_0402_1005MetricC4
13V3-LEDLED_SMD:LED_0805_2012MetricD5
14.7uF Capacitor_SMD:C_0805_2012MetricC30
147Resistor_SMD:R_0402_1005MetricR8
147 nF Capacitor_SMD:C_0603_1608MetricC3
147nF Capacitor_SMD:C_0603_1608MetricC5
1ADS1115IDGSPackage_SO:TSSOP-10_3x3mm_P0.5mmU5
1ALS_CONNS04B_PASK_2:CONN4_S04B-PASK_JSTJ5
1BUCK-LEDLED_SMD:LED_0603_1608MetricD6
1Barrel_JackConnector_BarrelJack:BarrelJack_HorizontalJ1
1DEBUG-LEDLED_SMD:LED_0805_2012MetricD9
1DMP6023LE-13Package_TO_SOT_SMD:SOT-223Q1
1D_ZenerDiode_SMD:D_SOD-123D3
1ESP32-S3-WROOM-1ESP32-S3-WROOM-1-N16R2:XCVR_ESP32-S3-WROOM-1-N16R2U1
1FerriteBeadMPZ2012S221AT000:BEADC2012X105NFB1
1LIFSC1515AHER100M01:IND_IFSC_1515AH_VISL1
1LM3940IMP-3.3_NOPBLM3940IMP-3.3_NOPB:VREG_LM3940IMP-3.3_NOPBVR1
1LOGOQR-CODE:qRG***
1P0DDiode_SMD:D_SMAD12
1P1DDiode_SMD:D_SMAD13
1PUMP0-CONNS02B_PASK_2:CONN2_S02B-PASK-2_JSTJ6
1PUMP1-CONNS02B_PASK_2:CONN2_S02B-PASK-2_JSTJ7
1Polyfuse0ZCG0260BF2B:FUSER_0ZCG0260BF2BF1
1RXTestPoint:TestPoint_Pad_1.0x1.0mmTP2
1SMAJ15ADiode_SMD:D_SMAD2
1SMS-CONN-0LIB_S03B-PASK-2_LF__SN_:S03BPASK2LFSNJ3
1SMS-CONN-1LIB_S03B-PASK-2_LF__SN_:S03BPASK2LFSNJ4
1SS24Diode_SMD:D_SMAD1
1STEP-CONNS04B_PASK_2:CONN4_S04B-PASK_JSTJ8
1SW_BOOTButton_Switch_THT:SW_PUSH_6mmSW2
1SW_RESETButton_Switch_THT:SW_PUSH_6mmSW1
1SYS-LEDLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD7
1TMC2209ul_TMC2209:QFN28_5X5_TRIU8
1TP-5V-BTestPoint:TestPoint_Pad_1.0x1.0mmTP6
1TP-GNDTestPoint:TestPoint_Pad_1.0x1.0mmTP7
1TPD2E001DRLRTPD2E001DRLR:SOT50P160X60-5NU9
1TPS5405DRTPS5405DR:SOIC127P599X175-8NU2
1TP_12VTestPoint:TestPoint_Pad_1.0x1.0mmTP4
1TP_3V3TestPoint:TestPoint_Pad_1.0x1.0mmTP5
1TP_5V-UTestPoint:TestPoint_Pad_1.0x1.0mmTP3
1TXTestPoint:TestPoint_Pad_1.0x1.0mmTP1
1USB-LEDLED_SMD:LED_0603_1608MetricD14
1USB_C_Female_USB2_SmallUSBC-CONN:USB_C_DB-108PWBJ2
1WIFI-LEDLED_SMD:LED_0805_2012MetricD8

Questions

How big is the Homectrl rB PCB?

It measures 134 × 84.7 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Homectrl rB use?

136 parts, built around the ESP32-S3-WROOM-1-N16R8, ADS1115IDGSR, TMC2209-LA-T and SI2301CDS-T1-GE3. 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 rB KiCad files?

From the jeevan9s/homectrl-sys repository on GitHub, at the commit this page was made from: the board is hardware/homectrl-rB/homectrl-rB.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 rB 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 layers63.2 × 70.5 mmHomectrl v2, the printed circuit board in 3D

    Homectrl v2

    jeevan9s/homectrl-sys

    home automation controller

    141 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 layers161 × 87 mmMainPCB, the printed circuit board in 3D

    MainPCB

    rohit-env/minideck-pcb

    so I went off and designed a whole cyberdeck pcb, it’s kinda sick, it's a full-on deck with ports, buttons, blinky stuff, and that clean hacker aesthetic.

    194 parts
  • 4 layers130 × 100 mmR CoreLink, the printed circuit board in 3D

    R CoreLink

    Straasheijm/R-CoreLink-SCH-PCB

    262 parts
  • 4 layers65 × 30 mmRbpi z hat, the printed circuit board in 3D

    Rbpi z hat

    chipiki/PXFmini_v2

    It's attempt to make a second version of died project PXFmini

    119 parts7
  • 2 layers37.5 × 49.9 mmAmpOnly, the printed circuit board in 3D

    AmpOnly

    synthesissolutions/geeksforkids

    31 parts2
  • 4 layers42.8 × 103.8 mmUq phone, the printed circuit board in 3D

    Uq phone

    JamesB-Wood/UniQHW

    UniQHW

    146 partsCERN-OHL-S-2.0
  • 2 layers79.5 × 79.5 mmEsp32-energymeter V2, the printed circuit board in 3D

    Esp32-energymeter V2

    ElektorLabs/esp32-energymeter

    The Elektor ESP32 Energy Meter project, featuring schematics, PCB designs, and ESPHome integration for advanced energy monitoring

    116 parts48MIT
  • 4 layers127 × 76.2 mmPayload pcb, the printed circuit board in 3D

    Payload pcb

    austindriggs/urc-payload-pcb

    All-purpose control and interface board designed to manage mission-critical sensors and electronics for University Rover Challenge at WVU.

    114 partsMIT