Skip to the content
PCBKitNew board
2 layers81.3 × 82.6 mmHeatingController, the printed circuit board in 3D

HeatingController

dvd604/OpenClock

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

5

README

README.md

OpenClock

Raspberry Pi Pico / ESPHome based central heating controller

image

image

image

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:

  1. 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.
  2. 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
QtyValueFootprintReferences
610KResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2, R3, R4, R14, R15, R16
310RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR8, R9, R10
375RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR5, R6, R7
3AOSS21319CPackage_TO_SOT_SMD:SOT-23Q1, Q2, Q3
3BAS521,115Diode_SMD:D_SOD-523D1, D2, D3
3G5LE-1Relay_THT:Relay_SPDT_Omron-G5LE-1K1, K2, K3
21MountingHole:MountingHole_3.2mm_M3_PadH1, H2
2220uFResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderC2, C3
2250VVaristor:RV_Disc_D12mm_W3.9mm_P7.5mmRV1, RV2
10.1uF Class XCapacitor_THT:C_Rect_L18.0mm_W8.0mm_P15.00mm_FKS3_FKP3C1
1100RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1
1Ch 1 OverrideConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalSW1
1Ch 2 OverrideConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalSW2
1Ch 3 OverrideConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalSW3
1Channel 1Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_3-G-5,08_1x03_P5.08mm_VerticalJ3
1Channel 2Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_3-G-5,08_1x03_P5.08mm_VerticalJ4
1Channel 3Connector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_3-G-5,08_1x03_P5.08mm_VerticalJ2
1FuseFuse:Fuse_BelFuse_0ZRE0100FF_L18.7mm_W5.1mmF1
1HLK-PM12Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxxPS1
1L7805Package_TO_SOT_SMD:TO-252-3_TabPin2U2
1LOGODvd:dvdG***
1LOGODvd:ocelotG***
1LTV-847SPackage_DIP:SMDIP-16_W9.53mmU3
1MainsConnector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_3-G-5,08_1x03_P5.08mm_VerticalJ1
1PicoMCU_RaspberryPi_and_Boards:RPi_Pico_SMD_THU1
1Thermal FuseConnector_Phoenix_MSTB:PhoenixContact_MSTBVA_2,5_2-G-5,08_1x02_P5.08mm_VerticalF2

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 layersIot switch, the printed circuit board in 3D

    Iot switch

    anindyamitra15/Aguamenti-hardware

    23 parts
  • 2 layers70 × 76 mmControl, the printed circuit board in 3D

    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 mmOpenBrewer, the printed circuit board in 3D

    OpenBrewer

    martinr6b/OpnBrewer

    coffee machine modification to make them smart

    25 parts2
  • 2 layers46 × 77 mmOn off module x1, the printed circuit board in 3D

    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 mmPCBProject, the printed circuit board in 3D

    PCBProject

    aditya02095/PCB-Design

    Here are the gerber files for the digital frequency meter created using KiCAD

    49 parts
  • 2 layers99 × 48.4 mmPCB DBFS 1, the printed circuit board in 3D

    PCB DBFS 1

    Arjunprabhakaran/PCB

    30 parts
  • 2 layers130 × 115 mmTp4potencia, the printed circuit board in 3D

    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 mmRoomLink, the printed circuit board in 3D

    RoomLink

    Escondol/Electiva-Meca

    Este repositorio es para colocar tareas asignadas por el profesor Carlos Pichardos.

    85 parts