基于arduino esp8266的恒温器设计方案

发布者:温馨时光最新更新时间:2022-11-17 来源: elecfans关键字:arduino  esp8266  恒温器 手机看文章 扫描二维码
随时随地手机看文章

你是否厌倦了普通的 Junkers/Bosch 室内恒温器?是时候升级了!

介绍

忙碌了一天,回到温暖舒适的家,这种感觉确实让人心往神驰!多年来,我的家里一直使用的是一台 Junkers (Bosch) 燃气锅炉,为壁挂式散热器面板提供热水。


得益于 ESP8266 和 Amazon Alexa,现在可以从任何地方甚至通过语音控制中央供暖系统!


一些现代燃气锅炉对燃气锅炉和房间控制单元之间的接口采用了开放标准(OpenTherm),但在我的安装中,该接口是制造商专有的。此处显示的解决方案取代了 Junkers (Bosch) TW2 房间控制单元或任何兼容的单元。


背景

燃气加热器是一种具有天气补偿功能的调节燃气锅炉,由基本房间控制单元控制。与开/关恒温器相反,加热控制是通过精确控制循环回路中的水温来实现的,从而通过散热器面板释放到房屋中的热能。水温受 TW2 房间控制单元的影响,室外温度由温度传感器测量。

pYYBAGMMc--AMVt2AAI0mdNrlRY973.png

图为锅炉用户手册中的加热曲线。室外温度 (AT) 越低,水温设定点 (VT) 就越高,以补偿通过房屋外壳的更大热量损失。

pYYBAGMMc-yAPpSFAAEQNkWF0bQ286.png

燃气锅炉的控制系统试图通过调制以尽可能少的燃气使用量来达到和保持要求的水温。这是制造商的专有技术,我们不会干涉。

现有的房间控制单元由一个选择恒温器模式的开关、一个用于增加/减少水温设定点的旋钮(电位器)和一些电阻器组成。现在的情况主要是:电位器磨损了,并向燃气锅炉产生了异常的控制信号。所以会突然感觉到莫名其妙变热了!


概念

控制单元有一个简单的 2 线制燃气锅炉接口,没有有源组件或处理器。它本质上是一个可变电阻。逆向工程非常简单:燃气锅炉通过电线发送固定电流,并测量控制单元电阻产生的输出电压。所以我们需要的是一个精确控制的电压源


我没有使用数模转换器 (DAC),而是选择使用 esp8266 的内部 sigma-delta 源,据报道这是一个隐藏的功能,但在 arduino-esp8266 平台内核中尚不支持。它是一个高频 PWM 信号,具有 256 个离散占空比步长,对于此应用来说绰绰有余。使用 RC 低通滤波器,PWM 信号被平滑为 DC 信号。Arduino AnalogWrite 不适合,它的频率太低,然后 RC 滤波器会在输出信号上留下相当大的纹波。

poYBAGMMc-iAJ_lNAADckEds8Yc220.png

通过射极跟随器配置中的电阻分压器网络和 PNP 晶体管电路,我们获得了适用于该应用的有效范围 (0.6V 。.1.02V) 的输出信号。

构建

电子电路可以很容易地构建在一块单面穿孔板上,非常适合 100x60x25mm 的项目盒。

poYBAGMMc-OAIyCEAANYAYw5Fhc242.png

Wemos 板使用2.54mm 母头;这样模块可以在必要时轻松插入和拔出。

对于电源,我使用了一个可调 DC/DC 转换器(降压),因为我可以在恒温器电缆中的 2 根备用电线上使用 24 VDC 电源,但任何其他稳定的 3.3V 电源都可以。


将 Wemos 板插入其接头之前调整 DC/DC 模块的输出电压

使用约 15 厘米长的电线将 OLED 显示屏、电容式触摸按钮和温度/湿度传感器连接到电路板:这些组件必须在构建结束时粘在项目盒的前壳上几滴热胶。因此,请确保将所有电线焊接到这些组件的背面。


