599浏览
查看: 599|回复: 0

智能火情监测仪

[复制链接]
智能火情监测仪是利用古德微树莓派图形化平台制作一个小作品。该作品用火焰传感器监测火焰的大小,通过数模转换器将其转化为模拟值,根据模拟值的大小动态改变火警音乐音量的大小,实现不同火情,警示不同范围居民的实际效果。
一、主程序
202005276817..png
二、OLED初始化
202005279410..png
1、初始化OLED显示屏
2、新建OLED图片
3、从树莓派中加载图片
这幅图片,是提前做好放到树莓派中供程序调用的。提前做一张图片是为了解决OLED显示比较单调的问题。
4、将火情图片调整尺寸
适应OLED显示屏的分辨率要求。
5、将火情图片粘贴到OLED图片上。
6、显示OLED图片
三、设置音频输出设备
202005279938..png
本例中,为获取火焰传感器的模拟值,我们使用数模转换器,同时程序中我们还需要输出火灾报警音频,因此,我们使用了USB声卡,对音频设置进行了相应的设置。
四、火情监测
202005273614..png
1、获取模拟信号并赋值给变量火焰值
2、输出火焰值
3、将火焰值进行折算
采用映射的方法将0-32767的值折算为99-0。为什么是99-0,而不是0-99?因为当没有火焰的时候,火焰传感器的输出值为32767,而不是我们想象中的0。
4、将折算值赋值给音量
现在,我们想通过火情监测这个子线程,动态的监测火情的大小,动态改变音乐播报的音量。
5、输出折算值
6、等待0.1秒
子线程火情监测每隔0.1秒检测一次火情值,每隔0.1秒改变一次音量值。
五、OLED显示
202005279099..png
1、在OLED图片上添加火情值
根据火情监测子线程获取的火焰值,动态添加到OLED图片上
2、动态更新OLED图片
3、等待0.1秒
六、主程序
202005274825..png
1、主程序重复循环
2、如果折算值大于10
执行播放树莓派存储的火灾报警音乐。
3、等待30秒
音乐时长共30秒,等待30秒,可完成一个循环。
4、如果折算值小于10,播放空音乐
如果折算值太小,说明火警非常微小,甚至是没有火情,可直接忽略,不予报警。如果程序开始折算值小于10,程序正常执行,但是如果火情是从大于10的时候变为小于10的,那么,刚才还在播放的音乐如何让它停下来,采用播放空音乐的方法是一个切实可行的方法。
5、等待0.1秒
每隔0.1秒监测一次。
最后,再上一遍主程序
202005271477..png
对照主程序,进一步思考:为什么我们要将火情监测和OLED显示做成两个子线程?为什么要在条件不满足的情况下播放空音乐?除了本例中的方法,你还想到了什么解决办法?

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail