【项目介绍】
背景介绍
第三轮我抽到的盲盒是行空板+SCI采集模块,还有很多传感器(温湿度、pm2.5、舵机驱动、点阵屏等)。一下有了那么多设备又开始学习时间,由于决赛采用自定主题的形式,先开脑洞。
作为教师每天学生的放学集合,家长对于接送都是非常关注。每当放学时,带队教师会整队,班级中会有一名学生将自己班级的班牌高高举起,教师将班级学生带出校园到指定区域解散后,班牌放在指定位置示意该班级已放学,家长一般也会提前等候,等待孩子。但总会遇到有学生因打扫卫生等问题没能一同出来,或是家长临时有事没能来接孩子的情况,碰到这样的情况家长或学生一般只能留在校门口的爱心屋内进行等候。但是到底需要多久才能等到对方呢?有没有可能利用物联网技术将这种信息交流障碍打通呢?
脑洞一:
1.想到了能否将学生日常举着的木质班牌换成电子式班牌?利用行空板制作一块简易班牌,在屏幕上根据当天学生实际情况显示未放学的学生名单以及具体原因。临时有事没来接孩子的家长通过家长端程序预估晚到,行空板接收信息后显示该学生姓名和晚到时间。
2.同时利用pm2.5模块和温湿度模块,在SCI模块上实时显示当前的空气质量和气温湿度信息,时刻提醒放学区域内的家长保持空气质量。虽然明令禁止校园内外吸烟,但由于学校地处农村,一些老年人来接孩子休息时仍旧会在一旁吸烟,通过知乎了解到一支香烟所导致的pm2.5释放量:
抽一支烟,会释放多少PM2.5呢?针对此做了一个实验:在一个100平方米房间里,把门窗全都关闭。抽烟者坐在沙发上,点燃一支烟。大约三分钟后烟抽完了。仪器显示:PM2.5达到633.3~833.3维克/立方米,超过国家标准75微克每立方米的8-11倍!实验当天空气重度污染,室外PM2.5是220微克每立方米。再点一支,吸烟者头顶飘起一片白雾。两分钟后,PM2.5飙升到了1700微克每立方米,超过国家标准20倍!周围的检测人员都被呛得流眼泪了。这就是两支烟的危害。专家表示:在吸烟者一米范围内的人,都会吸入超过国家20倍的PM2.5。如果体质弱一些,比如哮喘、支气管炎、肺部疾病的人,会严重影响身体健康。
当空气质量数值瞬间超标就意味着有人吸烟,这时值日老师可以根据数据适时进行巡查制止。
脑洞二:
宜家一直是一个很有趣的家居生活卖场,也一直拿这里的商品作为灵感来源。前不久推出了空气质量监测器,实时监测家庭内的PM2.5空气质量数据,并通过颜色进行反馈。平时上课也用过一些设备监测,但是由于使用的是网络服务器中的数据,一般不能真实反应当前环境数据,利用已有的传感器来进行数据监测和学习,也正好契合了2022新课标信息科技要求。于是准备利用手里的设备进行模仿。
2.遇到的问题
电子班牌由于还处在暑假时间,项目停留在测试阶段。
【制作过程】
1.将行空板连接电脑,SCI模块连接行空板,最后pm2.5模块连接SCI模块。
2.打开mind+进行程序搭建,有了SCI的配合不用再考虑其他模块的,直接适配即可。
【作品演示】
程序运行后,就可以实时监测室内空气pm2.5的数据,同时在行空板上直观显示。
通过数字颜色,也能感受到当前空气质量的优劣。
【总结】
空气监测器的项目比较简易,利用了行空板、SCI和pm2.5模块,可以在今后的教学中结合科学学科进行一些跨学科实践教学,进一步认识人与自然之间的关系。有了,SCI模块还可以进行不间断监测,为长周期作业的实施奠定基础。
资源:代码+源文件
附件
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from dfrobot_rp2040_sci import *
from pinpong.board import Board
from unihiker import GUI
import math
import time
Board().begin()
u_gui=GUI()
SCI1 = DFRobot_RP2040_SCI_IIC(addr=0x21)
while SCI1.begin() != 0:
print("Initialization Sensor Universal Adapter Board failed.")
time.sleep(1)
print("Initialization Sensor Universal Adapter Board done.")
u_gui.draw_text(text="空气质量监测器",x=30,y=100,font_size=20, color="#0000FF")
u_gui.draw_text(text="PM2.5:",x=30,y=160,font_size=20, color="#0000FF")
pm25 = (int(SCI1.get_value1(SCI1.ePort2,"PM2.5")))
while True:
if (pm25 < 50):
pm=u_gui.draw_text(text=SCI1.get_value1(SCI1.ePort2,"PM2.5"),x=140,y=140,font_size=40, color="#00FF00")
else:
if ((pm25 > 50) or (pm25 < 100)):
pm=u_gui.draw_text(text=SCI1.get_value1(SCI1.ePort2,"PM2.5"),x=140,y=140,font_size=40, color="#FFFF00")
else:
pm=u_gui.draw_text(text=SCI1.get_value1(SCI1.ePort2,"PM2.5"),x=140,y=140,font_size=40, color="#FF0000")
time.sleep(2)
pm.remove()
hacker_2023.08.24
666