注意:OLED 模块带有一个预焊接的接头,小心地拆焊它,不要损坏 oled 的玻璃。


接下来是电容式触摸按钮,效果很好,它们粘在项目盒的内部,通过塑料外壳检测触摸。它们可以在一系列电压下工作,但这里是 3.3V,因为 ESP8266 I/O 是 3.3V。


模块上有 2 个焊盘可将行为更改为低/高电平有效,或开关模式与切换模式;我使用了标准配置中的模块:高电平有效和开关。


为了避免重影,我在模块电源输入附近添加了一个额外的 1uF 电容器。这里提供的草图不仅会检测按钮触摸,还会检测滑动手势。

pYYBAGMMc9-ARGIKAAOuybnpAW8387.png

接下来是项目框,它需要几个孔:背板上的一个用于穿过四根墙线(电源和恒温器控制),一个用于温度/湿度传感器的孔,以及一个用于显示器的方孔。一个基本的钻头、一把切割刀和对坚韧塑料的耐心就可以完成这项工作。


然后是构建中最有趣的部分:油漆工作。

油漆工作完成后,是时候用几滴热胶将 OLED 显示屏、触摸按钮和传感器粘合到位。

完成的项目盒足够轻,可以用两个蓝色大头钉固定在墙上,无需螺丝。

poYBAGMMc9uABPgeAAVUc3i7Lko699.png

Arduino软件

请先安装 arduino-esp8266 平台https://github.com/esp8266/Arduino

对于显示图形,我使用了 Daniel Eichhorn 为 esp8266 气象站所做的出色工作。该库实现了漂亮的帧动画,并支持位图。


https://github.com/ThingPulse/esp8266-oled-ssd1306

NessieGraphics.h 文件包含草图使用的所有位图。位图采用 xbm (X-Bitmap) 格式,一种基于文本的格式,可以将其剪切和粘贴到头文件中,并与您的代码一起编译。如果您打算创建自己的自定义 xbm 位图,GIMP 是 goto 工具:在 GIMP 中打开任何图像文件,调整到预期的像素数,然后保存为 xbm 格式。


arduino 草图将连接到 Amazon AWS IOT 服务。亚马逊提供了一些设置此连接的选项,请参阅此链接:https ://docs.aws.amazon.com/iot/latest/developerguide/protocols.html

