
ClimateSprinklerController
kbx81/ClimateSprinklerController
ESP32-based climate and sprinkler controller for use with ESPHome

ESP32-based climate and sprinkler controller for use with ESPHome
ClimateSprinklerController is an open-source printed circuit board by kbx81, from the kbx81/ClimateSprinklerController repository on GitHub. It is a 2-layer board of 136 × 100 mm with 194 parts on 142 nets, routed with 1,543 tracks and 161 vias.
It is built around the ESP32-WROVER, 2N6073BG and BME280, with the DHT22, MOC3043 and PEC11S-929K-S0015 among its other parts. Its parts include 65 resistors, 33 capacitors, 14 ICs, 13 diodes and 11 transistors. It belongs with the home automation and IoT boards and the ESP32 boards of this library.

Here you'll find plans for an ESP32-based controller designed with ESPHome in mind. It is primarily designed for switching 24-volt AC circuits but it is flexible by design and should be adaptable to other types of electrical workloads.
In the Preface you will find background information about this project such as how it came to be and some personal thoughts and experiences I've had with home automation through the years.
In the Hardware document you will find a general explanation of the theory of operation of a thermostat as well as a design overview of this device, some handy tips (should you choose to build one), construction, usage, and installation detail.
Finally, the Hardware Detail document aims to explain why I did what I did -- design decisions, etc.
At present there are two major "versions" of (iterations on?) the device -- a version that supports an OLED display such as the SSD1325 and a version (well, actually three versions) that supports a Nextion touchscreen display. The project files for each can be found in its respective directory:
The schematic and PCB were drawn in KiCAD. I had PCBs fabricated by Elecrow but nearly any PCB fabricator should be able to manufacture these without any issues.
On Octopart I have posted a bill of materials (BoM) for each design version:
Save money by reading through the build guide before you order any parts, as you likely do not need every part in the linked BoMs! (For example, there are footprints multiple sensors on each PCB. You do not need all of the sensors!)
I've created a separate repository for my ESPHome configurations; if you're looking for a starting point/example configuration, please have a look there.
Everything you see here is provided to you free of charge. You are free to use it however you please within the constraints of the license -- but you do so at your own risk. I accept absolutely no liability if you cause damage to your property, HVAC system, or any other hardware you choose to connect to this device.
The circuit schematics, PCBs and enclosures found here are licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.

