ESP32-S3 environmental controller — fan/pump drivers, dual SSR breakouts, 4 soil-moisture inputs, I2C SHT41 sensor.
A grow-friendly controller designed for a hobby greenhouse. Reads temperature, humidity, and soil moisture from up to four pots. Drives two DC loads (circulation fan and a peristaltic water pump) and two AC loads (heater and grow lights) via solid-state relays.
Local-first by design: schedules and thresholds run on the ESP32 with no cloud dependency. An optional MQTT bridge surfaces telemetry to Home Assistant.
Inspired by Blueprint.am's "smart greenhouse controller" example — but built through to a real PCB.
| MCU Module | ES-01 ESP32-S3-DevKitC-1 | Plugs into 2x 1x22 pin headers (J1/J2) |
| DC Drivers | DR-01 AO3400A ×2 + 1N4007 flyback | Low-side switches for 12V fan + pump (J4/J5) |
| AC Drivers | DR-02 Off-board SSR breakouts ×2 | GPIO + 330R current-limit drives SSR LED directly (J6/J7) |
| Sensors | SE-01 SHT41 (I2C) + 4× capacitive soil probes (ADC) | I2C bus on J9, soil probes on J8 (ESP32 ADC channels) |
| Power | PW-01 USB-C (logic) + 12V terminal (DC loads) | Two isolated rails — logic stays alive if 12V drops |
| Board | PB-01 2-layer, 100 × 90 mm | 24 components, auto-routed with 0 shorts and 0 unconnected |
| Ref | Category | MPN | Description | Qty | Unit | Ext | Stock | Links |
|---|---|---|---|---|---|---|---|---|
| J1 | PinHeader_1x22 | PinHeader_1x22_2.54mm | 1x22 0.1in pin header | 1 | $0.30 | $0.30 | — | LCSC |
| J2 | PinHeader_1x22 | PinHeader_1x22_2.54mm | 1x22 0.1in pin header | 1 | $0.30 | $0.30 | — | LCSC |
| J3 | Phoenix_MPT_2P | MPT 0.5/2-2.54 | 2-pin 2.54mm screw terminal | 1 | $0.45 | $0.45 | — | LCSC |
| J4 | Phoenix_MPT_2P | MPT 0.5/2-2.54 | 2-pin 2.54mm screw terminal | 1 | $0.45 | $0.45 | — | LCSC |
| J5 | Phoenix_MPT_2P | MPT 0.5/2-2.54 | 2-pin 2.54mm screw terminal | 1 | $0.45 | $0.45 | — | LCSC |
| J6 | Phoenix_MPT_3P | MPT 0.5/3-2.54 | 3-pin 2.54mm screw terminal | 1 | $0.65 | $0.65 | — | LCSC |
| J7 | Phoenix_MPT_3P | MPT 0.5/3-2.54 | 3-pin 2.54mm screw terminal | 1 | $0.65 | $0.65 | — | LCSC |
| J8 | Phoenix_MPT_8P | MPT 0.5/8-2.54 | 8-pin 2.54mm screw terminal | 1 | $1.50 | $1.50 | — | LCSC |
| J9 | PinHeader_1x04 | PinHeader_1x04_2.54mm | 1x4 0.1in pin header | 1 | $0.10 | $0.10 | — | LCSC |
| Q1 | SOT-23 | AO3400A B | N-channel MOSFET 30V 5.8A | 1 | $0.05 | $0.05 | In stock | LCSC |
| Q2 | SOT-23 | AO3400A B | N-channel MOSFET 30V 5.8A | 1 | $0.05 | $0.05 | In stock | LCSC |
| D1 | SMA | 1N4007 | 1A 1000V flyback diode | 1 | $0.0062 | $0.0062 | In stock | LCSC |
| D2 | SMA | 1N4007 | 1A 1000V flyback diode | 1 | $0.0062 | $0.0062 | In stock | LCSC |
| D3 | LED_0805 | LTST-C170KGKT | Green 0805 LED | 1 | $0.02 | $0.02 | In stock | LCSC |
| R1 | R_0402 | RC0402FR-0710KL | 10k 0402 1% | 1 | $0.0004 | $0.0004 | In stock | LCSC |
| R2 | R_0402 | RC0402FR-0710KL | 10k 0402 1% | 1 | $0.0004 | $0.0004 | In stock | LCSC |
| R3 | R_0402 | RC0402FR-07330RL | 330R 0402 1% | 1 | $0.0004 | $0.0004 | In stock | LCSC |
| R4 | R_0402 | RC0402FR-07330RL | 330R 0402 1% | 1 | $0.0004 | $0.0004 | In stock | LCSC |
| R5 | R_0402 | RC0402FR-074K7L | 4.7k 0402 1% | 1 | $0.0004 | $0.0004 | In stock | LCSC |
| R6 | R_0402 | RC0402FR-074K7L | 4.7k 0402 1% | 1 | $0.0004 | $0.0004 | In stock | LCSC |
| R7 | R_0402 | RC0402FR-071KL | 1k 0402 1% | 1 | $0.0004 | $0.0004 | In stock | LCSC |
| C1 | C_0402 | CL05B104KO5NNNC B | 100nF 50V X7R 0402 | 1 | $0.0008 | $0.0008 | In stock | LCSC |
| C2 | C_0805 | CL21A106KAYNNNE B | 10uF 25V X5R 0805 | 1 | $0.0068 | $0.0068 | In stock | LCSC |
| C3 | C_0402 | CL05B104KO5NNNC B | 100nF 50V X7R 0402 | 1 | $0.0008 | $0.0008 | In stock | LCSC |
| Total | $5.00 | |||||||
Real KiCad schematic auto-generated from the designgraph TOML by gen_kicad_schematic.py — generic block symbols with label-based connectivity, exported via kicad-cli sch export svg.
2-layer, 100 × 90 mm. Auto-placed and auto-routed by the Rust placer/router pipeline, with generated 3D, layer, enclosure, and DRC assets.