电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>将您的中央供暖连接到Arduino

将您的中央供暖连接到Arduino

2022-11-21 | zip | 0.11 MB | 次下载 | 免费

资料介绍

描述

您有没有想过您的锅炉何时以及为什么要运行并为您的家供暖?你想用 Arduino 自动化你的加热系统吗?OpenTherm 防护罩专为您设计。它将允许您使用 Arduino 监控和控制您的 OpenTherm 锅炉。

 
pYYBAGN2_gGAGn4fAAMJrso1ogI164.png
可能的 OpenTherm 屏蔽设置

背景

去年,我想将我的燃气加热锅炉与壁炉调节器结合起来。我的 BAXI 锅炉和恒温器非常智能,所以我很自然地想扩展锅炉来控制壁炉。我厌倦了所有那些允许我这样做的昂贵的官方 BAXI 扩展。

因此,我为自己构建了一个OpenTherm 网关,它允许我拦截恒温器和锅炉之间的通信,并放置一个可以点燃锅炉或使用壁炉热量的算法——[关于调节器的更多信息]。

由于有很多人想要类似的东西,我决定创建一个模块——Arduino shield——这将使任何人都可以很容易地控制他们的房子供暖。

盾牌有什么用?

  • 使用现有的 OpenTherm 恒温器创建您自己的基于 Arduino 的锅炉。最不可能有人会这样做,但这是可能的。
  • 使用防护罩构建您自己的基于 Arduino 的恒温器,以完全接管您的锅炉和家庭供暖。非常适合家庭自动化。此应用只需要一个外部 5V 电源
  • 在现有锅炉和恒温器之间的管道中放置一个 OpenTherm 防护罩,并创建一个监视器来观察锅炉何时以及如何为您的家供暖。您甚至可以拦截通信,例如无线控制加热。
  • OpenTherm 允许拥有一个与锅炉和恒温器通信的中间人(网关)设备。这就是我使用屏蔽创建OpenTherm 调节器的方式

可用数据和命令

  • 室内温度
  • 室温设定点
  • 加热水温度
  • 回水温度
  • 生活热水温度*
  • 生活热水压力*
  • 生活热水流量*
  • 室外温度*
  • 锅炉状态(运行/未运行/错误)
  • 调制电平
  • 排气温度*
  • 统计锅炉运行了多长时间

* 请注意,这些仅在您的锅炉配备了必要的附件时可用

建造盾牌

电子电路基于使用 PIC 微控制器OpenTherm 网关项目。我已经为 Arduino 进行了调整,并创建了一个很好的 Arduino UNO 兼容布局。

 
pYYBAGN2_guAfFdBAADn4SHGSVo283.png
OpenTherm 屏蔽示意图
 

您可以使用上述原理图和Gerber 文件自行创建屏蔽。我正在通过PCBWay制造我的电路板- PCB Prototype the Easy Way。您可以让他们在一周内创建和运送这些漂亮的蓝色美女。蓝色阻焊层与基础绿色同价!我也喜欢他们的客户服务,没有什么问题。或者您可以订购预先包装好的DIY 套件

 
poYBAGN2_g6ABElAAAN1l8REBTc199.jpg
 

使用防护罩创建恒温器

第一个示例将向您展示如何使用防护罩创建您自己的自定义恒温器。你需要什么:

  • OpenTherm 锅炉
  • Arduino UNO、WeMos D1 或任何 Arduino UNO 兼容板。该板的唯一要求是支持引脚 2 和 3 上的引脚中断。
  • 5V电源。在此设置中不需要 24V 电源,因为只有在与恒温器通信时才需要它。
 
poYBAGN2_hKAFb06AAKPTYWxQJA797.png
OpenTherm 护罩作为恒温器
 

如上图所示将您的锅炉与 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 电源

 

 
pYYBAGN2_gGAGn4fAAMJrso1ogI164.png
OpenTherm shield 作为网关/调节器
 

如上图所示,将屏蔽连接到锅炉和恒温器之间的总线。您可以看到它中断了这两个设备之间的总线。现在您的通信中断了,除非您将网关软件上传到您的 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 调节器中向您展示该硬件的更多实际用法


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费