APP下载

基于Arduino的气体监测智能小车设计

2022-04-13张竣朋崔志涛王逸卓

电子设计工程 2022年6期
关键词:测距小车蓝牙

张竣朋,崔志涛,孙 振,王逸卓

(1.合肥工业大学电子科学与应用物理学院,安徽合肥 230009;2.合肥工业大学仪器科学与光电工程学院,安徽 合肥 230009)

随着居民城镇化比例的提升,相比于农村,如今火灾和气体泄漏的事件屡有发生,因此有必要通过气体检测仪来检测目的场所易燃易爆气体浓度,从而判断是否发生气体泄漏。

气体检测仪有固定式和手持式两种,其中固定式检测仪较为笨重,使用不便;手持式检测仪虽然便捷,但需要人到达室内手持设施进行检测,这在室内气体成分尚不明确的情况下,易使检测者陷入危险境地。

因此计划设计可无碰撞行走、可检测房间易燃易爆气体的智能小车尤其必要,既能够有手持式检测仪的便捷性,又能够降低因室内检测对人造成的安全风险。

1 系统总体设计

该智能小车以Arduino Uno R3 为主板,搭配了超声波测距模块、易燃易爆气体检测模块、蓝牙模块和舵机模块,集成了自动避障、遥控回收、气体检测和实时传输数据等功能。

系统分为主控模块、电源模块、测距模块、电机驱动模块、无线通信模块和气体检测模块6 个部分。系统总体框图如图1 所示。

图1 系统总体框图

据此设计的智能小车实物图如图2 所示。

图2 小车实物图

2 系统硬件设计

2.1 烟雾传感器

2.1.1 MQ-2传感器简介

MQ-2 传感器具有广泛的应用,适用于液化气、丙烷、氢气及烟雾等气体检测。其使用的气敏材料是在清洁空气中电导率较低的二氧化锡,故而灵敏度高。此传感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器。

2.1.2 工作原理

当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大,电阻随之减小,MQ-2 模块有4 个引脚VCC、GND、D0和A0。其中D0 为开关信号(TTL)输出,TTL 输出有效信号为低电平,即当输出低电平时信号灯亮。A0为模拟信号输出,模块内部电路将电导率的变化转换为与该气体浓度相对应的输出电压信号,因此浓度越高,输出电压越高。

图3 为MQ-2 实物图,图4 为MQ-2 引脚说明图,图5 为其电路原理图。由原理图分析,MQ-2的4 脚输出随烟雾浓度变化的直流信号流入比较器U1A的2 脚,通过电阻Rp获得比较器的门槛电压。当烟雾浓度较大,输出电压高于门槛电压时,比较器输出低电平,此时LED 亮;反之当浓度较低,则LED 灭。

图3 MQ-2实物图

图4 MQ-2引脚说明图

图5 MQ-2电路原理图

2.1.3 MQ-2静、动态电压测试

由于MQ-2 在正常环境下也会输出电压,这一电压称为静态电压。将传感器和Arduino 相连,打开电源,预热2 min,用万用表测量此时的模拟输出端口的静态电压,测量结果如表1 所示。

表1 MQ-2静态电压

之后通过点燃干燥废纸产生干燥烟雾模拟实景,测试烟雾源头与传感器的距离对输出电压的影响,此时电压为动态电压。

1)距传感器5 cm 处点燃干燥废纸产生烟雾飘入传感头,测试输出电压,如表2 所示。

表2 传感器距烟雾5 cm时的输出电压

此时动态电压比静态电压提高了0.4 V 左右,从而在实验层面验证了输出电压会因气体浓度变大而增大的结论。

2)当传感器距离烟雾变为20 cm 时,方法同上,输出电压如表3 所示。

表3 传感器距烟雾20 cm时的输出电压

此时动态电压比静态电压提高了0.2 V 左右,较距离5 cm的情况降低了0.2 V,这说明距烟雾源头越远,电压越小,即检测到的浓度越低,与经验相符。

2.2 超声波测距模块

