联网恒温器
发布时间: 2025-06-10 23:36:24 |
0
0
0
0




Arduino
WiFi
lcd

准确监测家中温度绝对是节省能源开支的最佳方法之一。同时,您也希望在冬季拥有温暖的家。我当前的恒温器仅允许静态编程:
我可以定义白天温度(大约 19°/20°,不会太热)和夜间(或家里没人)温度(16°),对于每个工作日,我可以定义应用白天温度的时间范围和应用夜间温度的时间范围)
此外,我可以手
1
先决条件


12
- 你知道如何使用 Arduino IDE
- 您已安装 ESP8266 开发板管理器:http://arduino.esp8266.com/stable/package_esp8266com_index.json
- 因此,您可以在 NodeMCU 上上传一些代码并运行它
- 您已安装以下库
- U8g2lib——OLED显示屏
- DHTesp - 用于 ESP 的 DHT
- ESPAsyncTCP - 管理异步 HTTP 请求,从github安装
- ArduinoJson - 处理来自 HTTP 请求的 JSON 响应
- ESP8266WiFi - 包含在 ESP8266 开发板中
- Ticker-包含在 ESP8266 开发板中
- 您有一些设备或软件,例如智能家居盒,可以监控并与该恒温器交互(就我而言,我拥有一个 eedomus 盒,但您可以轻松调整代码以满足您的需求)
- 你知道如何焊接
2
物料清单

- NodeMCU - 2欧元
- OLED屏幕 128x32 -1.50欧元
- DHT-22 - 2.50欧元
- 继电器3.3V-1.40欧元
- 2个按钮 - 2x0.02欧元
- 2个电阻1kΩ至10kΩ(我用的是220Ω)2x0.01欧元
- 原型板 - 0.16欧元
总计 = 7.62欧元
所有价格均基于 AliExpress,并提供免费送货服务。
此外,我们还需要焊接材料:
- 烙铁
- 焊锡丝-我用的是0.8毫米
- 助焊剂——我用它来焊接 NodeMCU 引脚
- Kynar 跳线或其他电缆,用于连接原型板上的组件
- 钢丝球——清洁铁
- 除焊芯 - 可用于去除焊接时弄乱的东西
3
布线






1234
图片显示了电缆的详细信息。
您可以修改引脚来连接组件。但请注意,继电器不能连接到 NodeMCU 的任何引脚。将继电器连接到某些引脚会导致 NodeMCU 无法启动。
NodeMCU 通过 USB 线 (5V) 供电,该线连接到 NodeMCU 的 Vin 引脚,Vin 引脚连接到板载电源调节器。请勿使用 5V 电源为 NodeMCU 的其他引脚供电,除非您想烧坏它。
4
计划原则




12
该程序的原理相当简单,在第一张图上画出来了。
- 我们有两个变量来保存请求的温度和测量的温度
- 我们定期读取测量的温度并将其显示在显示屏上
- 我们还从智能家居盒(eedomus)读取了请求的温度
- 根据这两个温度,我们计算是否应该加热
- 此外,用户还可以使用按钮来调节所需的温度
此外我们还需要:
- 管理通过按钮调整的请求温度与通过读取 eedomus 调整的请求温度之间的冲突
- 确保不要过于频繁地调节暖气。加热器可能无法正常工作,而且长时间加热会更高效。根据经验,我们决定每15分钟调节一次暖气。
- 需要对按钮读数进行去抖动。参见 Arduino 示例:数字量 → 去抖动
- 平滑测量温度的读数:原始读数交替出现超过 1°C 的差距,使得单次读数难以信赖
- 计算滞后效应,以尽可能保持温度稳定。房屋具有惯性,这意味着在切断供暖后不久,温度会继续上升。另一方面,即使开始供暖,温度也会继续下降。因此,我们必须预测何时切断供暖或何时开始供暖。这在第二张图中有所体现。
5
Arduino代码

我刚刚将我的恒温器投入生产。我当前的代码很乱,包含很多需要调试的消息。我计划很快重写一个干净的程序。一旦程序可用并在我的恒温器上验证通过,我会尽快更新。
- 股票行情是定期重复的程序
- 我们使用许多全局变量,因为我们无法将参数传递给股票行情程序
- AsyncClient 允许处理异步 HTTP 请求
- 我们附加中断程序来处理按钮的按下
- 所有代码都是事件驱动的,Arduino 循环是空的
- displayTemp - 管理请求温度(2 位数字)和测量温度(2 位数字加小数点后 1 位数字)的显示。加热时显示屏向上移动,不加热时显示屏向下移动,当两个温度相等(本例中为不加热)时显示屏上下跳动。
- getMeasuredTemp - 我们每分钟读取一次温度,并计算每 5 次读数的平均值。然后,我们保存 5 次平均读数的历史记录,以计算曲线向量,从而估算下一次读数。
- getRequestedTemp - 读取我们智能家居盒中定义的值。
- incTemp/decTemp - 按下按钮时通过中断调用的程序
- setHeating - 打开/关闭继电器以监控加热器。在我们的例子中,继电器在不加热时设置为高电平,加热时设置为低电平。这可能有点奇怪,但我们之所以选择这样做,是因为继电器闭合(设置为高电平)时,会亮起一个红色LED。
恒温器.ino
34.84KB
6
外壳




12
最后我打印了一个小外壳来容纳我的恒温器。
您可以找到随附的 FreeCAD 和 stl 文件。
Couvercle_01.stl
5.36KB
Thermo_box_01.stl
26.64KB
Couvercle_01.FCStd
40.56KB
Thermo_box_01.FCStd
53.32KB










更多相关项目
猜你喜欢
评论/提问(已发布 0 条)

