

The Slave OpenTherm Shield (manufacturer part ID: slave_ot_shield) by DIYLESS is a communication interface designed to connect devices to OpenTherm systems. OpenTherm is a widely used protocol for communication between heating appliances (e.g., boilers) and control systems (e.g., thermostats). This shield enables efficient data exchange, making it ideal for smart home applications, energy management systems, and advanced heating control solutions.








| Parameter | Value |
|---|---|
| Operating Voltage | 5V (powered via Arduino or external source) |
| Communication Protocol | OpenTherm (Master-Slave) |
| Current Consumption | ~20mA |
| Operating Temperature | -20°C to 70°C |
| Dimensions | 68mm x 53mm (fits standard Arduino shields) |
| Compatibility | Arduino UNO, Mega, and similar boards |
| Safety Features | Galvanic isolation for safe operation |
The Slave OpenTherm Shield is designed to interface with an Arduino board. Below is the pin configuration:
| Pin Name | Arduino Pin Mapping | Description |
|---|---|---|
| OT_IN | D2 | OpenTherm input signal (from boiler or master) |
| OT_OUT | D3 | OpenTherm output signal (to boiler or master) |
| GND | GND | Ground connection |
| VCC | 5V | Power supply (5V) |
| LED1 | - | Status LED for communication activity |
| LED2 | - | Error indication LED |
Hardware Setup:
Software Setup:
Example Code: Below is an example Arduino sketch to read data from a boiler and send commands using the Slave OpenTherm Shield:
#include <OpenTherm.h> // Include the OpenTherm library
const int OT_IN_PIN = 2; // OpenTherm input pin
const int OT_OUT_PIN = 3; // OpenTherm output pin
OpenTherm ot(OT_IN_PIN, OT_OUT_PIN); // Initialize OpenTherm object
void setup() {
Serial.begin(9600); // Start serial communication
ot.begin(); // Initialize OpenTherm communication
Serial.println("Slave OpenTherm Shield Initialized");
}
void loop() {
// Check if data is available from the master (e.g., thermostat)
if (ot.isReady()) {
unsigned long request = ot.getRequest(); // Get the request from the master
unsigned long response = ot.buildResponse(request); // Build a response
ot.sendResponse(response); // Send the response back to the master
// Print the request and response for debugging
Serial.print("Request: ");
Serial.println(request, HEX);
Serial.print("Response: ");
Serial.println(response, HEX);
}
}
Note: Ensure the OpenTherm library is installed in your Arduino IDE before uploading the code.
| Issue | Possible Cause | Solution |
|---|---|---|
| No communication with the boiler | Incorrect wiring or loose connections | Verify all connections and pin mappings. |
| Error LED is ON | Protocol mismatch or hardware fault | Check if the connected device supports OpenTherm. Ensure the shield is functioning properly. |
| Arduino not responding | Insufficient power supply | Ensure the Arduino and shield are powered correctly. |
| Data corruption or noise | Electrical interference | Use shielded cables for OT_IN and OT_OUT. |
Can I use this shield with a Raspberry Pi?
What is the maximum cable length for OT_IN and OT_OUT?
Is the shield compatible with all OpenTherm devices?
How do I update the firmware on the shield?
By following this documentation, you can effectively integrate the Slave OpenTherm Shield into your projects and take full advantage of its capabilities.