王丽娟,张雨洁,李俊杰,洪文韬,廖智民
摘 要:本文设计了一款以 STM32和树莓派为核心控制器的共享汽车超载智能检测预警系统。系统分为硬件和软件两部分:硬件部分以STM32和树莓派为平台,搭载了称重压力传感器、OV5647摄像头模块、有源蜂鸣器模块、蓝牙模块等外设,实现了人数检测、后备箱载荷检测、报警及APP提醒等功能;软件部分采用Python语言与C语言编写,使用RT-Thread作为实时操作系统,实现多线程操作。该系统工作具有准确性、实时性及稳定性,为共享汽车超载智能检测预警系统的设计提供了一种方案。
关键词:共享汽车;超载检测;STM32单片机;树莓派;人脸识别;智能检测
0 前言
共享汽车也称汽车分时租赁,是一种新兴的汽车租赁模式,用于人们短期内租车。作为一种交通运输新业态,共享汽车在我国兴起并快速发展。然而,随着共享汽车广泛进入人们的生活,在共享汽车出行过程中,由于部分使用者缺乏安全意识,存在侥幸心理,共享汽车超载事故也在频频发生,对公共交通安全造成较大隐患。共享汽车超载问题需要引起我们的关注与重视。
1 系统构成
1.1 系统方案
1.1.1 总体设计
本系统由五部分构成:人脸检测系统,传感器检测系统,控制系统,报警系统,传输模块。人脸检测系统包括树莓派、OV5647摄像头模块,传感器检测系统包括称重压力传感器,控制系统STM32F429IGT6作为主控芯片;报警系统由蜂鸣器模块构成,传输模块由蓝牙模块构成。系统总体设计框图如图1所示。
1.1.2 工作流程介绍
驾驶人和乘客进入共享汽车内,行李物品放入后备箱;人脸识别检测系统用于检测人员的超载情况,利用摄像头对车内乘客进行人脸捕捉[1],经树莓派使用Haar Cascade检测人脸的数量,LBP算法进行人脸识别,将人脸检测数量传输至STM32单片机内,将车内实际人数与预设核载人数进行对比,当乘客人数超过设置好的共享汽车可搭载最大人数后,则系统将发出报警提示,并将超员人数通过共享汽车手机端APP进行提示[2]。
称重系统用于检测行李重量,通过称重传感器测量后将采集到的信息传输到单片机中进行处理。当实际称重质量超过预设后备箱载重质量时,蜂鸣器将发出报警提示,同时会将超重重量在APP进行记录,提示驾驶人和乘客规范乘车。
2 系统硬件设计
2.1 STM32主控芯片
该系统采用STM32单片机,以STM32F429芯片作为主控芯片,搭载ARM Cortex-M4 内核,性能优良,可搭载多种外设,内置嵌入式OS采用我国自主开发的RT-thread。其优势在于系统完全开源,不仅具有实时内核,还具备丰富的中间层组件,支持包括高性能、实时功能、数字信号处理、低功率、低电压操作,拥有集成和易用的开发,还具有优秀的图像处理能力。
2.2 图像采集模块
为保证图像质量的同时更快地实现图像采集,图像采集模块采用OV5647摄像头模块,具有500 W像素,采集的图像分辨率为2 594×1 944,读取图像方便快捷,具有拍摄对焦距离可调功能,曝光、白平衡、消除灯光条纹、滤波等均实现自动化,可满足设计需求,而且功率低、采集速度快,因此选用OV5647摄像头作为图像采集模块。
2.3 称重压力传感器模块
称重压力传感器[3]基于应变效应,主要包含三个部分:弹性敏感元件,电阻应变片,测量电路。弹性敏感元件在外力作用下产生弹性变形,使粘贴在表面的电阻应变片也随同产生变形,电阻应变片发生变形后,它的阻值将发生变化,使电桥失去平衡,测量电路将电阻转换为电信号。
3 人脸识别算法
3.1 人脸检测算法—使用Haar Cascade检测人脸的数量
为了产生稳定的分类结果和跟踪结果,从图像中提取出细节并将提取结果作为图像特征。两个图像的相似程度可通过对应特征的距离来度量。对给定的图像,特征可能会因区域大小而有所不同,区域大小也被称为窗口大小。即使窗口大小不同,仅在尺度上不同的两幅图像也应该具有相似的特征,因此能为不同大小的窗口生成特征非常有用,这些特征称为级联,而Haar Cascade在尺度变化上具有鲁棒性。
Haar Cascade是一系列用来确定一个对象是否存在于图像中的对比检查。对比检查由检查图像的中心垂直是否比边缘垂直更轻微等过程组成,这一系列对比检查被分成多个阶段,后一阶段的运行以先前阶段的完成为前提。前期阶段进行大范围的检查,后期阶段进行更多更小区域的检查。算法运行时,首先从Haar Cascade二进制文件加载一个Haar Cascade;然后通过直接传递“frontalface”字符串给构造函数,将一个内置的正脸Haar Cascade载入内存;最后,该方法会返回载入的Haar Cascade对象,用来使用 image.find_features()。
3.2 人脸识别算法——LBP算法
LBP是Local Binary Pattern局部二值模式的缩写。LBP特征简单易算,且具有灰度不变形、旋转不变形和纹理特征维度低等显著优点,在一定程度上消除了光照变化的问题,于是选择提取图像的LBP特征來进行人脸识别。
4 软件设计与实现
4.1 程序设计
设计中,STM32的硬件程序采用C语言编写。
单片机程序使用RT-Thread作为实时操作系统,实现多线程操作目的,有效的提高了单片机CPU的使用率[4]。
单片机程序主要包含三大部分,压力传感器数据采集及处理,摄像头数据的处理及分析,蓝牙通信的信息传输。其中压力传感器通过HX711模块进行高精度的AD采样,有效提升获取压力传感器的精度。当压力传感器传输的数值经过处理后超过设定的阈值或处理的摄像头数据中检测人数超过设定值时,会引起蜂鸣器的报警电路响应,提醒驾驶员目前的车内情况不符合驾驶要求,并会经过蓝牙传输,将当前的车内数据通过设计的APP传入云端记录。
本系统的另一处理单元为树莓派4B采用Python语言编写,通过人脸检测算法,将摄像头采集的图像进行处理,并通过蓝牙与单片机进行数据传输,将实时处理完的检测人数数目返回给单片机处理。
4.2 系统实现
系统经多次及多方面实际测试,从人脸检测方面,分别进行人数变化及不同人脸的识别测试。从压力传感器检测方面,分别进行了小重量及大重量精度测试。从各模块调用情况,进行了较长时间不同场景的测试,都已验证本系统有较强的鲁棒性及稳定性。测试结果显示,已实现系统的全部功能,其响应速度、准确度都达到了设计要求。
5 结论
本文通过设计了一款以STM32和树莓派为核心控制器的共享汽车超载智能检测预警系统,利用STM32和树莓派为平台,搭载了称重压力传感器、OV5647摄像头模块、有源蜂鸣器模块、蓝牙模块等外设,实现了人数检测、后备箱载荷检测、报警及APP提醒等功能。该系统工作准确性、实时性及稳定性较高,为共享汽车超载智能检测预警系统的设计提供了一种方案。
参考文献:
[1]一种基于人脸检测的客车超载检测装置[P].中国.专利授权公告说明书.CN 202771616 U.2013.03.06.
[2]刘伟.汽车超载预警系统设计[D].陕西:西北农林科技大学,2011.
[3]彭春华,刘建业,刘岳峰,等.车辆检测传感器综述[J].传感器与微系统,2007,26(6):4-7.
[4]禹玺,董蕴华.基于移动通信网络的客车超载检测系统设计[J].邮电设计技术,2017(6):47-50.