2.2.1 测距原理

利用超声波在空气中的传播速度已知,采用回波时间法,测量声波在发射后遇到障碍物反射回来的时间,由发射和接收的时间差计算出发射点到障碍物的实际距离。测距公式为l=c×t/2。其中l为测量的距离;c为超声波在空气中的传播速度;t为发射到接收的时间差。

超声波的传播速度受空气密度影响,空气密度越高则超声波的传播速度越快,而空气的密度又与温度有着密切的关系,近似公式为c=c0+0.607×t。其中c0为零度时的声波速度332 m/s;t为实际温度,单位为℃。

2.2.2 模块工作步骤

1)采用IO 触发测距,给出至少10 μs的高电平信号。

2)模块自动发送8 个40 kHz的方波,自动检测是否有信号返回。

3)若有信号返回,则通过IO 口输出一高电平,高电平持续时间就是超声波从发射到返回的时间。

4)使用测距公式计算出测试距离。

此模块有4 个引脚:VCC、GND、Trig和Echo。Trig 为发射端,Echo 为接收端。

应当注意,测距时,被测物体的面积不少于0.5 m2,且平面要求尽量平整,否则会影响测量。

2.3 蓝牙模块

在蓝牙模块与气体传感器的连接使用测试中,需要在手机端发送指令(如遥控或自动避障)到蓝牙,同时需要蓝牙将气体传感器模块的气体数据传给手机端,如果只用一个蓝牙则需不断更换主从设置,同时发送与接收数据易造成信息乱码等系统不稳定情况,故选择用两个蓝牙模块,一个发送数据,一个接收数据,而为了避免蓝牙分辨混淆,选择HC-05、HC-08 两种不同的蓝牙模块。由于Arduino 上的RX、TX 引脚有限,因此选择软串口的方法,选择开发板上两个未使用的2、3 引脚,分别定义为RX、TX,作为另一蓝牙的收发引脚连接。

软串口就是用程序模拟硬串口实现通信的功能,可以在Arduino 主板的引脚进行模拟实现。

3 软件程序设计

3.1 程序流程

图6 为系统主程序流程图。

图6 系统主程序流程图

首先对Arduino 以及各个模块进行初始化,手机上选择避障模式,然后进行超声波测距,判断接下来的路线,进行小车的无碰撞到达目的地,并完成气体传感器的数据采集,采集完毕后,系统通过蓝牙模块将数据传输到手机App 予以显示,最后通过手机App 遥控小车得以返回。

3.2 各模块算法及其实现

3.2.1 车体运动及模块初始化

1)首先定义车体运动的5 种状态,即向前、向后、向左、向右与停止,再用Arduino 中的函数SoftwareSerial mySerial(2,3)定义软串口,即拓展2、3引脚为新的RX、TX 引脚。

之后定义4 个减速电机的引脚,再进行舵机引脚与超声波模块的初始化,完成避障功能的模块初始化工作。

2)小车5 种运动状态算法如下:

前进状态时,四车轮全部设置为正转(即电机正转)。

后退状态时,车轮全部设置为反转。

左转时,左侧车轮设置为停止运动,右侧车轮设置为正转(也可左侧反转,右侧正转,此算法使转弯速度更快)。

右转时,右侧车轮设置为停止运动,而左侧车轮设置为正转。

3.2.2 设置小车命令模式

初始化完成之后,开始设置小车的命令模式为避障模式或遥控模式,两种模式实现如下:

1)避障模式:向前直行,并同时测量小车与前方障碍物的距离,当距离小于30 cm 时(设置为30 cm的目的是小车从运动到停止需要一段刹车距离,若距离过小,则可能与墙体碰撞),小车停止运动,超声波模块在舵机的带动下向左旋转并测量与左侧障碍物的距离,测量完毕后,向右转并测量右侧与障碍物的距离。倘若左侧距离小于右侧距离,即右侧小车可活动空间大,则小车向右运动,反之则向左运动。同时设定当超声波的测量距离大于50 cm 时,返回距离统一设置为50 cm(数据超过50 cm 之后则测量精度降低,且之后的距离数据为无效数据),若距离小于50 cm 则返回当前真实测量的距离。

