基于Arduino的智能破窗逃生系统设计
2018-01-18王金聪刘晓丽李海朋张曙光
王 超,王金聪,刘晓丽,李海朋,张曙光
(1.东北林业大学 机电工程学院,哈尔滨 150040;2.安徽工程大学 电气工程学院,安徽 241000)
近年来,随着我国汽车工业的发展,人们的出行条件得到了很大的改善,但是由此引发的交通安全问题也越来越严峻,连续多年因交通事故死亡人数达十万人左右。发生交通事故后如何采取有效手段来降低事故带来的人身伤亡和财产损失成为亟待解决的问题,我们将交通事故分为碰撞类交通事故、落水类交通事故、纵火类交通事故。针对上述3类交通事故最有效的逃生手段就是破窗逃生,现如今破窗手段最常见的就是安全锤,但是安全锤实用性太弱,5 mm厚的钢化玻璃需6~12次才能击破。对于老幼妇孺人群来说,使用安全锤进行破窗难度太大。同时公共交通中安全锤丢失情况严重,导致关键时刻车辆被困人员无计可施。并且使用安全锤破窗还需要一定的发挥空间,如发生交通事故导致车内被困人员空间狭小等情况,使用安全锤破窗具有一定难度。
基于目前交通事故逃生手段的不足,本文设计了一种基于Arduino平台的智能破窗逃生系统。该系统能够自动感知外界环境信息,如发生上述交通事故时,能够自动迅速破窗,有效降低交通事故对人身安全造成的伤害。
1 系统总体设计
本系统有3个工作区,分别对应处理3种交通事故。
冲撞事故工作区本系统对于冲撞事故的处理采取与汽车安全气囊相结合的处理方式。当发生冲撞事故时,一旦汽车的安全气囊电子控制模块ECU判断汽车撞击满足气囊爆破要求,微处理器通过串行通讯总线SPI发送爆破命令给气囊爆破控制器件,本系统通过检测ECU微处理器硬件接口数字信号,当检测到爆破命令,本系统发送指令给车窗破碎装置进行破窗[1]。
纵火事故工作区本系统通过烟雾传感器实时采集烟雾信息,经过Arduino内部的A/D转换模块转换为数字量,当烟雾浓度超过预先设定的烟雾浓度危险阈值时,对超过时间进行计时,当超过时间大于设定时间则发送破窗指令给破窗装置进行破窗。
落水事故工作区本系统对于落水事故的处理与对于纵火事故的处理工作原理相同,水压传感器采集水压信息,通过Audrino对水压信息进行分析处理作出决策,判断是否进行破窗操作。
2 系统硬件设计
本系统硬件部分包括传感器模块、主控制器模块、继电器模块、机械破窗模块、电源管理模块。电源管理模块与各个模块相连,提供给各个模块合适的工作电压与工作电流。Arduino内部设置有信号输入端和信号输出端,信号输入端与传感器模块相连,信号输出端与继电器模块相连。继电器模块与机械破窗模块相连,控制机械破窗模块的工作。系统整体结构如图1所示。
图1 系统硬件结构Fig.1 System hardware structure
2.1 主控制器模块
本系统采用Arduino作为控制模块,Arduino是一款使用方便的开源电子原型平台,开发界面简约、下载程序简单方便,可简单地与传感器、各式各样的电子元件连接,十分方便上手。
Arduino单片机采用Atemga328微处理器,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,1个16 MHz晶体振荡器,1个USB口,1个电源插座,1个ICSP header和1个复位按钮[2]。
2.2 电源管理模块
本系统采用12 V蓄电池作为总电源,12 V稳定直流电压给机械破窗模块供电,使用降压电路产生5 V稳定直流电压给继电器模块供电,同时电源管理模块还包括继电器驱动电路。
如图2所示,降压电路选用LM7805降压模块,输入电压12 V经电容滤波进入LM7805后经稳压滤波输出稳定的5 V电压,用于给主控制器模块以及继电器模块供电。
图2 降压电路Fig.2 Step-down circuit
Arduino单片机的引脚最大输出电流不超过40 mA,输出电流能力有限,达不到驱动继电器的电流,图3为继电器驱动电路,在继电器模块中我们所选用继电器的工作吸和电流为65 mA,三极管S8050的直流放大倍数取100,因此:
基极电流=继电器工作电流/放大倍数=65 mA
为工作稳定实际基极电流取为计算值的2倍,即1.3 mA。因此:
基极电阻=(5 V-0.7 V)/基极电流≈4.4 kΩ
当三极管由导通变为截止时,继电器绕组会产生一个较大的自感电压,其与电源电压叠加后加到三极管发射极、集电极两极上,可能导致发射极被击穿。为了消除感生电动势的有害影响,在继电器线圈两段反向并联一个保护二极管,通过保护二极管导通形成的环流将感生电动势释放掉,保证三极管的安全。
2.3 传感器模块
2.3.1 烟雾传感器模块
本系统使用MQ-2型烟雾传感器用于对火灾信息的监测。如图4所示,烟雾传感器模块核心是MQ-2型传感器,加入运放电路。模块具有双路信号输出(模拟量输出AOUT和TTL电平输出DOUT)[3],在本系统设计中只使用模块的模拟量输出,其TTL电平输出引脚闲置。
图3 继电器驱动电路Fig.3 Relay drive circuit
图4 烟雾传感器模块电路Fig.4 Smoke sensor module circuit
2.3.2 水压传感器模块
本系统使用MPXV5004G集成硅压力传感器用于对水压信息的监测。MPXV5004G内部带有放大器,输出电压0~4.9 V,可直接连接至Arduino单片机的模拟输入通道。如图5所示,传感器输入端应加去耦电容以滤除器件本身和电容所含的高频信号干扰,信号输出端应加去耦电容以滤除输出信号中的噪声。
图5 水压传感器模块电路Fig.5 Hydraulic sensor module circuit diagram
2.4 机械破窗模块
本系统所采用的机械破窗装置是将额定工作电压为12 V的推杆电机和市面上存在的迷你破窗器相组合并进行一些改装。当需要破窗时,继电器导通,推杆电机工作,推动迷你破窗器,完成破窗动作。
2.5 实际电路
本系统各个模块的电路连接如图6所示。烟雾传感器模块引脚AOUT接Arduino控制器的模拟输入接口 A0,水压传感器模块的引脚 AOUT接Arduino控制器的模拟输入接口A1,安全气囊ECU引脚接Arduino控制器的数字输入输出接口D9,Arduino控制器的信号输出接口设置为D8。机械破窗模块通过继电器模块连接12 V电源。
图6 实际电路连接Fig.6 Actual circuit connection diagram
3 系统软件设计
Arduino语法是建立在 C/C++基础上的,以Setup()开头,以Loop()作为主体的一个程序构架[2],但使用Arduino设计项目只能实现单任务的处理,这在实际工程使用中有很大弊端,目前通过平台移植多线程模型ProtoThreads可以实现多任务调度并取得成功应用[4]。因本系统软件设计中需要考虑同时对3类外界环境信息进行监控并处理,因此利用ProtoThreads实现Arduino多线程处理。
系统软件设计分为3个任务函数,任务一函数是通过烟雾传感器对外界环境进行监测,以判断是否发生火灾并执行破窗操作;任务二函数是通过水压传感器对外界环境进行监测,以判断是否发生车辆落水并执行破窗操作;任务三函数是通过监测安全气囊ECU状态,以判断是否发生严重车辆碰撞事故并执行破窗操作,系统多线程流程如图7所示,主函数循环执行任务一、任务二、任务三。任务一中,烟雾传感器实时采集烟雾信号,经过信号调理电路传至主控制器 Arduino的模拟信号输入口,Arduino内部自带A/D转换模块,将模拟信号转换为数字信号。将烟雾数字量与设定的危险阈值进行比较,若高过危险阈值,则执行一段延时程序后将再次得到的烟雾数字量与危险阈值进行比较,若仍高出设定危险阈值则Arduino I/O口发送破窗指令,执行破窗动作。任务二函数程序流程与任务一类似。任务三中,Arduino I/O口读取安全气囊ECU端口电平数值以判断ECU是否执行打开安全气囊操作,如是则Arduino I/O口发送破窗指令,执行破窗动作。
图7 系统多线程流程Fig.7 Multi thread flow chart of system
4 系统仿真
利用Proteus软件对系统进行仿真,仿真接线如图8所示。由于Proteus元件库中没有MQ-2烟雾传感器,用一个可调电位器代替[5]。另外用开关加直流电源的形式模拟安全气囊ECU模块是否发出爆破命令。
图8 系统仿真接线Fig.8 System simulation wiring diagram
Proteus 8.4版本不必像以前的版本一样,需要在Arduino IDE编写程序后再手工加载,它提供了Arduino的编程界面,只需要加载设置好编译器就能直接仿真[6]。将已编写好的程序进行编译,通过改变传感器状态,观察机械模块状态。
调试结果表明系统符合设计要求。各个模块都能实现其相应的功能,每个事故工作区运行稳定。利用ProtoThreads实现Arduino多线程处理能够同时对3类外界环境信息进行监控并处理。
5 结语
本文设计的基于Arduino平台的智能破窗逃生系统,依托Arduino平台,通过对若干模块的整合,设计出能够自动检测车辆所处的环境信息,如发生事故能够自动破窗帮助乘客逃生的系统。试验结果表明该系统能够稳定有效工作,实际使用中能够降低交通事故造成的人身伤亡,对于本系统的机械破窗模块还可以加以改进,如使用爆破方式进行破窗操作,可以更节约空间而且反应更加迅速。同时本文对于Arduino平台在其他场合地广泛应用也有一定的参考价值。
[1] 杨林.汽车安全气囊电子控制模块ECU设计研究[D].江苏:南京理工大学,2007.
[2] 蔡睿妍.Arduino的原理及应用[J].电子设计工程,2012,20(16):155-157.
[3] 王耕.基于Arduino Due智能家居控制系统设计[D].陕西:西北大学,2015.
[4] 简嘉欣.基于Arduino平台和Protothreads系统的产品原型开发方法研究[D].广东:华南理工大学,2016.
[5] 李海娜,王翠,罗邵屏.基于单片机的火灾报警系统的设计[J].电子世界,2014(5):127
[6] 谢龙汉,莫衍.Protues电子电路设计及仿真[M].北京:电子工业出版社,2012.