Skip to the content
2 layers68.6 × 53.3 mmArduino OpenTherm shield, the printed circuit board in 3D

Arduino OpenTherm shield

michpro/Arduino_OpenTherm_shield1

Arduino hardware shield to send and receive data from OpenTherm devices

Size
68.6 × 53.3 mm
Copper layers
2
Thickness
1 mm
Parts
55
Nets
55
Pads
150
Tracks, vias
226, 86
Pours
6
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
1 Apr 2025
Updated
14 Sep 2025

Overview

Arduino OpenTherm shield is an open-source printed circuit board by michpro, from the michpro/Arduino_OpenTherm_shield repository on GitHub, published under the CERN-OHL-P-2.0 licence. It is a 2-layer board of 68.6 × 53.3 mm with 55 parts on 55 nets, routed with 226 tracks and 86 vias.

It is built around the MT3540-F23, LTV-817S and 1N4148W, with the MMBT2907A, MMBT2222A and 1N5819W among its other parts. Its parts include 18 resistors, 12 diodes, 6 transistors, 4 capacitors and 3 ICs. It belongs with the microcontroller boards boards of this library.

Main components

6

README

README.md

Arduino UNO OpenTherm Shield


Overview

The Arduino OpenTherm Shield is an open-source hardware interface designed to enable an Arduino microcontroller to communicate with heating systems using the OpenTherm protocol. OpenTherm is a point-to-point communication protocol commonly used in modern heating systems for efficient control and monitoring. This shield provides the necessary voltage conversion, electrical isolation, and signal conditioning to interface the Arduinos 5V or 3.3V logic with the OpenTherm bus, which typically operates at higher voltages (24V).

Features

  • OpenTherm slave interface to communicate with a boiler
  • OpenTherm master interface to communicate with a thermostat
  • can implement master, slave and gateway modes
  • built-in (3.3-5V) to 24V DC-DC step up converter
  • Arduino UNO compatible shield

This work is based on otgw.tclcode.com project.


Schematic diagram

wiring diagram

Module visualisation

(click on the image to see the 3D model)

Arduino UNO OpenTherm Shield

Assembly

Interactive BOM and placement

For Arduino UNO:

  • JP1 jumper – leave in the Auto position (Vcc from IOREF).

For WeMos D1 UNO:

  • JP1 jumper - this board is not fully compatible with Arduino specifications - the IOREF pin on this board should have a voltage of 3.3V, but it has 5V. Therefore, cut the default jumper between the Auto and Vcc pads and use a drop of tin to connect the Vcc pad to 3.3V.
    You can also modify the WeMos D1 UNO so that the IOREF pin has the correct voltage of 3.3V.

Other boards:

  • This shield should also be compatible with other boards. You only need to check the correct voltage on the IOREF pin (and possibly make a change as for WeMos D1 UNO) and, if necessary, adjust the software to the board definition.

Production files

Production files can be found here.


Testing out the hardware

Below are the start-up instructions for the "shield_test.ino" Arduino program, a diagnostic tool designed to test and validate the electrical and communication integrity between a boiler and thermostat circuits on the OpenTherm shield. These instructions guide you through the process step-by-step, ensuring you can verify your hardware setup correctly.

Prerequisites

  • Arduino Board: Use an AVR family board (e.g., Arduino UNO).
  • OpenTherm Shield: Ensure it is properly connected to the Arduino.
  • Computer: Equipped with Arduino IDE or a serial monitor software.
  • Multimeter: Required for measuring voltages and currents.
  • Two Wires: Needed to connect the BOILER and THERM terminals during testing.

