

HeatingController
Raspberry Pi Pico / ESPHome based central heating controller
- Size
- 81.3 × 82.6 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 44
- Nets
- 66
- Pads
- 161
- Tracks, vias
- 219, 63
- Pours
- 7
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 27 May 2025
- Updated
- 27 May 2025
Overview
HeatingController is an open-source printed circuit board by dvd604, from the dvd604/OpenClock repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 81.3 × 82.6 mm with 44 parts on 66 nets, routed with 219 tracks and 63 vias.
It is built around the HLK-PM12, L7805 and LTV-847S, with the AOSS21319C and BAS521,115-JSM among its other parts. Its parts include 13 resistors, 6 switches, 4 connectors, 3 capacitors and 3 ICs. It belongs with the home automation and IoT boards and the RP2040 boards of this library.
Main components
5HLK-PM12
插件,34.8x20.5mm0.1W 120V~350V 120mVp-p 12V 15mm 20mm 34mm 350mA 3W 3kV 73% 85VAC~265VAC AC/DC-DC Short Circuit Protection、Over Current Protection ±0.2% 插件,34.8x20.5mm AC-DC Power Modules ROHSHI-LINKAC-DC Power ModulesL7805
TO-220ST0℃~+125℃@(Tj) 1 1.2A 20V 2V@(1A) 42uV 500uA 5V 73dB@(120Hz) Fixed Positive Short Circuit Protection TO-220ST Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSOSENVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsLTV-847S
SMD-16P-30℃~+110℃ 1.2V 100mV@1mA,20mA 35V 3us 4 4us@2mA,100Ω 50% 50mA 50mA 5kV 600% 6V DC Phototransistor SMD-16P Transistor, Photovoltaic Output Optoisolators ROHSLite-OnTransistor, Photovoltaic Output OptoisolatorsAOSS21319C
SOT-23-55℃~+150℃ 1 P-Channel 1.3W 100mΩ@10V 12nC@10V 2.2V 2.8A 30V 320pF 35pF 40pF SOT-23 MOSFETs ROHSAlpha & Omega SemiconductorMOSFETsBAS521,115-JSM
SOD-5231 Independent 1.1V@100mA 150nA@250V 250mA 300V 500mW 50ns SOD-523 Switching Diodes ROHSJSMSEMISwitching Diodes
README
README.mdOpenClock
Raspberry Pi Pico / ESPHome based central heating controller
Background
I bought a house that had a "dumb" heating controller - a heating clock that switched zones on and off on a schedule. It had three zones, as my house has a hot water, upstairs and downstairs loop. I replaced it for a Nest Learning Thermostat 3, and was very unimpressed with it - It only had water and one zone, and the app design was terrible. For me (having an oil fired boilder), I wanted to turn the heating on for an hour in the morning to get the house warm, and give me hot water for a shower, and that's about it. Obviously as the name suggests, the Nest Thermostat wanted to get the house to a temperature and hold it there, which didn't work for me.
To fix this, I designed OpenClock - an ESPHome based heating clock built around readily available parts that would integrate into my already mature smart home system, giving me the ability to make the control of this clock as simple or as complex as I wanted. It was also a learning tool for me, being the second time I've designed circuitry for UK mains (240V) applications.
While I wouldn't recommend anyone build this (as I have limited experience with designing mains application devices), and this repo is more for demonstration purposes, I have been using OpenClock for over a year without issue.
Features
- Designed to screw to a UK single gang backbox
- 3 Heating zones, can be switched on and off independantly
- Runs ESPHome on a RPi Pico, so firmware can be modified
Heating systems known to work
Only tested in my house - has an oil fired boiler, which is controlled in two ways:
- The water "zone" sends mains power directly to the water "zone" valve - this valve opens, and a switch inside the valve then powers the boiler.
- The room "zones" send mains power to a room thermostat - this thermostat has the final say over whether the room "zone" valve opens, which when opened, powers the boiler as above.
The benefit of hindsight
While OpenClock has worked well for over a year, having spent some time with it, I now know how I would do it different - and probably will. If I was doing this centralised control method again, I would buy a Shelly relay - these guys have far more experience than me with designing safe electronics, and their hardware is small enough to fit in a UK backbox. One of their relays probably costs less than the price of the PCBs alone.
However, I've come to strongly dislike my room thermostats - they're loud when switching, difficult to use, and are very feature-light. By this I mean, they turn on and off with temperature in a room. To fix this, I would hardwire the mains wires where OpenClock is at the moment, so the room thermostats are receiving power all the time, and install something like the Sonoff NSPanel. This would add so many more options into the rooms where the thermostats are mounted.
Parts
44| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 10K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R2, R3, R4, R14, R15, R16 |
| 3 | 10R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R8, R9, R10 |
| 3 | 75R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R5, R6, R7 |
| 3 | AOSS21319C | Package_TO_SOT_SMD:SOT-23 | Q1, Q2, Q3 |
| 3 | BAS521,115 | Diode_SMD:D_SOD-523 | D1, D2, D3 |
| 3 | G5LE-1 | Relay_THT:Relay_SPDT_Omron-G5LE-1 | K1, K2, K3 |
| 2 | 1 | MountingHole:MountingHole_3.2mm_M3_Pad | H1, H2 |
| 2 | 220uF | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | C2, C3 |
| 2 | 250V | Varistor:RV_Disc_D12mm_W3.9mm_P7.5mm | RV1, RV2 |
| 1 | 0.1uF Class X | Capacitor_THT:C_Rect_L18.0mm_W8.0mm_P15.00mm_FKS3_FKP3 | C1 |
| 1 | 100R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1 |
| 1 | Ch 1 Override | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | SW1 |
| 1 | Ch 2 Override | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | SW2 |
| 1 | Ch 3 Override | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | SW3 |
| 1 | Channel 1 | Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_3-G-5,08_1x03_P5.08mm_Vertical | J3 |
| 1 | Channel 2 | Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_3-G-5,08_1x03_P5.08mm_Vertical | J4 |
| 1 | Channel 3 | Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_3-G-5,08_1x03_P5.08mm_Vertical | J2 |
| 1 | Fuse | Fuse:Fuse_BelFuse_0ZRE0100FF_L18.7mm_W5.1mm | F1 |
| 1 | HLK-PM12 | Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx | PS1 |
| 1 | L7805 | Package_TO_SOT_SMD:TO-252-3_TabPin2 | U2 |
| 1 | LOGO | Dvd:dvd | G*** |
| 1 | LOGO | Dvd:ocelot | G*** |
| 1 | LTV-847S | Package_DIP:SMDIP-16_W9.53mm | U3 |
| 1 | Mains | Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_3-G-5,08_1x03_P5.08mm_Vertical | J1 |
| 1 | Pico | MCU_RaspberryPi_and_Boards:RPi_Pico_SMD_TH | U1 |
| 1 | Thermal Fuse | Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_2-G-5,08_1x02_P5.08mm_Vertical | F2 |
Questions
How big is the HeatingController PCB?
It measures 81.3 × 82.6 mm and has 2 copper layers, 1.6 mm thick.
What parts does the HeatingController use?
44 parts, built around the HLK-PM12, L7805, LTV-847S and AOSS21319C. 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 HeatingController KiCad files?
From the dvd604/OpenClock repository on GitHub, at the commit this page was made from: the board is KiCad Project/heatingController.kicad_pcb and its schematic KiCad Project/heatingController.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the HeatingController design in my own project?
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers

- 2 layers70 × 76 mm

Control
Jochen0x90h/RoomControl
Smart home room controller based on nRF52840 with MQTT and and IEEE 802.15.4 radio support. Buttons and relays for lights and roller shutters can also be connected with a local bus using LIN physical layer
79 parts3 - 2 layers87.5 × 54 mm

- 2 layers46 × 77 mm

On off module x1
AlanCarvalhoEE/hap
Home Automation Platform with custom hardware and firmware (ESP8266), a Raspberry Pi–based server, and an Android client. Features modular IoT devices, TCP/IP and MQTT messaging, and a scalable system architecture.
40 parts1 - 2 layers151 × 68.5 mm

PCBProject
aditya02095/PCB-Design
Here are the gerber files for the digital frequency meter created using KiCAD
49 parts - 2 layers99 × 48.4 mm

- 2 layers130 × 115 mm

Tp4potencia
enriquewph/potenciatp4
Fuente Conmutada 50W 24V 2.4A de la cátedra Electrónica de Potencia - Grupo 3 - 5R2
88 parts - 2 layers102.4 × 83.1 mm

RoomLink
Escondol/Electiva-Meca
Este repositorio es para colocar tareas asignadas por el profesor Carlos Pichardos.
85 parts