我选择使用客户端证书作为身份验证的 MQTT 协议,在端口 443 上。要使此连接正常工作,必须另外安装 Pubsubclient MQTT 库(转到https://github.com/knolleary/pubsubclient,或直接从在 Arduino IDE 中)。用于设置 TLS 1.2 连接的所有其他库已经是 arduino-esp8266 平台的一部分。


在正常工作之前,还有一些事情要做:

在 .ino 文件中填写您的 WiFi 凭据。

应用一些库修复:文件位于 bitbucket 存储库中;按照自述文件的说明进行操作。

软件构建不需要任何特定参数。作为参考,我使用了 80MHz,1M+3M spiffs,没有调试。


亚马逊网络服务设置

如果您像我一样没有使用过亚马逊云服务的经验,那么这一步可能会花费大部分时间。这是一个复杂的设置,尽管逻辑布局合理,并且存在许多好的指南,亚马逊和其他人都有。

学习需要时间,但完全免费!亚马逊为其服务提供免费套餐,这在很大程度上足以建立这种 DIY 项目。IOT 服务在前 12 个月是免费的,只要您不从您的设备发送数百万条 mqtt 消息。


首先创建一个亚马逊账户和一个亚马逊开发者账户。您将需要开发者帐户来创建您的 Alexa 技能。


AWS - 第 1 部分:在 Amazon AWS IOT 上创建您的事 things

按照这些说明https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html

创建您的事项,创建设备证书,设置策略,将策略附加到设备证书,并将证书附加到您的事项。无需在此处进一步配置您的设备,或配置规则。我们不会在我们的应用程序中使用这些。


从截图中可以看出,我将我的东西命名为“stefaan_wemos”。该名称必须在 arduino 草图中进行硬编码。

poYBAGMMc9WARFvNAABm89duOSc985.png

创建设备证书后,将文件下载到您的 PC。

我们将使用 openssl 将客户端证书和私钥转换为二进制格式。在 Windows 上,您可能需要安装 openssl:https://wiki.openssl.org/index.php/Binaries。在命令行类型:

》 openssl x509 -in c7ddc08d09.cert.pem-out cert.der -outform DER

》 openssl rsa -in c7ddc08d09.private.key -out key.der-outform DER

用您的证书和私钥的确切名称替换输入文件名。将输出文件名保留为“cert.der”和“key.der” :这些文件必须存储在 SPIFFS 中,并且草图代码正在引用这些确切的文件名。

我没有使用 AWS IOT 的公钥和根 CA;我的代码没有验证 AWS IOT 服务器的身份。

在“交互”选项卡下,您将找到将您的 esp8266 硬件连接到亚马逊云所需的最后一个参数。将屏幕截图中红色显示的字符串复制到您的草图中,就可以编译和上传了。

poYBAGMMc9GAZgywAAGJ2tBxxh8225.png

如果一切顺利,esp8266 将向 AWS IOT 设备影子报告其状态。串行输出将帮助您识别潜在错误。

AWS IOT MQTT 客户端控制台可用于向 esp8266 设备发送 mqtt 测试消息。

在$aws/things/《yourthingname》/update上发布任何内容,您应该会看到消息在串行输出中回显。

或订阅$aws/things/《yourthingname》/update/accepted以接收来自 esp8266 的任何消息。

如果您没有收到来自 AWS IOT 的回调,那么很可能您忘记应用库修复,尤其是#define MQTT_MAX_PACKET_SIZE 768在PubSubClient.h.

如果 Serial 未显示“MQTT connecTIon ok”,请查看串行输出以获取线索。设置 TLS 连接可能存在问题:检查硬编码的 AWS 参数和证书/私钥文件。

AWS - 第 2 部分:设置 AWS Lambda 函数

按照本指南设置您的 lambda 函数:

https://docs.aws.amazon.com/lambda/latest/dg/get-started-create-funcTIon.html

确保在N. Virginia地区创建函数。该功能需要访问AWS IOT 和 CloudWatch 日志;确保相应地设置策略。检查您的视图是否类似于下面的屏幕截图。

注意您的 lambda 函数的 ARN;稍后在设置您的 Alexa Skill时,您将需要它。

将我的 bitbucket 存储库中的 javascript 代码index.js复制到代码窗口中。不要忘记使用您自己的事物名称和端点修改对象“iotData”和“thingName”。

var iotData = new AWS.IotData({endpoint: “aaaaaaaaaaaaaa.iot.eu-west-1.amazonaws.com”});

const thingName = “your-AWS-IOT-thingname”;

pYYBAGMMc8yAZ2YDAAEfMtbusaw279.png

bitbucket 存储库包含一些测试事件来测试您的 lambda 函数。转到“配置测试事件”并在文本字段中复制粘贴示例测试事件(json 代码)。测试事件允许测试与您在上一步中设置的 AWS IOT 影子的连接。

如果您的 esp8266 硬件仍处于连接状态,您会注意到测试事件将通过事物的设备影子有效地检索和修改恒温器设置。

如果到这工作依旧正常,距离启用语音的恒温器仅一步之遥!

AWS - 第 3 部分:创建您的 Alexa 智能家居技能

作为最后一步,我们将为恒温器创建语音控制。我们将使用 Alexa 智能家居框架。

pYYBAGMMc8eAEtQBAAC49K_dGGw591.png

从初始屏幕中,选择“智能家居”技能类型,并为您的技能命名。注意 ApplicaTIon id (amzn1.ask.skill.xxxx) :您需要将其添加到您在上一步中创建的 lambda 函数的触发器中。这将使您的技能能够调用您的 lambda 函数。

在“端点”部分,填写您之前创建的 lambda 函数的 ARN。您也可以在其他地区添加额外的 lambda 函数。

在配置屏幕中,设置帐户链接;这是 Alexa 智能家居技能的强制性步骤。我选择使用“登录亚马逊”;这是一个方便的选择,因为您不需要设置自己的身份验证服务器。

屏幕截图上以蓝色矩形显示的字段特定于您的技能和帐户链接。确保它们是正确的!如果您在执行帐户链接时从 Alexa 应用程序收到奇怪的错误,请回到这一步尝试找出您的错误!

现在是时候在 Alexa 商店中找到您的技能并激活它了。

pYYBAGMMc8SAPiFoAAGOJnL0obg335.png

帐户关联成功后,你可以使用任何 Alexa 语音服务来测试您的结果。

结语

如果你不想唤醒 Alexa,可以随时通过其内部 Web 界面控制恒温器。要将 Web 界面暴露给外界,一种可能的方法是使用 dyndns 服务,并在路由器中设置端口转发到 esp8266。

poYBAGMMc8CAe52GAACT6bYTozM082.png


关键字:arduino  esp8266  恒温器 引用地址:基于arduino esp8266的恒温器设计方案

上一篇:构建一个基于Raspberry Pi的蓝牙扬声器
下一篇:D类音频功率放大器详解

推荐阅读最新更新时间:2024-11-08 08:21

MSP430F149与ESP8266串口通信(上)
一、前言 针对网上90%的例程都是针对51单片机(或者STM32)和ESP8266模块进行串口通信,故开此帖记录MSP430与ESP8266对接的过程,希望大家不要走弯路,及时实现自己所需要的功能。本帖分为MSP430F149与ESP8266串口通信(上)、MSP430F149与ESP8266串口通信(中)和 MSP430F149与ESP8266串口通信(下)三部分,其中,在(上)部分主要介绍ESP8266的基本使用及利用 USB转串口工具 对ESP8266进行AT指令的操作;(中)部分主要介绍,MSP430F149与ESP8266进行对接的注意事项,主要讲解MSP430下发数据给ESP8266,并给出相应的电路原理图和代码,(
[单片机]
MSP430F149与<font color='red'>ESP8266</font>串口通信(上)
arduino测量土壤湿度自动浇水提醒
一、简介 1、传感器适用于土壤的湿度检测; 2、模块中蓝色的电位器是用于土壤湿度的阀值调节, 顺时针调节,控制的湿度会越大,逆时针越小 3、数字量输出D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测土壤湿度; 4、小板模拟量输出AO(0~1023)可以和AD模块相连,通过AD转换,可以获得土壤湿度更精确的数值; 二、土壤湿度传感器功能及特点 本传感器体积小巧化设计,携带方便,安装、操作及维护简单。 结构设计合理,不绣钢探针保证使用寿命。 外部以环氧树脂纯胶体封装,密封性好,可直接埋入土壤中使用,且不受腐蚀。 土质影响较小,应用地区广泛。 测量精度高,性能可靠,确保正常工作。
[嵌入式]
AVR开发 Arduino方法(一) 端口子系统
  Arduino UNO R3的主处理器ATMega328P上有3个8位的输入/输出端口,分别是PB,PC和PD。Arduino IDE提供的Blink示例可以帮助我们了解端口的数字输出功能: 1 // Blink.ino 2 int led = 13; 3 4 void setup() { 5 pinMode(led, OUTPUT); 6 } 7 8 void loop() { 9 digitalWrite(led, HIGH); 10 delay(1000); 11 digitalWrite(led, LOW); 12 delay(1000); 13 }   这个示例使Arduino开发
[单片机]
AVR开发 <font color='red'>Arduino</font>方法(一) 端口子系统
ESP8266模块与单片机的通信程序(硬件与软件详解)
初次接触ESP8266模块,说实话还是费了很大的劲,从硬件部分到软件部分,一个一个的问题对于我这个新手来说,确实有些吃力。不过还好,在51hei电子论坛有很多这方面的资料,也有很多很友好的人,感谢他们给予的帮助。 虽然我是一个菜鸟,但我还是希望和大家分享一下。时间比较仓促,代码也有很多不成熟的地方,希望能对初次接触这个模块的人有一些帮助。 1,硬件:USB转TTL是必需的,ESP8266模块,一般模块出厂就已经烧好了固件,拿到就可以直接发AT指令,AT指令的手册网上很多,可以自行百度。 硬件连接 TXD-RXD, RXD-TXD; 交叉连接,有的模块需要自己拉高一个引脚的电平,如图所示,电源最好是3.3V,模块发热很严
[单片机]
<font color='red'>ESP8266</font>模块与单片机的通信程序(硬件与软件详解)
TARDIS在电梯中的应用
在SparkFun公司,我们喜欢拿自己的产品互相开玩笑,总是喜欢寻找使办公室生活更加有趣的事情。然而,当每天乘坐电梯时,如何能够让电梯生活更加有意思呢?这时候便意识到,并不是如何让电梯生活有意思,而是由谁让电梯生活有意思。 救援医生 如果你不是一部英国科幻片《谁博士》的粉丝的话,那么你可能对这里讨论的问题不太明白。《谁博士》在1963年第一次上映(这是一部历史上放映时间最长的电视剧),并且这部电视剧的开头开始,这部片子就制造了许多低成本且创造性的效果。 对于几代粉丝来说,电视剧里面的时空机器的标志性声音(TARDIS)是非常具有代表性的,这使得这部片子的很多场景很容易与我们的现实生活相融合。TARDIS循环发出的摩擦声
[嵌入式]
GigaDevice推出GD32 Colibri系列支持Arduino接口的开发套件
    时间:2014年5月13日 13:31 2014年5月13日 — 日前,业界领先的半导体供应商GigaDevice (兆易创新) 联合第三方合作伙伴Trochili,宣布推出全新的基于GD32系列通用32位ARM Cortex-M3内核微控制器的全套开发板。GD32 Colibri开发板进一步强化了GD32系列微控制器高性能、低成本与易用性的产品优势,以紧凑的8.6cm × 5.4cm的标准外形尺寸为使用GigaDevice GD32系列MCU进行方案评估和原型设计提供了完整的低成本解决方案。 GD32 Colibri开发板由底板和扩展板组成,并支持标准Arduino接口。底板由基本的功能模块组成,具
[手机便携]
Arduino软件安装竟如此简单!
今天技成培训网在这里给大家介绍的是一款比较容易上手的物联网软件Arduino设计助手 ,让我们来一起看看是如何安装的吧。 1、首先解包安装文件,双击应用程序开始安装 2、弹出下图界面,点击I Agree 3、下图界面默认勾选项目不做修改,点击Next 4、下图界面选择安装路径,点击Install 5、安装进行中,继续等待 6、安装中弹出提示,点击安装 7、最后显示下图界面,表示安装完毕,关闭即可,嘻嘻,是不是很容易呢?
[机器人]
使用PlatformIO对Arduino UNO和STM32板进行编程
  使用简单的用户界面,在 Arduino 和 Arduino IDE 中进行开发总是简单而有趣。Arduino IDE 是开源的,可免费使用开发环境,具有编写、编译和上传代码到 Arduino Boards 等所有功能。它基于 Java,可在 Windows、OS X 和 Linux 等主要操作系统上运行。但是,由于它的简单性和庞大的社区,它没有一些经验丰富的开发人员需要的快速开发功能,可以缩短开发周期。有许多可用于 Arduino 的开发环境,但都有一些优点和缺点。今天,我们将从易于使用且与 Arduino 环境相比增加了功能的PlatformIO 开发环境开始。   什么是 PlatformIO?   PlatformI
[单片机]
使用PlatformIO对<font color='red'>Arduino</font> UNO和STM32板进行编程
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved