基于树莓派的火灾烟雾探测机器人
2023-04-01王渝鑫付芳芳付盛源
王渝鑫,付芳芳,付盛源
(广州城市理工学院,广东广州,510800)
随着科技的发展和社会的进步,城市人口越来越密集,相比在农村地区,城市的火灾救援工作更加危险。火灾机器人可以通过遥控探测现场情况,可以实现现场图像呈现和烟雾浓度测量,获取与火灾现场相关的有效数据,缩短火灾现场侦测工作的时间,为火灾救援提供帮助。
1 系统总体设计方案
基于树莓派的火灾烟雾探测机器人小车采用树莓派平台作为整个系统的控制和运算数据处理单元,树莓派平台上电后,电机驱动操作芯片TB6612、烟雾传感器MQ-2、成像系统OpenCV同时启动,操作者通过蓝牙模块,用手机APP将其遥控至较恶劣环境中进行烟雾浓度探测以及视频拍摄,这些数据被实时传给树莓派开发板,再通过蓝牙传到APP上,操作者根据获取到的信息,遥控机器人进行左转、右转、前进、后退等运动,以及决定是否灭火或继续探测等行动。该火灾探测系统的结构图如图1所示。
图1 系统结构图
2 系统硬件设计
2.1 主控制器的选择
树莓派是一个微型的计算机系统,它搭载了 Linux 系统,可进行桌面可视化操作,具有强大的功能,包括各种软件的使用、视频音乐功能等。与 Windows 系统相比,树莓系统是开源的 Linux 系统,这就意味着能够让众多的程序员来参与编写 Linux 底层系统,使树莓派的操作系统日趋完善。树莓派的主控是属于 ARM 的一种,它的数据存储方式是借用了 SD 卡来完成,在控制板上配有八个接口,包括 USB 接口、WLAN 接口、HDMI 接口和电源以及音频接口[1]。
图2 烟雾探测模块
2.2 OpenCV摄像头
本系统采用的图像采集工具是OpenCV摄像头。OpenCV是一个功能强大的机器视觉模块,其上搭载了一个Micro Python解释器[2],因此允许开发者使用Micro Python编程语言来编写程序。本系统可以通过板载二自由度摄像头来获取现场图像。
2.3 烟雾探测模块硬件设计
该烟雾探测模块将STC89C51单片机作为主控芯片,使用烟雾传感器MQ-2实时采集烟雾浓度,通过模数转换器ADC0809将烟雾浓度数据转换成数字量输入单片机STC89C51中,之后在液晶显示屏LCD1602实时显示。
烟雾探测电路如图3所示。其中,IN为MQ-2的输出,也即为AD转换器的输入脚。MQ-2型烟雾传感器输出的是模拟电压信号,需经过AD转换芯片将其变换成数字量,才能输入至单片机小系统STC89C51进行处理。通常情况下MQ-2会输出一个高电平,一旦检测到烟雾的存在,MQ-2就会输出低电平。MQ-2传感器的电阻值与浓度存在着一定的关系:logR=mlogC+n(m,n均为常数),C4与R8组成了一个滤波电路,用来抑制电路中的干扰。
图3 烟雾探测电路
2.4 小车驱动芯片的选择
小车的运动主要包括前进、后退、左转、右转、刹车、左旋、右旋、巡线行驶、壁障行驶等,本系统采用TB6612FNG驱动芯片来控制小车。TB6612FNG是基于MOSFET的H桥集成电路,其效率高于晶体管H桥驱动器。相比L293D每通道平均600 m A的驱动电流和1.2 A的脉冲峰值电流[3],它的输出负载能力提高了一倍。相比L298N的热耗性和外围二极管续流电路[7],它无需外加散热片,外围电路简单,只需外接电源滤波电容就可以直接驱动电机,有利于减小系统尺寸。对于PWM信号,它支持高达100kHz的频率,相对以上两款芯片的5kHz和40kHz也具有较大优势。
3 系统软件设计
3.1 遥控工作模式软件设计
3.1.1 遥控主工作模式
遥控工作模式需要用到蓝牙控制小车APP,此APP主要是完成对小车的控制,同时将小车的相关数据通过串口传输实时显示在Android apk的界面上。本系统选用的是Yahboom Robot应用控制APP,采用Python语言进行编程。APP通过蓝牙串口发送指令来控制小车的行动,比如前进、后退、左转、右转、停止、左旋、右旋和舵机的任意角度控制。遥控工作模式APP界面如图4所示。
图4 遥控工作模式APP界面
小车的遥控工作模式主要功能是实现前进、后退、左转、右转、刹车、左旋和右旋等操作,以及灭火和鸣笛等功能。本系统采用TB6612FNG驱动芯片来控制小车。其控制流程图如图5所示。
图5 遥控工作模式
另外,APP还为小车增加了避障、巡线和寻光工作模式。APP附加功能模式选择界面如图6所示。
图6 APP控制小车工作模式
3.1.2 巡线工作模式
树莓派开发板上电后,启动红外巡线功能,小车自动巡黑线行走。巡线工作模式需要使用四路红外传感器,利用光的反射特性,当红外线发射到黑线上时会被黑线吸收,发射到其他颜色材料上会有部分反射到红外传感器的接收管上,所以要保证传感器探头的灵敏度,保证小车在运动过程中检测黑线的精确度。
在软件部分,树莓派开发板上电后,电机GPIO和巡线传感器初始化,并将PWM频率设置为10kHz。利用硬件初始化函数,在巡线模式运动函数中完成获取黑线检测状态,并自动调节小车运动方向,包括左右大弯、左右最外侧检测、中间黑线上的传感器微调车左右转和4路红外巡线模块均检测到黑色加速前进。巡线工作模式软件工作流程图如图7所示。
图7 巡线工作模式软件工作流程图
3.1.3 避障工作模式
该工作模式用到了初始化函数和红外避障模式运动函数,红外避障模式运动函数又包括避障传感器获取状态函数和小车检测指令运动函数。
系统上电后,将电机GPIO和红外避障传感器初始化,红外传感器若未检测到障碍物,则直线行驶;若左边传感器检测障碍物时,小车向右转;若右边传感器检测到障碍时,小车向左转。避障工作模式工作流程图如图8所示。
图8 避障工作模式软件工作流程图
3.1.4 寻光工作模式
树莓派开发板上电后,启动寻光行走功能,当两路光敏电阻均检测到有光时,小车前进;当左侧检测到有光时,小车左转;当右侧检测到光时,小车右转;当左右两侧均未检测到光线时,小车停止。利用设备初始化函数,将电机GPIO和寻光GPIO初始化,并将PWM频率设为10kHz。在寻光运动函数中嵌套获取寻光状态函数、小车指令左转、小车指令右转、小车运动和小车停止函数来实现寻光行走的业务。寻光工作模式软件流程图如图9所示。
图9 寻光工作模式软件流程图
3.2 OpenCV摄像头软件设计
本系统利用OpenCV库来实现视频拍摄功能。上电后,启动蓝牙连接,操作者就可以根据通过摄像头查看当前环境,摄像头可以做到对物体、人脸和颜色等进行识别,本系统主要用到物体识别。OpenCV摄像头软件流程图如图10所示。
图10 OpenCV摄像头软件流程
3.3 烟雾探测器软件设计
3.3.1 烟雾探测器的主程序
上电后需要先给烟雾传感器进行预热,进行初始化。初始化结束后,烟雾探测器进入待测状态,烟雾浓度大小经ADC0832转换成数字数据,再经显示器显示出来,主程序流程图如图11所示。
图11 主程序设计
3.3.2 烟雾浓度读取设置
系统硬件首先对各个模块初始化,再读取AD转换后的实时烟雾浓度值,并判断当下的烟雾浓度范围,然后执行相应的指示控制,判断按键是否被按下,如果没有按下,就继续读取AD转换的烟雾浓度值;如果按键处于按下状态,则需要设置相对应的参数值,液晶屏同时实时显示设置的数值。烟雾浓度读取流程如图12所示。
图12 烟雾浓度读取设置
4 系统调试
将本系统置于6种不同环境中进行测试,OpenCV成像系统所拍摄的视频分辨率为640×480,帧率为每秒25帧,可清楚地看到现场情况。烟雾浓度检测的结果如表1所示。
表1 烟雾浓度测试结果
3 4 4 0 4 5 5 0 5 7 7 0 6 9 8.9 1.1
测试结果表明:此烟雾检测器能够准确快速地检测出环境中烟雾浓度,误差范围为0%~1.1%,所拍视频能够使操作者看清楚环境情况,达到了预期目的。
5 结论
本文设计了一款集遥控、现场视频拍摄和烟雾浓度检测于一体的火灾探测器,本系统可用于在较恶劣的环境代替人进行火灾探测,采用手机APP结合树莓派开发板进行总控制,OpenCV摄像系统拍摄现场视频,基于51单片机控制的MQ-2进行烟雾探测。实验表明,整个系统具有低功耗以及运行稳定的优点,操作者可通过手机观察到现场实际情况、获取到较精确的烟雾浓度值,达到了设计目的。