Thanks for visiting!
| Qty | Value | Footprint | References |
|---|---|---|---|
| 13 | 10K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2, R3, R4, R5, R6, R7, R8, R16, R20, R21, R22, R26 |
| 11 | 100 nF | Capacitor_SMD:C_0805_2012Metric | C2, C4, C10, C11, C19, C20, C21, C22, C23, C24, C25 |
| 8 | .01 uF | Capacitor_SMD:C_0805_2012Metric | C26, C27, C28, C29, C30, C31, C32, C33 |
| 8 | 180 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R42, R43, R44, R45, R46, R47, R48, R49 |
| 8 | 270 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R34, R35, R36, R37, R38, R39, R40, R41 |
| 8 | 2N6073B | ClimateSprinklerController:TO-225-3_Vertical | Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12 |
| 8 | 39 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R58, R59, R60, R61, R62, R63, R64, R65 |
| 8 | 820 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R50, R51, R52, R53, R54, R55, R56, R57 |
| 8 | MOC3043 | Package_DIP:SMDIP-6_W9.53mm | U10, U11, U12, U13, U14, U15, U16, U17 |
| 5 | 1K5 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R27, R28, R31, R32, R33 |
| 5 | MountingHole_Pad | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H1, H2, H3, H4, H5 |
| 3 | 1 uF | Capacitor_SMD:C_0805_2012Metric | C8, C15, C16 |
| 3 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | Q2, Q3, Q4 |
| 3 | 47 uF | Capacitor_SMD:C_1210_3225Metric | C14, C17, C18 |
| 3 | 560 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R23, R24, R25 |
| 3 | G5Q-1-DC5 | Relay_THT:Relay_SPDT_Omron-G5Q-1 | K1, K2, K3 |
| 3 | N/A | Diode_SMD:D_SOD-123 | D5, D7, D9 |
| 2 | 10 uF | Capacitor_SMD:CP_Elec_5x5.8 | C9, C12 |
| 2 | 100K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R11, R13 |
| 2 | 2K7 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R29, R30 |
| 2 | 3K3 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R9, R10 |
| 2 | 4.7 uF | Capacitor_SMD:C_0805_2012Metric | C5, C6 |
| 2 | IO26 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP8, JP9 |
| 1 | 10 uF | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | 10K | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | TH1 |
| 1 | 120 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R18 |
| 1 | 15 uH | Inductor_SMD:L_Wuerth_WE-PD-Typ-LS | L1 |
| 1 | 1K6 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R15 |
| 1 | 220 nF | Capacitor_SMD:C_0805_2012Metric | C7 |
| 1 | 220 uF | Capacitor_SMD:CP_Elec_8x10 | C13 |
| 1 | 24.9K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R14 |
| 1 | 300 mA | Fuse:Fuse_2920_7451Metric | F1 |
| 1 | 3V3 | LED_SMD:LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm | D2 |
| 1 | 4.7 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R12 |
| 1 | 470 uF | Capacitor_SMD:CP_Elec_16x17.5 | C3 |
| 1 | 5K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R17 |
| 1 | 5V | LED_SMD:LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm | D4 |
| 1 | 7.5 TO 40 V | Connector_BarrelJack:BarrelJack_Horizontal | J1 |
| 1 | 8K2 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R19 |
| 1 | BME280 | Package_LGA:Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumbering | U8 |
| 1 | BME280_A0 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP16 |
| 1 | ClimateSprinklerControllerQR | ClimateSprinklerController:ClimateSprinklerControllerQR | QR***** |
| 1 | DHT22 | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | U7 |
| 1 | DISPLAY_1 | Connector_PinSocket_2.54mm:PinSocket_1x20_P2.54mm_Vertical | J9 |
| 1 | DISPLAY_2 | Connector_PinSocket_2.54mm:PinSocket_1x11_P2.54mm_Vertical | J10 |
| 1 | EN | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP7 |
| 1 | ESP32-WROVER | ClimateSprinklerController:ESP32-WROVER | U1 |
| 1 | EXT_ENC | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J3 |
| 1 | G | LED_SMD:LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm | D11 |
| 1 | HVAC | ClimateSprinklerController:PhoenixContact_SPTAF_1_12-3.5-IL_1x12_P3.50mm_Vertical | J11 |
| 1 | I2C | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J6 |
| 1 | INTA_TO_IO36 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP5 |
| 1 | INTB_TO_IO39 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP4 |
| 1 | IO_EXP | Connector_PinSocket_2.54mm:PinSocket_1x18_P2.54mm_Vertical | J8 |
| 1 | J4_V_SEL | Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm | JP6 |
| 1 | LD1086DT33TR | Package_TO_SOT_SMD:TO-252-2 | U4 |
| 1 | LMR36520 | Package_SO:Texas_HSOP-8-1EP_3.9x4.9mm_P1.27mm_ThermalVias | U3 |
| 1 | MCP23017_A0 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP1 |
| 1 | MCP23017_A1 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP2 |
| 1 | MCP23017_A2 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP3 |
| 1 | MCP23017_SO | Package_SO:SOIC-28W_7.5x17.9mm_P1.27mm | U2 |
| 1 | MISC1 | LED_SMD:LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm | D16 |
| 1 | MISC2 | LED_SMD:LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm | D17 |
| 1 | MISC3 | LED_SMD:LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm | D18 |
| 1 | MODE | Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx58-2LFS | SW2 |
| 1 | MountingHole | MountingHole:MountingHole_5mm | H6 |
| 1 | N/A | Diode_SMD:Diode_Bridge_Bourns_CD-MBL2xxS | D1 |
| 1 | N/A | ClimateSprinklerController:RV_Disc_D7mm_W4mm_P5mm | RV1 |
| 1 | PEC11S-929K-S0015 | ClimateSprinklerController:RotaryEncoder_Bourns_PEC11S-Switch_Vertical_H9.5mm | SW3 |
| 1 | PG_TO_EN | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP11 |
| 1 | PIR | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J7 |
| 1 | POWER SEL | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J2 |
| 1 | RELAY | ClimateSprinklerController:PhoenixContact_SPTAF_1_12-3.5-IL_1x12_P3.50mm_Vertical | J12 |
| 1 | RELAY1 | LED_SMD:LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm | D6 |
| 1 | RELAY2 | LED_SMD:LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm | D8 |
| 1 | RELAY3 | LED_SMD:LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm | D10 |
| 1 | RESET | Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx58-2LFS | SW1 |
| 1 | SD_CD_TO_B6 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP15 |
| 1 | SD_CS_TO_IO26 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP13 |
| 1 | SERIAL | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J4 |
The 177 most common of 194 parts.
It measures 136 × 100 mm and has 2 copper layers, 1.6 mm thick.
194 parts, built around the ESP32-WROVER, 2N6073BG, BME280 and DHT22. 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.
From the kbx81/ClimateSprinklerController repository on GitHub, at the commit this page was made from: the board is WROVER/ClimateSprinklerController.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask kbx81 before reusing the design.

kbx81/ClimateSprinklerController
ESP32-based climate and sprinkler controller for use with ESPHome

kbx81/ClimateSprinklerController
ESP32-based climate and sprinkler controller for use with ESPHome

kbx81/ClimateSprinklerController
ESP32-based climate and sprinkler controller for use with ESPHome

oomlout/oomlout_oomp_project_bot_v_2

LudovicLemarinel/EspHomeAutomation
Home Automation based on ESP8266 and MQTT


bbokser/persuasive_waker
An open source hardware alarm clock that can't be snoozed or turned off.



Fish-in-a-Barrel/Nixie
This is my Nixie clock project. It was created as an excuse to learn more about electronics and it touches on power circuits, microcontrollers, serial communications, and more.
