【导读】在中国,每年造成死亡的事故中50%以上都与酒后驾车有关,酒后驾车已经成为交通事故的第一大“杀手”。该方案采用超高灵敏度酒精传感器,超低功耗单片机系统设计,可自动探测酒精浓度,以判断驾驶员是否是酒后开车。如若酒精浓度超标,则无法启动汽车。
好消息!7月10-12日我爱方案网-2014工业、物联网与嵌入式原创方案展暨开发者论坛 ,2014创客集市暨创客嘉年华热辣来袭!地址是:成都世纪城新国际会展中心3号馆A256-B251。在线报名地址:http://www.52solution.com/html/14cdForum_registration
一、方案设计背景
在逢年过节醉酒驾驶更是频频发生,所引起的事故不仅给肇事者带来了身体和经济上的损失而且给家人带来了无限的悲痛。由于上述原因,本方案设计出一套汽车保驾系统装置,不仅可以给驾驶员检测是否醉酒并报警提醒驾驶员,而且可以把这一数据发送给驾驶员的亲人,让亲人阻止驾驶员行驶。由于考虑到我国驾驶员平均年龄在35 岁以上,所有该系统界面尽量做到简单、直接,便于驾驶员快速熟练的使用。
二、方案设计原理
1、原理概述
该汽车安全保驾系统系统采用超高灵敏度酒精传感器用旁热型半导体式酒精气敏元件MQ3,超低功耗I 安芯一号单片机系统,自动探测酒精浓度的方法,
以判断驾驶员是否是酒后开车。主机电路包括8 个模块,分别是酒精传感电路模块、温度传感模块、GSM 通信定位模块、键盘控制模块、液晶显示模块、声光报警模块、语音呼叫模块、继电器控制模块。
该系统放置在汽车仪表盘位置,当司机打开车门时,酒精探测控制仪启动,此时发动机处于被锁状态,汽车无法启动。酒精传感器加热后,探测控制仪对酒精传感器探测的气体信号进行检测。由于酒精含量与酒精传感器检测后产生的电压信号成特定的比例关系,因而可根据电压信号进行酒精含量的判断。检测到的信号经过放大和滤波之后,通过单片机内置的8 路高速10 位ADC 转换为数字信号,由单片机对此信号进行处理判断。
假设酒精含量没有超标,LCD 显示屏幕显示当前酒精浓度,同时绿色指示灯(正常)亮起,控制继电器不起作用,汽车随之启动;
如若酒精含量超标,则红色指示灯(不正常)亮起并进行声光报警,控制继电器切断点火装置电源,同时安全带收紧,系统启动呼叫紧急联系人装置,通过GSM 通信定位模块测定当前位置并发送“酒精浓度过高,请劝阻驾驶员行驶!”短信告诉给驾驶员的亲人,此时驾驶人员无法启动汽车,从根本上实现控制酒后驾车。汽车启动后,控制仪随即进入低功耗状态,只有酒精浓度探测电路一直工作,一旦驾驶人员驾驶过程中饮酒, 控制仪立即恢复到正常工作状态。
图<1>系统设计原理框图
2、硬件设计原理
完整的系统有下面8 个模块够成,其整体效果,如图<2>所示。
图<2>系统效果图
(1)主控电路
安芯一号是一种高速、高可靠、低功耗、超强抗干扰的新一代8051 单片机,比普通的8051 速度快8—12 倍,内部集成高精度R/C时钟,而且内部集成高可靠复位电路,8 级可选复位门槛电压,还集成了晶振电路,为开发板节省了空间。所以主控电路的结构比较简单,只是串联了两个电容,还加上了两排排针方便接入外部电路。
(2)酒精检测电路(酒精传感器信号采样及处理)酒精传感器电路:根据GB19522-2010《车辆驾驶人员血液、呼气酒精含量阈值与检验》,交警判定酒后驾驶的标准见表1.
表1 车辆驾驶人员血液酒精含量临界值行为类别对象临界值
测量血液中的酒精含量需要到医院进行,由于人体呼出气体中的酒精含量与人体血液中的酒精浓度是有一定的对应关系,所以呼气酒精测试仪的测量结果也可作为酒后驾驶的判断依据,且更便于执法人员现场操作和快速作出判断。因此一般先检测车辆驾驶人员的吹气中酒精含量,再换算出其血液中酒精含量,其换算公式为
BAC(mg/L)=2200× BrAC(mg/L), 或BAC(mg/100mL)=220× BrAc(mg/L)
该系统采用旁热型半导体式酒精气敏元件MQ3,探测范围为10~1000ppm。酒精检测电路由高精度酒精传感器、信号调理放大电路、滤波电路和单片机内置10 位高速ADC 等组成,主要功能是检测酒精含量,判断其是否超标。采用安芯一号单片机内部8 路10 位高速AD,将采样了32 次的电压值求平均值,然后将平均的电压值带入到下面表<2>中的对应式子,求出酒精的浓度,并将计算出来的结果显示到LCD12864 液晶上,如图<4>。
表<2>酒精传感器电压值与酒精浓度对应关系
图<3> 酒精模块图

图<4>酒精浓度显示
(3)温度测试电路
采用DS18B20,可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域,如图<5>。
图<5>温度传感器
(4)浓度阈值保存电路
采用AT24C02,是一个2K 位串行CMOS E2PROM 内部含有256 个8位字节,CATALYST 公司的先进CMOS 技术实质上减少了器件的功耗。AT24C02 有一个16 字节页写缓冲器。该器件通过IIC 总线接口进行操作,有一个专门的写保护功能。
(5)指示灯电路
指示灯电路有红绿黄三个指示灯,红灯是电源指示灯,工作时亮;绿灯是检测提示灯,因为酒精探头需要一定时间加热,才能达到理想的灵敏度,加热时间到,绿灯亮,表示可以进行浓度探测;黄灯为报警指示灯,黄灯不亮,表示可以行车;当黄灯亮时,表示酒精浓度超标,不可以驾驶。
(6)液晶显示电路
此系统选用的是LCD12864.这是一款低功耗的点阵图形式LCD,可以工作在3.3 V 供电的情况下,用来显示温度、酒精阈值还有几个简单的按键操作。
(7)GSM 系统设置电路
本方案设计在系统终端采用了GSM 系统模块如图<6>所示作为开发平台,当酒精检测系统发出醉酒超标信号时,单片机会发送查询当地地址指令给GSM 模块,模块将返回当前汽车的具体位置的经纬度,单片机收到此信号后,将把此信息以短信的形式发送给驾驶员亲人的手机,而且还会发送一条“酒精浓度过高,请劝阻驾驶员行驶!”的短信给亲人。而且当如果车主发现自己的汽车遗失时,车主只需发送一个“ZXQCWZ”的短信给GSM 模块,该模块也将会把车子的当前位置发给车主。当车主或车主的亲人收到GSM 模块发送的经纬度数据,车主或亲人就可以在网上搜索“手机基站数据转经纬度”的网站就可以将
GSM 模块返回的数字数据转为详细的清楚的地图数据。
图<6>GSM 模块
(8)继电器控制电路
控制继电器主要用来控制汽车电动机的的启动,当酒精传感器检测到的酒精浓度没有超标时,继电器不启动,整个系统正常工作,当酒精传感器检测到的酒精浓度已超标,继电器启动,断开电动机的发动,那么汽车就不能运行。从根本上阻止了酒后驾车的危险。
(9)语音呼叫系统控制电路
采用APR9600 语音录放芯片,它是继美国ISD 公司以后采用模拟存储技术的又一款音质好、噪音低、不怕断电、可反复录放的新型语音电路,单片电路可录放32-60 秒,串行控制时可分256 段以上,并行控制时最大可分8 段。与ISD 同类芯片相比它具有:价格便宜,有多种手动控制方式,分段管理方便、多段控制时电路简单、采样速度及录放音时间可调、每个单键均有开始停止循环多种功能等特点。
(10)报警和键盘电路
利用蜂鸣器作为报警器,当酒精含量超标时,发出禁止行车警告音,不超标时发出允许行车提示音。由单片机的I/O 口驱动蜂鸣器来实现。键盘模块可以在一些紧急的时候,进行拨号报警,挂机,设置等操作,增加系统人性化的操作。如图<7>
图<7>键盘模块
3、软件设计原理
对于单片机的开发应用中,逐渐引入了高级语言,C 语言就是其中的一种。汇编语言的可控性较高级语言来说更具优越性。程序编写语言比较常见的有C 语言、汇编语言。汇编语言的机器代码生成效率高,控制性好,但就是移植性不高。
C 语言编写的程序比用汇编编写的程序更符合人们的思考习惯。还有很多处理器都支持C 编译器,这样意味着处理器也能很快上手。且具有良好的模块化、容易阅读、维护等优点,且编写的模块程序易于移植。基于C 语言和汇编语言的优缺点,本系统采用C 语言编写方法。
软件编写的主体思路是将系统按功能模块化划分,然后根据模块要实现的功能写各个子程序。整个软件程序的编写采用查询式方式编写的。
在系统的初始化程序中,整个系统的初始化编程中按照如下图<8>所示编写,当把酒精传感器接触到酒精气体时,整个系统触发通信报警装置,程序编写如图<9>所示。
图<8>系统初始化的主程序流程图

图<9>酒精浓度高时程序流程图
当酒精浓度过高时,GSM 模块给驾驶员亲人发送短信,如图<9>所示。可见图中的手机上的短信是中文信息,由于GSM 模块支持两种方式来发送和接收SMS 短信息, 文本模式和PDU(ProtocolDescription Unit)模式,文本模式只能发送普通的Ascill 字符,要发送图片,铃声,其它编码的字符(如中文)就必须采用PDU 模式。PDU 模式中,可以采用三种编码方式来编码要发送的内容,分别是7bit 编码,8bit 编码,16bit 编码,7bit 编码用于发送普通的Ascill 字符,8bit 编码通常用于发送数据信息,如图片和铃声,而16bit 编码用于发送Unicode 字符。三种编码可以发送的最大字符分别是160,140,70。
发送中文短信要采用PDU 模式的Unicode 编码方式,具体步骤描述如下:
(1)GB2321 编码到Unicode 编码的转换。
(2)Unicode 编码到16bit 编码的转换。
得到的Unicode 编码后,还需要转换成PDU 的16bit 编码才可以正确的发送。
这个转换过程中Unicode 编码最开始的0xffff 标志要去掉,在0xffff 之后的内容才是真正的Unicode 字符。