基于物联网的嵌入式酒驾自动检测系统设计
扫描二维码
随时随地手机看文章
引言
近年来,随着我国经济的快速发展,人民生活水平的不断提高,全国机动车辆数量和驾驶员人数迅猛增长。汽车在给人们带来生活便利、经济利益和生活品质的同时,也带来了交通事故。近年来道路交通事故频发,造成了严重的经济损失和人员伤亡。酒驾、超速和疲劳是交通事故高发的三个主要原因,这其中酒后驾车所引发的交通事故已占到总数相当大的比例。无视交通管理法规酒后及醉酒驾车造成严重后果的违法犯罪事件越来越多。目前我国酒驾检测主要是由交通警察在路口设置警点,使用呼气式检测仪器对过往可疑车辆进行拦车检查。但要进行路检只能针对部分车辆抽样检测,以确定驾驶员是否酒驾,且无法实时监控驾驶员酒后驾车情况叫而且进行路检需要大量的人力和物力,另外一些酒后驾车者拒不配合检测,也给我们交警的执法带来困难。
为了更好地遏制酒驾,减少交通事故的发生。本文提出了一种基于物联网的车载酒驾自动识别系统。系统利用目前流行的物联网技术,以STC12C5A16AD单片机为核心,通过MQ-3传感器来检测是否酒驾。把传感器嵌入驾驶室内,通过对驾驶座位的前方、上方和左右4个检测点的酒精浓度检测,判断是否酒驾。当检测到酒驾后,系统发出声光报警并禁止汽车发动,同时通过GPRS模块将酒驾车辆信息实时地发送给家人和当地交通部门。这样可以有效的预防酒驾,便于交通部门集中监控,不再需要交警进行大规模的进行蹲点拦车检测,节省的人力和物力。
系统借助物联网技术,把每辆汽车作为一个节点,从众多的节点传感器采集数据,然后通过无线传输技术把信息发送给家人和当地交通部门总节点。系统整体结构如图1所示,每辆汽车的通信对象有两个:一个是家人,另一个是交通部门服务器。每辆汽车安装一个车载酒驾自动检测系统,每个检测系统主要由以下模块组成:STC12C5A16AD单片机控制系统、呼气式酒精传感器MQ-3、LCD显示模块、声光报警模块、继电器控制模块和GPRS模块。酒驾自动检测系统的整体架构如图2所示。
1系统整体架构与工作原理
1.1系统整体架构设计
1.2工作原理
当驾驶员驾驶员扭动车辆钥匙,检测系统上电启动,进行硬件初始化。酒驾自动检测系统开始工作。4路MQ-3传感器把检测到的模拟信号通过A/D转换为数字信号,通过对此数字信号与预先设置的数值进行比较来判断是否酒驾,并通过LCD液晶显示屏显示阀值与检测值。STC单片机对气体精浓度超标时,利用控制继电器控制车辆禁驾。继电器控制接中的酒精浓度信息进行分析,若浓度未超标,车辆正常行驶。一旦某一路传感器检测到的酒精浓度超出安全范围,系统的LED警示灯闪烁,同时把相关信息发送给预先设定好的家人的手机上,同时通过GPRS模块发送信息给当地交通部门,并通过蜂鸣器发出警报声。
2系统设计
2.1单片机系统设计
本系统的主控模块采用的是宏晶科技生产的STC12C2052AD单片机,STC12C2052AD是一种高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统的8051,但速度快8~12倍。内部集成MAX810专用复位电路,2路PWM,8路高速8位A/D转换。STC12C5A16AD单片机本身自带8位高速ADC,所以大大简化电路设计。单片机系统原理如图3所示,图3中的按键K2和K3可进行阈值设置,其中K2为“增加”、K3为“减小”按键。L2和L3为报警指示灯,分别可以进行酒后和醉酒两级报警。醉酒阈值存储在EEPROM芯片AT24C01中,并可以通过“增加”、“减少”按键调节并保存。AT24C01是I2C接口的EEPROM芯片,可以用于掉电不易失数据的存储。其电路如图4所示。图中A0、A1和A2为芯片的地址引脚,一般接地即可。SCL和SDA为AT24C04和单片机FC通信的时钟线和数据线。
2.2继电器控制电路
继电器控制电路主要功能是:当MQ-3传感器检测到酒精浓度超标时,利用控制继电器控制车辆禁驾。继电器控制接口与汽车点火与电喷电路相连接,通过单片机编程可控制汽车启动。汽车电喷控制电路如图5所示。
2.3显示电路
显示部分采用SMC1602液晶屏进行显示,该液晶显示器以其低功耗、体积小、显示内容丰富、超薄、轻巧的优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
芯片工作电压为4.5〜5.5V,工作电流为2.0mA,在本设计中采用5.0V供电。液晶屏与单片机的接口电路如图6所示,其中J2的3脚为背光引脚,R9和R10电阻用于调节背光亮度。J2的4、5和6脚分别接液晶的RS、E/W和E控制引脚,J2的7-14引脚为数据引脚。在1602液晶屏中显示某位字符的程序如下:
voidL1602_char(ucharhang,ucharlie,charsign)
{
uchara;
if(hang==1)a=0x80;
if(hang==2)a=0xc0;
a=a+lie-1;
enable(a);
write(sign);
}
2.4MQ-3传感器电路
检测简单易行,本设计中釆用MQ-3酒精传感器。检测对象的血液酒精浓度由人体血液酒精含量与呼出气体中的酒精浓度之间的比值关系计算得出。我国对酒驾的判定界限为100〜300mg/L,当检测到酒精浓度小于200mg/L时,发动机可以正常启动;而当检测到浓度超过200mg/L时,发动机电源切断,发动机不能正常启动。酒精传感器的工作原理是根据人饮酒后血液里的酒精浓度值与呼出气体的酒精浓度值有一个固定的比例关系,公式如下:
血液酒精浓度(mg/L)=2200*呼所酒精浓度(mg/L)
由于MQ-3该传感器的输出信号为毫伏级电压信号,因此需要对该信号进行放大后再经模/数转换传递给控制单元作进一步分析处理,其工作原理如图7所示。进行A/D转换的程序如下:
{
uinti;
ADC_CONTR&=0xf7;
fOr(i=250;i>0;i--);//待输入电压稳定后开始转换
ADC_CONTR|=0x08;//ADC_Start=1,启动转换
while((ADC_CONTR&0x10)==0);//等待转换结束
ADC_FLAG=1
ADC_CONTR&=0xe7;
returnADC_RES;
}
2.5GSM模块电路
无线通信模块选用的是MC551模块,单片机通过串口发送AT命令给MC55i模块,对其进行控制。当传感器检测到的酒精浓度超出安全范围,MC55i无线模块随之启动。通过移动基站的Cell-Id定位法,获取车辆当前位置的信息,再利用GPRS模块把相关信息通过短信发送给家人,并通过GPRS上传到交管部门,便于采取相应的处理措施。AT+CREG指令控制MC55i模块进行基站定位,获取车辆的当前的位置信息。短消息编码采用Unicode中文编码。在发送短信时,对常用汉字进行裁剪,将常用汉字的字库存入单片机FLASH中,汉字字符通过查表,将码制置换为Unicode编码,随后设置短信协议为PDU模式,发送中文汉字。PDU模式不仅支持中文短信,也能发送英文短信。在PDU模式中,可以采用三种编码方式来对发送的内容进行编码,它们是7-bit编码、8-bit编码和UCS2编码(也就是16-bit编码)。7-bit编码用于发送普通的ASCII字符,它将一串7-bit的字符(最高位为0)编码成8-bit的数据,每8个字符可“压缩”成7个;8-bit编码通常用于发送数据消息,比如图片和铃声等;UCS2编码用于发送Unicode字符。PDU串表面上是一串ASCII码,由0~9、A~F这些数字和字母组成。它们是8位字节的十六进制数,或者BCD码十进制数。PDU串不仅包含可显示的消息本身,还包含很多其他信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。
将要发送的信息根据AT命令协议压缩成一个PDU串,然后将该PDU串通过串口发送给GSM模块,最后由GSM模块发送给目标手机(这里指的是监控中心的手机号码),整个发送过程要结合上面所讲的发送PDU结构来进行,具体函数包括:gsmEncode7bit()、gsmEncode8bit()、gsmEncodeUcs2()、gsmlnvertNumbers()等。用函数gsmEncodePdu()可将原始信息压缩成PDU串的功能。以上函数都已包含在这个程序中,具有程序如下:
intgsmEncodePdu(constSM_PARAM*pSrc,char*pDst)
{
intnLength;//内部用的串长度
intnDstLength;〃目标PDU串长度
unsignedcharbuf[256];//内部用的缓冲区
nLength=strlen(pSrc->SCA);
buf[0]=(char)((nLength&1)==0?nLength:
nLength+1)/2+1;
buf[1]=0x91;//固定:用国际格式号码
nDstLength=gsmBytes2String(buf,pDst,2);
nDstLength+=gsmInvertNumbers(pSrc->SCA,&pDst[nDstLength],nLength);
nLength=strlen(pSrc->TPA);
buf[0]=0x11;
buf[1]=0;//TP-MR=0
buf[2]=(char)nLength;
buf[3]=0x91;//固定:用国际格式号码
nDstLength+=gsmBytes2String(buf,&pDst[nDstLength],4);
nDstLength+=gsmInvertNumbers(pSrc->TPA,&pDst[nDstLength],nLength);nLength=strlen(pSrc->TP_UD);
buf[0]=pSrc->TP_PID;//协议标识(TP-PID)
buf[1]=pSrc->TP_DCS;
buf[2]=0;//有效期(TP-VP)为5分钟
if(pSrc->TP_DCS==GSM_7BIT)
{
buf[3]=nLength;//编码前长度
nLength=gsmEncode7bit(pSrc->TP_UD,&buf[4],nLength+1)+4;
}
elseif(pSrc->TP_DCS==GSM_UCS2)
{
buf[3]=gsmEncodeUcs2(pSrc->TP_UD,
&buf[4],nLength);
nLength=buf[3]+4;
}
else
{
buf[3]=gsmEncode8bit(pSrc->TP_UD,
&buf[4],nLength);
nLength=buf[3]+4;
}
nDstLength+=gsmBytes2String(buf,&pDst[nDstLength],nLength);
returnnDstLength;
}
2.6供电电路
本设计采用USB接口供电,电源电压5V。同时,USB接口通过内含PL2303芯片的转换电路对单片机进行程序编写,以及与GPRS模块通信。其电路原理如图8所示。
2.7软件设计
系统采用C语言进行编程,软件设计的主流程如图9所示。系统上电后,系统先进行初始化,然后传感器会把检测到的酒精浓度与设定到外置存储器中的阈值进行比较,从而判断酒精浓度是否超标。当检测到浓度超过设定值200mg/L时,系统通过继电器切断发动机电源,发动机不能正常启动,同时把相关位置信息与酒驾信息发送给预先设定好的家人与当地交通部门。
3结语
本文设计基于物联网的酒驾自动检测系统是采用STC12C5A16AD单片机作为主控系统。系统能够自动对驾驶员酒精浓度检测,根据检测结果来控制发动机是否启动,如果酒精含量超标则会发出声光报警,并通过GPRS模块向交通管理部门报警以及家人发送短消息。该系统体积小,功耗低,便于安装等特点。测试结果表明,该系统可以实现很好的实时性和高精度,运行稳定,具有可靠、适应力强的特点,达到了良好的控制效果,具有较好的使用价值。
20211122_619ba5ed2457f__基于物联网的嵌入式酒驾自动检测系统设计