Instructions

  1. Upload the Program

    • Load the "shield_test.ino" program onto your Arduino board (Arduino UNO preffered) using the Arduino IDE.
      If necessary, adjust the pins used in the programme.
  2. Open Serial Monitor

    • Launch the serial monitor in the Arduino IDE or your preferred serial terminal software.
    • Set the baud rate to 115200.
  3. Initial Setup

    • Disconnect the 'THERM' and 'BOILER' terminals from each other if they are connected.
    • Check the LEDs on the shield:
      • 'PWR' and 'RxT' LEDs should be lit.
      • 'RxB' LED should be off.
    • The serial monitor will display a prompt. If the LED statuses match, type y and press Enter to proceed.
  4. Voltage Measurement 1

    • Use a multimeter to measure the voltage between the +24V test point and GND.
    • Expected range: 23.5V to 24.5V.
    • If within range, type y in the serial monitor to proceed.
  5. Voltage Measurement 2

    • Measure the voltage between the T+ test point and GND.
    • Expected value: Approximately 24V.
    • If correct, type y to proceed.
  6. Current Measurement 1

    • Measure the current flowing between T+ and GND.
    • Expected range: 5mA to 9mA.
    • Verify that the RxT LED is not lit during this measurement.
    • If correct, type y to proceed.
  7. Activate MASTER-OUT and Current Measurement 2

    • The program will activate the 'MASTER-OUT' line (you’ll see a message in the serial monitor).
    • Measure the current between T+ and GND again.
    • Expected range: 17mA to 23mA.
    • Ensure the RxT LED remains not lit.
    • If correct, type y to proceed.
  8. Connect Terminals and Voltage Measurement 3

    • Connect the BOILER and THERM terminals using two wires (polarity does not matter).
    • Measure the voltage between test points B1 and B2.
    • Expected range: 15V to 18V.
    • If within range, type y to proceed.
  9. Check RxB LED

    • The program will activate 'MASTER-OUT' again.
    • Observe the 'RxB' LED; it should light up.
    • If it does, type y to proceed.
  10. Activate SLAVE-OUT and Voltage Measurement 4

    • The program will activate the 'SLAVE-OUT' line.
    • Check that the RxT LED stops lighting up.
    • Measure the voltage between B1 and B2 again.
    • Expected range: 5V to 7V.
    • If correct, type y to proceed.
  11. Test Result

    • If all steps are completed successfully, the serial monitor will display:
      text
      *****************
      *  TEST PASSED  *
      *****************
    • If any step fails, it will show:
      text
      *****************
      * TEST FAIL !!! *
      *****************
  12. Continuous Testing (if passed)

    • If the test passes, the program will enter a continuous testing mode.
    • It will repeatedly check communication between the boiler and thermostat, printing:
      • "Boiler inbound, thermostat outbound ... OK" or "Failed" with a reason.
      • "Boiler outbound, thermostat inbound ... OK" or "Failed" with a reason.

Notes

  • Test Points and LEDs: Ensure you correctly identify the test points (+24V, T+, GND, B1, B2) and LEDs (PWR, RxT, RxB) on the OpenTherm shield.
  • Safety: Exercise caution when measuring voltages and currents to avoid short circuits.
  • Troubleshooting: If a measurement falls outside the expected range:
    • Double-check your connections and multimeter settings.
    • Retry the step. Persistent issues may indicate a problem with the shield or setup.

Follow these instructions carefully to test and validate your OpenTherm shield setup. Each step requires confirmation via the serial monitor, so keep it open and active throughout the process. Successful completion ensures your boiler and thermostat circuits are functioning correctly.


Software


Reporting bugs

Create an issue on GitHub


License

Copyright © 2025 Michal Protasowicki

Hardware

  • Hardware part of this project is released under CERN Open Hardware Licence Version 2 - Permissive.

    License: CERN-OHL-P-2.0

Software

  • Software part of this project is released under MIT Licence.

    License: MIT


Support

If You find my projects interesting and You wanted to support my work, You can give me a cup of coffee or a keg of beer :)

PayPal Direct     ko-fi     Coinbase

Parts

