资料介绍
描述
您有没有想过您的锅炉何时以及为什么要运行并为您的家供暖?你想用 Arduino 自动化你的加热系统吗?OpenTherm 防护罩专为您设计。它将允许您使用 Arduino 监控和控制您的 OpenTherm 锅炉。
背景
去年,我想将我的燃气加热锅炉与壁炉调节器结合起来。我的 BAXI 锅炉和恒温器非常智能,所以我很自然地想扩展锅炉来控制壁炉。我厌倦了所有那些允许我这样做的昂贵的官方 BAXI 扩展。
因此,我为自己构建了一个OpenTherm 网关,它允许我拦截恒温器和锅炉之间的通信,并放置一个可以点燃锅炉或使用壁炉热量的算法——[关于调节器的更多信息]。
由于有很多人想要类似的东西,我决定创建一个模块——Arduino shield——这将使任何人都可以很容易地控制他们的房子供暖。
盾牌有什么用?
- 使用现有的 OpenTherm 恒温器创建您自己的基于 Arduino 的锅炉。最不可能有人会这样做,但这是可能的。
- 使用防护罩构建您自己的基于 Arduino 的恒温器,以完全接管您的锅炉和家庭供暖。非常适合家庭自动化。此应用只需要一个外部 5V 电源。
- 在现有锅炉和恒温器之间的管道中放置一个 OpenTherm 防护罩,并创建一个监视器来观察锅炉何时以及如何为您的家供暖。您甚至可以拦截通信,例如无线控制加热。
- OpenTherm 允许拥有一个与锅炉和恒温器通信的中间人(网关)设备。这就是我使用屏蔽创建OpenTherm 调节器的方式。
可用数据和命令
- 室内温度
- 室温设定点
- 加热水温度
- 回水温度
- 生活热水温度*
- 生活热水压力*
- 生活热水流量*
- 室外温度*
- 锅炉状态(运行/未运行/错误)
- 调制电平
- 排气温度*
- 统计锅炉运行了多长时间
* 请注意,这些仅在您的锅炉配备了必要的附件时可用
建造盾牌
电子电路基于使用 PIC 微控制器的OpenTherm 网关项目。我已经为 Arduino 进行了调整,并创建了一个很好的 Arduino UNO 兼容布局。
您可以使用上述原理图和Gerber 文件自行创建屏蔽。我正在通过PCBWay制造我的电路板- PCB Prototype the Easy Way。您可以让他们在一周内创建和运送这些漂亮的蓝色美女。蓝色阻焊层与基础绿色同价!我也喜欢他们的客户服务,没有什么问题。或者您可以订购预先包装好的DIY 套件。
使用防护罩创建恒温器
第一个示例将向您展示如何使用防护罩创建您自己的自定义恒温器。你需要什么:
- OpenTherm 锅炉
- Arduino UNO、WeMos D1 或任何 Arduino UNO 兼容板。该板的唯一要求是支持引脚 2 和 3 上的引脚中断。
- 5V电源。在此设置中不需要 24V 电源,因为只有在与恒温器通信时才需要它。
如上图所示将您的锅炉与 Arduino OpenTherm 屏蔽连接,将屏蔽连接到您的 Arduino 上,您就可以开始编程了。Arduino OpenTherm IO 库包含以下示例,向您展示如何与锅炉进行通信。
void loop() {
if (OPENTHERM::isIdle()) {
message.type = OT_MSGTYPE_READ_DATA;
message.id = OT_MSGID_SLAVE_CONFIG;
message.valueHB = 0;
message.valueLB = 0;
Serial.print("-> ");
OPENTHERM::printToSerial(message);
Serial.println();
OPENTHERM::send(BOILER_OUT, message); // send message to boiler
}
else if (OPENTHERM::isSent()) {
OPENTHERM::listen(BOILER_IN, 800); // wait for boiler to respond
}
else if (OPENTHERM::getMessage(message)) { // boiler responded
OPENTHERM::stop();
Serial.print("<- ");
OPENTHERM::printToSerial(message);
Serial.println();
Serial.println();
delay(100); // minimal delay before next communication
}
else if (OPENTHERM::isError()) {
OPENTHERM::stop();
Serial.println("<- Timeout");
Serial.println();
}
}
首先,使用OPENTHERM::isIdle检查是否没有挂起的命令。如果没有,您可以发送下一个。在此示例中,您请求从属配置标志。如果命令成功发送,您必须开始使用OPENTHERM::listen调用监听来自锅炉的回复。方法OPENTHERM::getMessage只要有来自从站的待处理回复,并且如果出现问题或发生超时,方法OPENTHERM::isError 就会返回 true。该库包含 OpenTherm 消息结构,其中包含来自协议的解码数据,因此您根本不需要关心格式。签出源代码这是有据可查的。所有类型的消息都列在常量中,或者您可以查看OpenTherm 文档。
struct OpenthermData {
byte type;
byte id;
byte valueHB;
byte valueLB;
float f88();
void f88(float value);
uint16_t u16();
void u16(uint16_t value);
int16_t s16();
void s16(int16_t value);
}
使用屏蔽创建监视器、网关或调节器
第二个示例将向您展示如何将中间人设备连接到 OpenTherm 总线以监控锅炉和恒温器或拦截它们的通信。你需要什么:
- OpenTherm 恒温器
- 24V 500mA 电源
如上图所示,将屏蔽连接到锅炉和恒温器之间的总线。您可以看到它中断了这两个设备之间的总线。现在您的通信中断了,除非您将网关软件上传到您的 Arduino 中,该软件会将命令和回复从恒温器转发到锅炉,反之亦然。在Arduino OpenTherm IO 库中再次有一个很好的例子。
void loop() {
if (mode == MODE_LISTEN_MASTER) {
if (OPENTHERM::isSent() || OPENTHERM::isIdle() || OPENTHERM::isError()) {
OPENTHERM::listen(THERMOSTAT_IN);
}
else if (OPENTHERM::getMessage(message)) {
Serial.print("-> ");
OPENTHERM::printToSerial(message);
Serial.println();
OPENTHERM::send(BOILER_OUT, message); // forward message to boiler
mode = MODE_LISTEN_SLAVE;
}
}
else if (mode == MODE_LISTEN_SLAVE) {
if (OPENTHERM::isSent()) {
OPENTHERM::listen(BOILER_IN, 800); // reply need to be send back in 800ms
}
else if (OPENTHERM::getMessage(message)) {
Serial.print("<- ");
OPENTHERM::printToSerial(message);
Serial.println();
Serial.println();
OPENTHERM::send(THERMOSTAT_OUT, message); // send message back to thermostat
mode = MODE_LISTEN_MASTER;
}
else if (OPENTHERM::isError()) {
mode = MODE_LISTEN_MASTER;
Serial.println("<- Timeout");
Serial.println();
}
}
}
网关只是开始监听恒温器命令。如果检测到请求,它将对其进行解析并将其转发给锅炉。网关现在将开始监听锅炉回复。如果在 800 毫秒内收到回复,网关会将回复转发回恒温器。恒温器和锅炉都不会知道它们之间有什么额外的东西。正如您所看到的,有足够的空间来编写您自己的代码,这些代码可以捕获消息并从中读取有用的信息(状态、温度、压力、统计数据……)。您甚至可以覆盖或丢弃您不喜欢的请求或回复。
如您所见,与您的智能供暖系统进行通信并使其更加智能非常容易。在下一篇文章中,我将在我的OpenTherm 调节器中向您展示该硬件的更多实际用法。
- 将LCD模块与Arduino连接
- 将伺服电机连接到Arduino
- 将量子计算机连接到Arduino
- 如何安全地将Arduino MKR GSM 1400板与GCP IoT Core结合使用
- 将您的Adafruit Feather RP2040连接到物联网
- 将蜂鸣器与Arduino连接
- 如何将arduino串口链接到python
- 如何将Arduino以太网连接到物联网云
- 如何将DHT11连接到Arduino并提供示例代码
- Arduino通过OTG电缆连接到Android USB
- 将您的Magicbit(ESP32)连接到thingsboard
- 使用Visuino程序将SSD1331 OLED和ST7789显示器连接到Arduino
- 将任何VFD串行显示器连接到Arduino的最简单方法
- 将LCD屏幕连接到Arduino mega的最简单方法
- 如何将Arduino板连接到的计算机上的30个项目 16次下载
- 逆变器连接到断路器步骤,位于面板中央 474次阅读
- 中央供热泵开关电路原理图讲解 1150次阅读
- 连接到您最喜欢的数据库集 529次阅读
- 连接到您的图像采集设备 685次阅读
- 将Agere超级映射器设备系列连接到达拉斯T3 LIU 607次阅读
- I²C接口将小型闪存卡连接到微控制器 802次阅读
- 如何将LIU/成帧器连接到双极性或NRZ模式器件 805次阅读
- 变频器如何在接线图中连接到PLC? 1543次阅读
- 使用AXI4-Lite将Vitis HLS创建的IP连接到PS 736次阅读
- 如何设置Arduino IoT将消息发送到云板显示器 2121次阅读
- 使用Wii nunchuk手柄连接Arduino控制伺服电机的方法 3697次阅读
- Arduino Ethernet扩展板产品介绍(意大利原装正版) 5122次阅读
- 如何应用可编程逻辑器件PLD将高速视频内容连接到视频播放器 1445次阅读
- 太阳能热水供暖系统的组成 3206次阅读
- arduino连接显示屏方法详解 4.7w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多