大数跨境
0
0

【信息科技案例】利用PM2.5模块,制作环境检测小车

【信息科技案例】利用PM2.5模块,制作环境检测小车 KittenBot小喵
2024-01-26
0

 【信息科技案例分享】


 利用PM2.5模块

 制作环境检测小车


导语


记得第一次听到PM2.5是在纪录片《柴静雾霾调查:穹顶之下》,这种悬浮的颗粒无时不在危害我们的健康,里面提及到了雾霾形成的原因以及对人体健康的危害,使得普罗大众认识到了雾霾问题的严重性,进一步唤醒了人们对环境保护的意识。

随着越来越多的人开始关注空气质量,积极参与环保行动,在政府和社会共同的努力下,根据《大气中国2023:中国大气污染防治进程》显示,全国PM2.5年平均浓度自2013年以来一直保持下降的趋势。2024年小喵最新推出的PM2.5模块为环境保驾护航,它可以检测PM1.0、PM2.5和PM10的数值指标,这次就结合智能算法制作环境检测车,给环保事业增添一份力!

材料准备


编程软件使用


 Kittenblock1.89

前期准备


1

接线准备

两个电机接在M1,M2口;语音合成模块接在UART1;PM2.5模块和激光测距模块接在I2C接口。

2

结构搭建

用8个摩擦销把电机安装到未来板Lite上。

使用连接轴等积木把轮子安装到电机上,轮子与电机尽量装的稳一点,不能太松。

把合成模块和积木模块连接起来,并安装到未来板Lite上。

最后把PM2.5模块和万向轮组装并接线即可,接线时注意线不要触碰到地面以免影响小车移动,可以在底面多插几个销把线困在销上。

3

创建话题

由于涉及到物联网的数据传输功能,需要事先在Kzone(KZone (kittenbot.cn))上创建三个数字类型话题名称,分别记录PM1.0、PM2.5和PM10的数据。由于任何版本的MQTT协议均不允许创建重复的话题名称,所以这一步的名称小伙伴们需要自行创建,可以是自己的“名称缩写+PMxx”的方式命名。

4

原理介绍

伴随着物联网技术的发展,现代智能家居系统大多选用激光粉尘传感器、其原理大致为用激光照射在空气中的悬浮颗粒物上产生光散射,然后通过光电探测器收集散射光强,将散射光强线性地转换成电压,然后送入数据处理系统进行进一步处理转化成PWM信号。

功能介绍


本次案例有三大功能:

①自动避障功能

②播报&显示功能

③云端数据功能

程序编写


初始化

根据功能介绍的部分进行初始化,大致分为两个部分:

①连接WIFI和MQTT服务器,并订阅相关话题,话题使用列表存放,方便话题修改。

②初始化语音合成模块、变量和屏幕刷新方式

自动避障功能

由于只加装了一个测距模块,所以避障功能呈现的效果会比较简单~这里我模仿了扫地机器人的避障行为:每次遇到障碍物时会后退一点点,然后固定向一个角度原地旋转避开障碍物。

创建【避障程序】函数,使用【距离】变量记录激光传感器的数值,当未来板Lite的A键被按下时,切换【移动状态】变量为1,代表小车前进。注意这里的M1速度用随机数来获取。

原因是由于两个电机速度不一样,按照以往的经验都是测两个电机差不多的速度值,然后填一个固定的数值上去。可以参考{社恐机器人}和{行车记录仪}两篇文章里的方法。但这种方法有一点不太好的地方,就是误差始终存在,而且走的越远误差积累的就越多,始终会偏离直线。

这次做案例时意外发现M1电机的速度在介于26~28时和M2速度为-21时差不多,脑洞大开使用了随机数去调整速度,意外发现效果还行,能够小幅度的“自动”校准左右方向,总体上来说还是能勉强走直线的😂

紧接着编写小车停止和避障的程序,按下M键时【移动状态】变量为0,小车停止。如果检测的距离小于200且小车处于前进的状态时,小车会后退0.5s然后右转大约30°。完成后把这段程序放进初始化后的重复执行框里,可以看到基本满足避障的要求。

插播&云端数据功能

 在主函数里编写播报切换功能,按下B键时【播报控制】变量会在1和-1两个数值切换,同时【实时时间】和【刷新时间】会进行一次重置。这里共提到3个变量,这些变量的作用后面会提到~

当【播报控制】变量为1时调用【播报程序】函数,函数主要内容为显示播报的时间和播报内容,播报内容由【播报语句】变量控制。

【实时时间】变量记录未来板Lite的运行时间,【刷新时间】设定开始播报的时间。

当第三条语句播报完成时,播报第一条语句PM1.0的数据,并且让【刷新时间】变量+5s,为的是等待5s再播放第二条语句;当第二条语句PM2.5的数据播报完成时,等待5s再播报第三条语句。

当第二条语句播报完成后开始播报第三条语句,该语句播报PM10的数据,且这次播报完成后【刷新时间】变量等待20s才会新一轮的播报,且把先前的数据上传到物联网云端。

三条语句分别等待5s、5s和20s,一共为30s,所以播报状态下,每隔30s云端会更新一次PM2.5模块的三个数据。到此【播报程序】函数全部完成。

如果通过按下B键使【播报控制】变量为-1时则不会播报,但是也可以定时30s更新数据。由此一来数据更新就完成了。

通过Kzone的物联网平台查看数据,以办公室室内的PM2.5浓度为例,浓度基本上在50μg/m3左右附近徘徊。

现在还差最后一步,在未来板Lite中显示数据信息和交互提示信息,这段程序放在主函数靠上的地方里,并在末尾处放置刷新显示积木即可完成本次案例。

功能演示



关注我们

小喵会通过社交平台,定期发布有趣的项目视频,感兴趣的可以搜索关注我们喔!

视频号:KittenBot

公众号:KittenBot小喵

b站、小红书、抖音:KittenBot小喵科技


【声明】内容源于网络
0
0
KittenBot小喵
专注于从入门到精通的移动机器人开源学习平台
内容 560
粉丝 0
KittenBot小喵 专注于从入门到精通的移动机器人开源学习平台
总阅读98
粉丝0
内容560