基于ESP32-C3的高低温报警温度计

空调的内机探温头在挂机中,这个与我们身体附近的温度相差太大,基本上空调设定的问题与实际温度相差不少,我们期望屋内休息处可以在设定的温度值的正负1摄氏度内。 尤其是睡着后,室内实际的温度比空调设定温度低了好几摄氏度,这个容易让人着凉,或者影响睡眠。

用的是美的空调,说是可以和美的美居生态的产品互联。但是查了下,发现其温湿度传感器,居然一直无货, 且只有自己家有一个,还没有第三方的。 因此走美的美居自家闭环控制不可行。

于是期望借助米家来闭环控制或感知温度。

高价(近百元)购入米家空调伴侣,用于控制和获取空调设定的温度。没有问题。

使用多个米家温湿度传感器用来获取多个位置的温湿度。

–> 开始出现问题: 传感器发送/广播(更新)温湿度的时间间隔不定,有的时候长达数十分钟,网关获取后上传到服务器的时间也是不定的!有时候都有快30分钟的延后。

使用米家的智能场景来做控制

–> 米家在延后很久后再下发控制,此时已经很冷了。整体而言,属于不可使用的阶段。

购买了多种米家传感器,发现都有各种各样的问题:

  • 秒秒测:1h一次的温度上传记录,太久了,用其自己的App蓝牙获取的话电量耗费巨大。
  • 米家温湿度传感器:间隔太久,且精度为1摄氏度
  • 青萍等:也是间隔太久

因此整体总结下来是理论上可行,实际上不行。

买了米家的传感器,温度精度高还不错,本身就具有高低温报警功能,但是只有声音报警,这个不好,无法满足要求。 支持手机端推送手机提示来做高低温报警,这个也不错。也可以付费购买电话告警。于是这个在购买后就保留下来了。

但是很快问题出现了:

  1. 买了几个涂鸦的空调伴侣均无法与我们的美的空调适配上。
  2. 需要手动关闭告警声音,这个声音会吵醒宝宝。

因为时间和精力有限,本来也是期望买现有的产品来解决问题。可是购买了几套智能家居后发现问题依然没有解决。

想了想总结了以下需要满足的要求:

  • 温度精度最好精确到0.2摄氏度:如果以1摄氏度为单位,那么作为反馈来调节空调的话容易太过滞后,或者过激
  • 提供高低温报警:可以设置阈值
  • 报警方式最好是震动:因为声音会吵醒宝宝
  • 可以在手机端本地或者远程查看温湿度
  • 温湿度上报频率可调,或者满足至少10分钟上报一次
  • 有历史(最少24小时)温度曲线/记录:用于回看和查询
  • 最好可以和空调或者智能开关连控:主要的目的就是为了放置冻着
  • 与空调或者智能开关连控的时间不能过长(例如不能超过10分钟): 否则人都冻坏了还没动作

后续再想了想,干脆不要联调/连控,只需要可以震动报警即可。还是没有找到对应的产品。 本想着自己写个App用手机的震动来解决,但是又觉得麻烦。

因此就开始制作电子垃圾了:用ESP32 + 震动马达 + 温湿度传感器 来解决。

非常简单,购买ESP32-C3,震动马达,温湿度传感器(SHT4X)模块,总共不到30块,然后写代码,搭建MQTT服务器,配合朋友告知的IoTManager,完成最终的搭建。

最终效果如下:

实物

App端效果

Temp and Humi in Serial

可以设定高低温告警阀值,可以设置30分钟内不再告警(手机端或者物理按键),可以查看每10分钟的温度曲线。

出现的问题如下:

Burn Error in Arduino

使用命令行烧录也是如此:

Burn Error in Cmd

修改layout即可,Arduino菜单中选择Huge App(3M App, no OTA)

  1. Arduino菜单中选择Verbose调试,查看具体出错内容,另外Flash选择DIO而非QIO
  2. 在Arduio菜单中选中Erase All Flash before flashing
  • ESPHome: 相当于一个安装好了各种工具/utils的系统,自己可以写类似脚本的方式来使用配置各种功能,也包括硬件的各种驱动,自己只需要写类似DeviceTree的描述符即可,方便快速使用。

  • ESP RainMaker : ESP官方提供的云平台,有APP端,但是我尝试了多次,且使用一样的版本的库依然无法使用,在Provision的时候总是失败,放弃折腾了,而且这个缺少App端和服务端的log查看,不好调查问题。

到IDF的release中下载archive,在某个release对应的Download an archive with submodules included中下载,这个比较快。