邵泽杰 孙俊峰 陈靖康 郑威
摘 要:随着汽车的高速发展与大众化,驾驶员群体规模变得越来越庞大。在此基础上人们对汽车安全的关注度也越来越高,怎样有效地减少交通事故,保护人们的生命财产安全就显得尤为重要。针对这一现象设计了一款智能驾驶安全检测系统,对驾驶员的酒后驾驶与疲劳驾驶行为进行监测和报警,检测驾驶员健康数据。智能驾驶安全检测系统的出现,可以大幅度减少交通事故,保护驾驶员安全,同时实现万物互联。
关键词:智能安全驾驶;STM32;鸿蒙操作系统
近几年来我国的交通事业发展迅速,与此同时也带来了安全隐患,每年发生交通事故几十万起,并且有着明显的上升趋势,这对人民的生命财产构成了巨大威胁。在这些交通事故中,由于酒后驾车引发的交通事故数量占 50%,酒驾成为交通事故的第一大“杀手”。此外,驾驶员的疲劳驾驶也是威胁到交通安全的一个重要因素,对于驾驶员来说迫切需要一个智能安全驾驶系统来检测并提醒驾驶员、发出预警警告,有效减少此类原因引起的交通事故。
同时我们迎来了一个万物互联的时代,物联网也越来越受到大家的青睐。万物互联将人、流程、数据和事物结合在一起,使得网络连接变得更加相关、更有价值,把信息转化为行动,给企业、个人和国家创造新的发展机遇,并带来更加丰富的体验。本项目希望借助鸿蒙操作系统连接各种智能终端设备,做到实时监测驾驶员行为和健康数据,切实保护驾驶员安全。
1 系统整体结构
1.1 整体功能设计
本项目采用功能强大的单片机STM32 来驱动各类传感器,在检测到数值偏离阈值时,使用 GSM 芯片进行报警和自动拨号,系统成本较低且实用性广泛。在驾驶员行为监测方面,使用了 OpenCV开源计算机视觉库,作为最流行的计算机视觉库,它拥有 400 多个图像处理函数,涉及范围面广,执行速度有可观的表现,可以更好地处理行驶过程中的动态行为。智能驾驶监测系统整体架构如图 1 所示。
(1)通过在车内安装酒精传感器,实现对驾驶员是否存在酒驾行为进行判断,如若存在酒驾行为,发出警告并自动拨号联系家属。
(2)通过车内加装摄像头,判断驾驶员的实时行整体功能设计为状态,如闭眼、打哈欠、瞌睡点头等,并发出语音警告。
(3)搭建可穿戴设备,测量驾驶员的各项健康指标。
(4)将以上监测到的驾驶员健康指標数据汇总并生成健康报表,如若发生异常,则自动拨号联系家属并上传实时位置。
1.2 具体功能实现
(1)酒后驾驶监测系统
①酒精检测具体实现流程如图 2 所示。
(2)驾驶员行为状态监控系统
①视觉疲劳检测:基于 dlib 人脸识别 68 特征点检测,通过 openCV 做灰度化处理,检测人眼位置信息,检测眼睛长 / 宽是否大于阈值,判断其是否存在疲劳驾驶。
②打哈欠疲劳检测:获取人嘴的位置信息,通过坐标点的距离来判断是否张嘴及张嘴时间,从而确定人是否存在打哈欠。
③点头疲劳检测:获取实时头部姿态的旋转角度判断驾驶员是否处于打瞌睡状态。
具体实现的驾驶行为状态监测主界面如图 3 所示。
(3)智能可穿戴设备
血氧心跳等健康监测流程如图 4 所示。
(4)智能终端
基于 vue 框架,通过软件 java script 编写的一个小程序,接收采集到的数据和驾驶员的实时定位信息。
2 硬件结构组成
系统所需硬件资源:用来控制各个模块的 STM32F103 单片机、采集数据的各种传感器、实现物联网的ESP8266 芯片、SIM900A 拨号模块、采集人脸数据的树莓派以及智能终端等部分。系统所需具体硬件结构及其关系如图 6 所示。
(1)酒精检测
通过 STM32 单片机控制 MQ-3 酒精乙醇传感器,检测驾驶员是否存在酒驾行为。MQ-3 酒精乙醇传感器对酒精的灵敏度高,可以抵抗汽油、烟雾、水蒸气的干扰,可检测多种浓度酒精气氛,是一款适合多种应用的低成本传感器。
在驾驶员车内安装酒精传感器,准确地测量驾驶人是否存在酒驾行为,若存在则联系驾驶员亲属,避免危险的发生。
(2)人脸疲劳采集
树莓派可以像一台运行 Linux 系统的台式计算机或者便携式计算机那样,使用 openCV 库进行图像处理。
(3)血氧心跳数据采集
通过 MAX30102 实现对心率值和血氧饱和度的采集,并在智能穿戴设备上显示,当检测的数据超过设定阈值时发出警告并通过 SIM900 拨号,由 ESP8266 将数据通过 Wi-Fi 传输到服务器。
MAX30102 内部集成了一整套完整信号采集电路,用户只需通过单片机的 IIC 接口,对 MAX30102 内部的寄存器进行读写操作,就可以得到转换后的光强度数值。最后通过相应的处理算法,计算出心率值和血氧饱和度。
ESP8266 是一个完整且自成体系的 Wi-Fi 网络解决方案 , 能够独立运行,也可以作为 slave 搭载于其他Host 运行。ESP8266 强大的片上处理和存储能力 ,使其可通过 GPIO 集成传感器及其他应用的特定设备 , 实现了最低的前期开发和运行中最少占用系统资源。
Wi-Fi 和服务器连接方法 / 步骤。
第一步:首先打开串口助手,连接好无线模块。
第二步:发送AT+RST重启模块。
第三步:发送 AT+CIPCLOSE 关闭 TCP/UDP/SSL传输。
第四步:发送 AT+CWMODE=1 设置 Wi-Fi 模式为Station 模式。
第五步:发送 AT+CWDHCP=1 设置 DHCP。
第六步:发送 AT+CWJAP=“无线网络名”,“无线网络密码”加入 Wi-Fi。
第七步:发送 AT+CIPSTART=“TCP”,"broker.emqx.io",1883 连接服务器。
3 软件程序设计
3.1 开发工具
基于 c 语言、java script、Python 等编程语言,结合使用多种软件实现系统功能。其中主要使用 keil5 提供清晰直观的操作界面,使用起来十分的轻松便捷,并具备编译器、编译器、安装包和调试跟踪。
3.2 数据采集部分
(1)酒精检测
代码的设计思路:通过 MQ-3气体传感器模块检测酒精浓度并发 送 模 拟 电 压, 这 样 可 以 利 用STM32的ADC模块采样收集数据,将模拟量转化为数字量,计算酒精浓度。
判断其检测浓度是否超过设定阈值,超过阈值则发出警告并实现自动拨号。
(2)疲劳检测
代码设计思路:首先初始化脸部位置和脸部特征位置的检测器,打开摄像头,从视频流读取图片,进行灰度化处理;将获取脸部特征位置的信息并转换为 array 数组的格式,使用矩形框标注人脸;检测人眼位置信息;检测眼睛长 / 宽是否大与阈值;获取人嘴的位置信息;通过坐标点的距离来判断是否张嘴及张嘴时间;获取实时头部姿态的旋转角度 Yaw,Pitch 和 Roll。通过这一系列动作检测驾驶员状态,并设定阈值,超出则发出语音警告。
(3)血氧心跳采集
代码设计思路:通过 MAX30102 模块获取心率和血氧的数据,将测得的数据通过 I2C 传送至 MCU 并通过一系列的算法计算,将计算后的数据显示在 OLED 屏幕上。之后通过 MQTT 将数据上传至公共服务器,生成健康报表发至用户 APP,同时通过 SIM900A 模块的短信及撥号功能联系用户手机。
驱动 MAX30102 模块重要的是寄存器函数和读寄存器数据的函数,并初始化模块进行数据采集,最后计算。MAX30102 传感器上具有红光 (660 nm) 和红外光(880 nm) 两个 LED, 人体氧合血氧蛋白和非氧合血氧蛋白对这两个不同波长的光吸收率的差异较为明显,可以据此得出血氧饱和度。
(4)智能终端
将收集到的数据发送给 ESP8266,再通过 ESP8266将数据传给服务器,服务器将其发送给订阅的用户和小程序,实现数据传输,用户可以实时查看各项数据指标。
4 结语
基于鸿蒙的智能安全驾驶监测系统除了可以实现操作的流畅性,最重要的是可以把搭载了鸿蒙操作系统的智能设备全部连接起来。驾驶员的亲人能够实时监测驾驶员的行驶过程、健康状况等信息,能将有关驾驶员的安全信息做到共享,并及时为驾驶员提供预警服务,从而减少因酒驾和疲劳驾驶造成的交通事故,保障驾驶员的生命财产安全。同时,本智能安全驾驶监测系统安装简单,成本较低,有很好的实用性。
参考文献:
[1] 郭德财,彭石林.基于海思芯片与鸿蒙操作系统的智慧灌溉系统设计[J].单片机与嵌入式系统应用,2022,22(03):11-15.
[2] 王秀,周枫晓,刘保罗,等.基于Dlib库的驾驶员疲劳驾驶检测系统[J].物联网技术,2021,11(12):26-29.