2)遥控模式:需调用功能函数void motorRun(String cmd,int value),此函数会先调用analogWrite(pin,value),产生一个指定占空比的稳定方波。pin为不同电机所接引脚,value 为占空比,取值为0~255,value 越大则转速越大,在设计中默认设为255。cmd 则为选择模式,分别为前进(UP)、后退(DOWN)、向左(LEFT)、向右(RIGHT)、停止(STOP),当在软件中按下其中一个选项时,参数cmd设置为相应的状态(如LEFT 向左)通过蓝牙传输给Arduino 运行此函数,从而带动减速电机按给定占空比使小车进行相应的运动。

3.2.3 舵机转动测距算法

1)若小车在之前的运行中已进行过左右距离测试,则首先运行系统函数myServo.write(90),将舵机归为原位(90°)。

2)当正向测试距离dis[1]小于30 cm 时,则运行函数motorRun(STOP,255),使小车停止运动,之后算法为让舵机每隔10 ms 向右转动1°,直到150°,循环函数如下:

这时超声波测距dis[2]=getDistance(),将距离存入dis[2]。

3)对左侧测距,算法同上,即舵机相对于90°方向左转60°,并测试距离dis[0]=getDistance(),将距离存入dis[0]。

4)比较dis[0]与dis[2]的大小,若前者小,则左侧距离障碍物更近,运行motorRun(RIGHT,255)进行右转,反之则左转。

3.2.4 MQ-2模块代码实现

MQ-2 气体检测模块实现代码为:

数据val 为与读取的气体浓度相对应的电压值,需要设定与气体浓度相对应的val 临界值,高于此值则报警灯亮。通过实验测试,为与小车的实际应用相贴近,最后设定当val>260 时,室内易燃气体超过安全值,ledpin 设置为高电平,报警灯亮。

4 创新与改进

4.1 创 新

选择软串口(即对应3.2.1 中的SoftwareSerial mySerial(2,3)函数)来解决Arduino的RX、TX 口不足的问题,可实现双向通信传输,由此类推,此方法思想可适用于其他嵌入式系统中有关引脚资源不足的问题,即硬件不足,用软串口以及类似的软件方式进行解决。

4.2 改 进

1)可在小车上安装摄像头,通过软硬件的调试,将摄像头捕获的画面数据实时传输到单片机上,再通过蓝牙模块传输到手机App 上进行显示,使操作人员可以借此知晓小车所处的地形,从而方便进行小车的遥控返回。

2)可在原单个超声波模块的基础上在其左右增加两个相同模块,对超声波避障算法进行改进,从而减少一些地形情况下出现的无法避障的“死循环”现象,避障更加顺畅,进一步提高其实用性和容错率。

5 结束语

该文针对传统气体检测仪的不便捷或存在安全风险的现状,设计了能够避障、遥控检测环境中易燃易爆气体的智能小车,继承了便携式检测仪的小巧、易携带特点,也减小了前者需要人为检测可能导致的风险。经过小车的设计搭建和实践使用,经过30次的实验发现,有28 次是正常避障,且能够将气体信息正常传输到手机,故系统具有较高的稳定性。当然,也有不足之处,即用在较为复杂的室内环境中,室外的操作人员不一定能看到小车,因此可能无法正确遥控。可以在小车前方安装摄像头对此加以改进,方便清楚地了解室内环境,从而遥控小车完成任务。综上,其意义不仅是在安全和便捷性上实现了气体检测功能,更是在人工智能的时代背景下为气体检测的运作提供了一种独到且创新的思维方式。

猜你喜欢

测距小车蓝牙
基于RSSI测距的最大似然估计的节点定位算法
蓝牙音箱的直线之美
大车拉小车
自制小车来比赛
类星体的精准测距
刘老师想开小车
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
两轮自平衡小车的设计与实现
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
浅谈超声波测距