本帖最后由 jf_96170046 于 2022-2-28 10:52 编辑
官方提供的传感器示例中已包含了各个传感器的I
2C
通信地址,计划写个例子依次获取三个传感器的数据并显示出来。
引用传感器头文件后,首先声明三个传感器实例
然后设置硬件串口和I
2C通信速率
依次初始化三个传感器并启动
在loop循环中依次获取三个传感器的数据,并写入串口
运行效果见顶部视频。
在视频中可以看出气压传感器BM1390GLV的温度值和温度传感器BH1900差距很大。对照当前小米温湿度计,可以看出BH1900的温度更加准确一点。而且气压传感器的温度波动很大,不如温度传感器的稳定,所以气压传感器的温度数值不可信,后续开发不做参考。
现在加入项目的逻辑——希望能监控电箱内部的环境安全报警,当出现火灾或者风扇故障时进行上报。
要实现这样的目标,首先得通过Arduino获取到传感器的数据并经过逻辑条件判断,得到当前的状态,然后生成JSON格式字符串,最后使用MQTT上报服务器。
经过分析,加入的逻辑条件判断如下:
当监控到温度超过阈值时,如果当前光亮大于阈值且红色占比较高(火的颜色偏红)则推断有火灾,否则如果机箱内部气压超过阈值,则推断冷却风扇有故障。
翻看前一章的手册可知颜色传感器的数值依次代表红、绿、蓝和光照强度。
程序如下所示:
在Arduino上生成JSON格式字符串可以使用官方的库ArduinoJson v6,占用内存较小;
该部分的demo文件如下:
demo1.zip
(1.64 KB)
(下载次数: 0, 2022-2-27 23:19 上传)
demo文件运行示例底部视频所示