55
QtyValueFootprintReferences
41N4148Wfootprints:D_SOD-123D2, D3, D4, D5
4MMBT2907Afootprints:SOT-23Q1, Q2, Q3, Q4
2100footprints:R_0603_1608MetricR5, R8
210kfootprints:R_0603_1608MetricR7, R12
220footprints:R_0603_1608MetricR10, R11
2LTV-817Sfootprints:SMDIP-4_W9.53mmU2, U3
2MMBT2222Afootprints:SOT-23Q5, Q6
1+24Vfootprints:TestPoint_Pad_D2.0mmTP3
1100nfootprints:C_0603_1608MetricC3
110ufootprints:C_0805_2012MetricC4
110ufootprints:C_0603_1608MetricC1
110uHfootprints:Inductor_4.2x4.4mmL1
113Vfootprints:D_SOD-123D7
113kfootprints:R_0603_1608MetricR2
1150kfootprints:R_0603_1608MetricR13
11N5819Wfootprints:D_SOD-123D1
11kfootprints:R_0603_1608MetricR14
11k5footprints:R_0603_1608MetricR18
11k8footprints:R_0603_1608MetricR16
1220footprints:R_0603_1608MetricR4
122pfootprints:C_0603_1608MetricC2
1240kfootprints:R_0603_1608MetricR1
1330footprints:R_0603_1608MetricR3
133kfootprints:R_0603_1608MetricR9
14V3footprints:D_SOD-123D8
14V7footprints:D_SOD-123D6
14k7footprints:R_0603_1608MetricR15
1560footprints:R_0603_1608MetricR6
15k1footprints:R_0603_1608MetricR17
18V2footprints:D_SOD-123D9
1Arduino UNO R3 Shieldfootprints:Arduino_UNO_R3_WithMountingHoles_ProfiledA1
1B1footprints:TestPoint_Pad_D2.0mmTP5
1B2footprints:TestPoint_Pad_D2.0mmTP6
1BOILERfootprints:Altech_AK100_1x02_P5.00mmJ1
1GNDfootprints:TestPoint_Pad_D2.0mmTP2
1Logo_Open_Hardware_Smallfootprints:OSHW-Logo2_7.3x6mm_SilkScreenLOGO3
1MT3540-F23footprints:SOT-23-5U1
1PWRfootprints:LED_0805_2012MetricD10
1RxBfootprints:LED_0805_2012MetricD11
1RxTfootprints:LED_0805_2012MetricD12
1T+footprints:TestPoint_Pad_D2.0mmTP4
1THERMfootprints:Altech_AK100_1x02_P5.00mmJ2
1VCCfootprints:TestPoint_Pad_D2.0mmTP1
1VCCfootprints:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mmJP1

Similar boards

  • 2 layers25.4 × 57.2 mmOpenTherm Click, the printed circuit board in 3D

    OpenTherm Click

    michpro/mikroBUS

    Collection of add-on boards in mikroBUS™ standard

    58 parts5CERN-OHL-P-2.0
  • 2 layers68.6 × 53.3 mmArduino OpenTherm shield, the printed circuit board in 3D

    Arduino OpenTherm shield

    anway0404/Arduino_OpenTherm_shield

    Arduino hardware shield to send and receive data from Opentherm devices

    54 parts3CERN-OHL-P-2.0
  • 4 layers45 × 62 mmDeye jk can gateway, the printed circuit board in 3D

    Deye jk can gateway

    butchja/esphome-jk-bms-can-PCB

    HW platform for https://github.com/Ackmaniac/esphome-jk-bms-can

    77 parts
  • 2 layers25.9 × 25.7 mmRB095-9664HDDAG01, the printed circuit board in 3D

    RB095-9664HDDAG01

    cnlohr/cnhardware

    My dumping grounds for all my kicad projects and random hardware bringup.

    37 parts114
  • 2 layers63.8 × 70.9 mmDelSolClock, the printed circuit board in 3D

    DelSolClock

    Marcus10110/DelSolClock

    This is a project to replace the clock in my car with an ESP32 and a small display.

    94 parts3
  • 2 layers188.4 × 185 mmPrototipo, the printed circuit board in 3D

    Prototipo

    DeniseViltes/Tesis

    Repositorio personal del TIF

    189 parts1
  • 2 layers38.5 × 49 mmKISRAK M1, the printed circuit board in 3D

    KISRAK M1

    Nec0ti/KISRAK-M1

    A high-performance, logic-level H-Bridge motor driver. Features discrete MOSFET design with passive hardware dead-time protection and 3.3V logic compatibility.

    35 parts1AGPL-3.0
  • 2 layers74.4 × 30.8 mmSk003-output, the printed circuit board in 3D

    Sk003-output

    mirdej/synkie

    The Synkie is a modular open source analog video processor, developed by Michael Egger, Max Egger and Flo Kaufmann

    83 parts47

Questions

How big is the Arduino OpenTherm shield PCB?

It measures 68.6 × 53.3 mm and has 2 copper layers, 1 mm thick.

What parts does the Arduino OpenTherm shield use?

55 parts, built around the MT3540-F23, LTV-817S, 1N4148W and MMBT2907A. 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 Arduino OpenTherm shield KiCad files?

From the michpro/Arduino_OpenTherm_shield repository on GitHub, at the commit this page was made from: the board is Arduino_OpenTherm_shield.kicad_pcb and its schematic Arduino_OpenTherm_shield.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Arduino OpenTherm shield design in my own project?

Its repository publishes it under the CERN-OHL-P-2.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).