孙艺哲,陈增瑞,靳 鸿,张 瑜
(1.中北大学 电子测试技术国家重点实验室,太原030051;2.中北大学 仪器科学与动态测试教育部重点实验室,太原 030051)
随着经济的发展以及人民生活质量的提高,醉酒驾驶的现象也越发严重,由醉驾而引起的交通事故也屡见不鲜。 目前,我国常用的手持式酒精检测仪虽能检测驾驶者是否醉驾, 但其缺乏主动性,无法在醉驾行为开始之前就给予驾驶者以警告。 与此同时, 高价的传感器限制了防醉驾装置的使用,导致其市场占有率一直不高[1-3]。
文中所设计的车载防醉驾系统旨在改变这一现状:该系统被嵌入至车内,检测行为在司机驾驶之前,从而改变被动检测的局面[4];该系统采用易获取的传感器,通过多测点的方式在降低成本的同时获得可靠数据,使用神经网络对多路传感器信号进行信息融合。
由文献[5]人体酒精代谢模型可知,血样中酒精浓度值BAC(blood alcohol concentration)在饮酒后0.5 h 内迅速上升,约1 h 达到峰值。 此后,BAC 几乎呈直线下降,当降至一定程度后速度逐渐减慢。 文献[6]显示,醉酒后会附有心率增快、血压降低、皮肤血管扩张等现象;驾驶员饮酒后,少部分酒精会通过呼气、体液等途径排除体外,因此选择对车体内酒精气体浓度、驾驶者的心率信息进行监测。 同时, 考虑到开窗等不确定因素对传感器的影响,选择多布点的测试方式,通过智能信息融合技术将不同的指标进行信息融合,从而对驾驶者是否饮酒做出判断。
车载防醉驾系统结构如图1 所示。 整个系统由车载电源供电,当驾驶者插入钥匙旋转至ACC 档位时,车辆电瓶开始对外供电,该系统通过DC-DC 稳压模块接入汽车电源,酒精气体传感器收集车内多测点的酒精浓度信息,心率传感器置于方向盘处以方便对驾驶者心率的检测, 微控制器MCU(microcontroller unit)通过算法进行信息融合并做出判断。若无饮酒驾驶,车辆可以正常点火启动;否则,控制芯片与GSM 芯片通信, 向预设手机号发送提醒短信,并禁止汽车点火电路工作。
图1 车载防醉驾系统结构Fig.1 Vehicle anti-drunk driving system structure
MQ-3 半导体酒精传感器使用的气敏材料是在清洁空气中电导率较低的SnO2,当传感器所处环境中存在酒精蒸气时,传感器的电导率随空气中酒精气体浓度的增加而增大[7]。 通过标定试验,传感器输出电压与环境中酒精气体浓度近似函数关系为
式中:f(x)为酒精气体浓度值;x 为电压值,标定曲线如图2 所示。
图2 酒精气体传感器标定曲线Fig.2 Calibration curve of alcohol gas sensor
市售常见的心率传感器,按照测试原理主要分为两类。 一类以光电透射测量法测量心率,LED 灯发出绿光照射在皮肤上,反应皮肤浅部微动脉的信息,通过光感受器测量反射光并转化为电信号[8],该传感器体积较小,只需监测人体指尖部位,但受杂光干扰影响较大。 另一类为手握式心率监测,使用心电信号测量原理,心肌纤维产生微小电流传到皮肤表面,由于体表分布的不同而产生电位差,获取该信号提取2 个相邻R 波的时间间隔则可获得被测者心率信息。
所设计的系统视驾驶者心率为重要参数,应该避免因外界影响而产生较大波动,同时考虑安装方式,故选用后者,该传感器可嵌置车辆方向盘处以方便测试。
所设计的系统为嵌入式设备,其主控芯片除了基本的控制外设工作外,还需要进行一定量的计算工作,包括信息的融合,因此需选用具有Cortex-M3内核的STM32F103ZET6 单片机, 其内核时钟频率高达72 MHz[9],且内部含有Flash 和SRAM,可以满足设计所需。
GSM 模块通过串口与中心控制模块连接,通过AT 指令与中心控制模块交换信息。 GSM 不仅支持移动通讯,还可依靠于基站之间的通讯实现地理定位[10]。所设计的系统可通过GSM 模块将醉驾警告信息与位置信息通过短信发送至预设手机号中。
在文献[5-6]的基础上设计试验:以一体重为68 kg 的成年男性为被测对象,在短时间内喝下一定量的酒(大于法律规定酒后驾驶标准),每隔一段时间对模拟环境下的装置进行采样以获得数据,根据样本数据构建人体酒精代谢模型和神经网络评价模型。 考虑神经网络预测模型的建立和实际应用的情况,需增加评价等级的指标对不同时刻的被测对象进行量化分级。 经过预处理后的部分样本数据见表1。
表1 试验数据Tab.1 Experiment data
由表可知,人体饮酒后约1 h,体内BAC 值达到峰值,此时记录人体状态量为10;未饮酒的初始状态0 h 和完全分解后的稳定状态均记为0, 表示体内酒精几乎完全分解。
根据酒精在体内血液分解的动力学规律[11]可知,血液中酒精浓度与时间近似函数关系为
基于试验数据运用遗传算法对函数最佳参数进行搜索寻优, 为得到最终确定结果, 使用fminsearch 函数求得的最佳值为k=103.6538,q=0.1869,r=2.025。
图3 人体酒精代谢模型曲线Fig.3 Curve of human alcohol metabolism model
经等级划分后状态值便为神经网络的目标向量y,不同位置酒精传感器的电压输出值、心率为输出值为神经网络输入量(x1,x2,x3)。 神经网络拓扑结构如图4 所示。
图4 神经网络拓扑结构Fig.4 Neural network topology
为了确保训练数据足够充分,利用数据重构得到的代谢模型进行样本扩充,选择更小的时间间隔对重构函数进行采样为神经网络的训练提供较为充足的样本,最终确定样本数为100 组。
随后在MatLab 中使用上述数据进行模型训练,训练过程如图5 所示。 由图可见网络训练至60步时可达到目标精度要求。
图5 神经网络训练过程Fig.5 Neural network training process
使用该网络进行对部分实测数据进行验证,观察网络的计算值与期望值, 误差在可接受范围内,如图6 所示。 随后使用命令语言“net.IW{1,1};net.b{1,1};” 等导出权值矩阵和阈值矩阵进行保存,以方便移植在嵌入式系统中进行离线工作。
图6 神经网络信息融合效果Fig.6 Renderings of neural network information fusion
所设计的系统包含多传感器检测模块、MCU控制模块、GSM 通讯模块等, 对应程序需包括传感器检测子程序、模数转换子程序、信息融合子程序、串口通讯子程序等,程序流程如图7 所示。 所涉及的程序均使用C 语言在Keil 平台进行编程调试。为便于开发,此次设计使用最小系统开发板。
图7 程序总流程Fig.7 Process master flow chart
下位机子程序中信息融合子程序较为特殊。众所周知, 神经网络是利用神经元之间的连接对输入与输出的关系进行建立与保存的, 故在此将已经训练好的连接关系在Keil 平台以数组的方式进行保存,通过对采集的数据进行类似的预处理、归一化等操作,使之与MatLab 平台的训练数据具有相同的形式, 随后通过融合计算得出等级划分值。理论上若此值不为零,控制器则不允许点火电路工作。
在Keil 平台编译工程并生成hex 文件烧写至控制芯片中,同时根据引脚定义对各模块进行物理连接。 因车辆点火电路的复杂性,在实验室环境下以蜂鸣器检验是否允许点火电路工作。
被测者饮酒后40 min 使用该系统进行功能验证。 验证结果:手机接收到警告信息,蜂鸣器报警,短信截图如图8(a)所示;根据短信中的经纬度进行地理位置验证,如图8(b),定位信息符合实际。
图8 短信提醒功能演示Fig.8 SMS reminder function demonstration
对基于智能信息融合的防醉驾系统进行了原理、硬件结构、信息融合算法的说明,并以STM32 主控芯片为基础搭建了系统。 在实验室环境下进行了功能验证,该系统基本能够满足设计要求,能够对驾驶者的饮酒行为给予警示。