本帖最后由 木子呢 于 2021-11-25 10:27 编辑
Mind+Python编程进阶教程——07智能厨房安防系统
课程目录:
一、实践情境
日常生活中,厨房安防常常容易被我们忽略,但家庭火灾往往主要发生在厨房里面,特别是暑假期间更是高发时段。
为此,我们将设计一套智能厨房安防系统,为我们的生命和财产安全添加一道坚实可靠的防线。
二、实践目标
本实践项目运用micro:bit作为智能终端,通过烟雾传感器和DHT11温湿度传感器来检测空气中的烟雾、液化气、甲烷、丙烷、丁烷等气体和环境温湿度,并将数据上传至物联网平台,之后借助蜂鸣器和风扇模块来发出警报声并实现通风功能。
三、知识目标
1、认识烟雾传感器,掌握其使用方法
2、掌握运用micro:bit作为智能终端,通过Python编程采集烟雾传感器数据的方式
四、实践准备
硬件清单:
软件使用: Mind+编程软件x1、SIoT系统软件x1
其他: 医用酒精消毒棉片x1
五、实践过程
在本项目中,我们将分两步,设计一个智能厨房安防系统,实现对厨房环境的实时监测并在环境不佳时及时警报同时加以改善。
1、实时监测室内烟雾浓度和环境温湿度并上传结果数据至SIoT物联网平台
2、添加反馈控制,实现智能报警和自动降温除湿功能
任务1:实时监测烟雾浓度与环境温湿度
1. 分析设计
在这个任务中,我们将分别借助烟雾传感器与DHT11温湿度传感器,来实时监测室内的烟雾浓度以及环境的温湿度。
这里,我们可通过扩展板将两个传感器与micro:bit开发板相连接,实时检测三种数据信息并将其上传到SIoT物联网平台和软件终端。
2. 硬件搭建
STEP1:通过传感器连接线将烟雾传感器和DHT11温湿度传感器分别连在扩展板的P1和P2口,如下图。
STEP2:将micro:bit开发板插入I/O扩展板,并通过USB连接线将micro:bit接到计算机。
3. 平台搭建
SIoT物联网平台的搭建方法可参考第三课。
4. 软件编写
在编写代码之前,我们依旧需要先对软件进行一些设置。
软件设置:
STEP1:创建与保存项目文件
启动Mind+软件,选择“Python模式”,另存项目并命名为“m智能厨房安防系统”。
STEP2:创建与保存Python文件
创建一个Python程序文件“任务一.py”,双击打开。
程序编写、运行:
STEP1:编写Python程序
- import time#导入时间库
-
- import siot#导入siot库
-
- from pinpong.board import Board,Pin,DHT11#导入pinpong.board包中的Board,Pin,DHT11模块
-
- Board("microbit").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
-
- adc0 = Pin(Pin.P1, Pin.ANALOG) #初始化P1引脚为模拟输入模式
-
- dht11 = DHT11(Pin(Pin.P2))#创建DHT11对象
-
- SERVER = "192.168.50.248"#MQTT服务器IP地址
-
- CLIENT_ID = ""#创建空消息队列
-
- IOT_UserName ='siot'#用户名
-
- IOT_PassWord ='dfrobot'#密码
-
- IOT_pubTopic = 'microbit/009'#“topic”为“项目名称/设备名称”
-
- siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)#初始化,确定输入的用户名和密码正确
-
- siot.connect()#连接
-
- siot.loop()#循环
-
- while True:#永久循环
-
- A1 = adc0.read_analog() #读取模拟信号数值
-
- temp = dht11.temp_c() #读取摄氏温度
-
- humi = dht11.humidity() #读取湿度
-
- print("环境温度=",temp," 环境湿度=",humi," 烟雾浓度=",A1)#终端打印显示
-
- print("-------------------------------------")
-
- time.sleep(1)#延时1秒
-
- siot.publish(IOT_pubTopic,"环境温度 = "+str(temp) +" 环境湿度= "+str(humi) + " 烟雾浓度= "+str(A1))#发送消息
-
- time.sleep(1)
复制代码
STEP2:运行程序并观察效果
(1)运行程序,并观察效果
点击运行,可以看到终端内显示“连接成功”的提示字样后就实时显示检测到的环境温度、环境湿度及烟雾浓度。
同时,查看物联网平台网页端“microbit/009”设备的消息,我们也可以看到相应的检测结果。
5.调试修改
尝试修改程序,将烟雾浓度、环境温度、环境湿度的数据上传至物联网平台的三个不同设备上,通过图表进行分析,探求其变化情况。
任务2:改善环境
1.分析设计
在上个任务中,我们已经成功实现了对于厨房内的烟雾浓度、环境温度和湿度的实时监测。接下来,我们将在此基础上对采集到的数据进行实时判别以改善环境。
这里,我们可通过扩展板将风扇模块与micro:bit开发板相连,继而借助风扇实现自动降温除湿,借助扩展板上的蜂鸣器实现烟雾浓度达到临界值时智能警报。
2.硬件搭建
STEP1:通过连接线将风扇模块连在扩展板的P8端口。
STEP2:打开扩展板蜂鸣器开关。
3.软件编写
这里,我们依旧将先对Mind+编程软件进行设置,再编写Python程序。
软件设置:
STEP1:创建与保存Python文件
新建一个Python程序文件“任务二.py”,双击打开。
程序编写、运行及回顾:
STEP1:编写Python程序
-
- import time#导入时间库
-
- import siot#导入siot库
-
- from pinpong.board import Board,Pin,DHT11#导入pinpong.board包中Board,Pin,DHT11模块
-
- from pinpong.extension.microbit import * #导入pinpong.extension.microbit包中的所有模块
-
- Board("microbit").begin()#初始化,选择板型和端口号,不输入端口号则进行自动识别
-
- adc0 = Pin(Pin.P1, Pin.ANALOG)#初始化P1引脚为模拟输入模式
-
- dht11 = DHT11(Pin(Pin.P2))#创建DHT11对象
-
- fan = Pin(Pin.P8, Pin.OUT) #初始化P8引脚为电平输出模式
-
- SERVER = "192.168.50.248"#MQTT服务器IP地址
-
- CLIENT_ID = ""#创建空消息队列
-
- IOT_UserName ='siot'#用户名
-
- IOT_PassWord ='dfrobot'#密码
-
- IOT_pubTopic = 'microbit/009'#“topic”为“项目名称/设备名称”
-
- siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)#初始化,确定输入的用户名和密码正确
-
- siot.connect()#连接
-
- siot.loop()#循环
-
- while True:#永久循环
-
- A1 = adc0.read_analog() #读取模拟信号数值
-
- temp = dht11.temp_c() #读取摄氏温度
-
- humi = dht11.humidity() #读取湿度
-
- print("环境温度=",temp," 环境湿度=",humi," 烟雾浓度=",A1)#终端打印显示
-
- print("-------------------------------------")
-
- time.sleep(1)#延时1秒
-
- siot.publish(IOT_pubTopic,"环境温度 = "+str(temp) +" 环境湿度= "+str(humi) + " 烟雾浓度= "+str(A1))#发送消息
-
- time.sleep(1)
-
- #通风
-
- if temp > 31 or humi > 70:
-
- fan.write_digital(1) #输出高电平
-
- else:
-
- fan.write_digital(0) #输出低电平
-
- #警报
-
- if A1 > 410 :
-
- display.show(Image.SAD)#显示图案sad
-
- music.play(music.DADADADUM, Pin.P0, wait = True) #播放音乐直到结束
-
- music.set_tempo(220 #设置声音速度为220
-
- time.sleep(1)
-
- time.sleep(1)
复制代码
STEP2:运行程序并观察效果
(1)运行程序,观察效果
点击运行,在软件终端和物联网平台可看到相应的环境温湿度和烟雾浓度数据。
(2)贴上酒精棉片
将医用酒精消毒棉片贴在烟雾传感器上方,我们发现,此时烟雾数值增加,当超过410时,点阵屏显示哭脸,蜂鸣器发出警报声;同时,当温度高于31℃或者湿度超出70时,风扇自动打开。
Tips:程序中的“410”、“31”和“70”是我们依实验情况设定的厨房内烟雾浓度、环境温湿度的临界值。
STEP3:回顾程序
1、音乐播放
music.play(music.DADADADUM, Pin.P0, wait = True) #播放音乐直到结束
music.set_tempo(220) #设置声音速度为 220
通过扩展板的蜂鸣器不仅可以使用音乐对象的“play”方法播放众多音乐,还可以使用“set_tempo()”方法设置播放的速度。
这里的“Pin.P0”指的是“P0”接口,而可以播放的音乐有很多,如,DADADADUM、ENTERTAINER、PRELUDE、ODE、NYAN、RINGTONE、FUNK、BLUES、BIRTHDAY、WEDDING、FUNERAL、PUNCHLINE、BADDY等。“wait = True”表示播放音乐直到结束。
|
4.调试修改
阅读下表,请根据表中的检测记录在整改措施中修改临界值加快温湿度和烟雾浓度下降的速度。
内容
|
事件记录
|
效果呈现
|
结论
|
整改措施
|
温度值
|
温度值为37(设定临界值为35)
|
排风扇启动,温度逐渐下降
|
排风扇启动成功,温度下降较慢
|
|
湿度值
|
湿度值为74(设定临界值为70)
|
排风扇启动,湿度逐渐下降
|
排风扇启动成功,湿度下降较慢
|
|
烟雾浓度
|
烟雾浓度是3246(设定临界值为1500)
|
启动蜂鸣器、排风扇、烟雾浓度逐渐下降
|
蜂鸣器、排风扇启动成功,但烟雾浓度下降较慢,一直在报警
|
|
六、巩固提高
1.项目小结
本节课我们以micro:bit、扩展板、烟雾传感器、DHT11温湿度传感器以及风扇模块为器件设计了一个智能厨房安防系统。首先通过烟雾传感器和DHT11温湿度传感器监测厨房中和环境温湿度,之后对检测到的数据进行实时判别,实现智能报警和自动降温除湿的功能。
2. 项目拓展
思考:
关于厨房安防,除了烟雾浓度和环境温湿度之外还有什么因素会对其有影响呢?我们手头是否有工具可以对其进行测量?
|