基于STM32的汽车超速报警器的设计与实现|毕业设计项目|单片机项目|物联网设计|毕设

一、项目介绍
摘 要
汽车保有量不断增多,超速行驶成为引发交通事故的关键因素之一,鉴于此,文章设计并创建起一套依托 STM32 和 ThingsBoard 平台的汽车超速报警器系统。该系统把 STM32F411CEU6 当作主控芯片,利用北斗定位模块来获取车辆的速度及位置信息,并经由分析 NMEA - 0183 协议来取得有用的数据,采用 RT - Thread 适时操作系统来执行多任务调度,从而达成数据采集,报警判断,显示更新以及网络通信同步运行的效果,一旦速度超出预先设定的临界值,系统就会激发 TFT - LCD 屏幕执行视觉提示,做到本地报警的目的。 依靠ESP8266 WiFi模块,可以把速度,位置等数据上传到ThingsBoard云平台,在那里可以设置可视化仪表盘和告警规则,从而达成远程观察和随时发出告警,经过检测结果显示,这个系统运行稳定,定位精准,通信可信,对于超速报警反应快速,符合车辆超速监测的基本需求,具备较好的扩展性,也有一定的工程实用价值。
关键词:STM32;北斗定位;超速报警;RT-Thread;物联网;ThingsBoard
主要研究内容
本论文设计并完成一套依托 STM32 和 ThingsBoard 平台的汽车超速报警系统,该系统利用北斗模块获取车辆即时速度与位置信息,经由主控芯片执行数据分析及逻辑判定,达成本地超速报警功能,而且借助 WiFi 模块把数据上传到云平台以做到远程观测及警示的目的,其主要研究内容涵盖如下五个方面。
系统总体方案的设计需先剖析系统的功能需求,然后确定其总体架构与技术路线,如此才能明晰硬件模块包含哪些部分,软件具备哪些功能及其数据走向,进而规划出系统的运作流程,对于其中的关键技术以及核心器件还要展开选型分析,这样才能为后续的设计形成根基。
系统硬件的设计与达成过程包含几部分,首先是选择合适的硬件模块并完成电路设计,主控模块,北斗定位模块,WiFi通信模块,显示模块以及电源守护模块都是必要的,其后要绘制原理图与PCB电路板,接着搭建起硬件平台并且执行调试,以保证硬件系统的稳定性和可靠性。
针对嵌入式软件的设计与执行而言,依靠 RT - Thread 操作系统来执行软件架构设计并完成多任务划分,从而达成对北斗定位数据的接收以及协议的分析,并获取其中所包含的速度和位置信息。规划超速报警的逻辑流程,编写显示驱动程序及人机交互界面代码,以做到 WiFi 控制以及 MQTT 数据上送的目的。
研究事物板(ThingsBoard)的平台架构及其设备接入机制,设置MQTT通信参数以达成安全对接。规划数据上报格式,及时把速度和位置信息传递给平台,并制作可视化仪表盘来表现这些即时数据,还要设置超速告警规则从而做到远程通报。
系统检测与剖析环节需针对各个功能模块展开单独检测及联合调试,用以验证系统的稳定性,可靠性以及及时性,经由对检测结果加以分析来评价系统性能,并找出存在的不够之处进而给出改善的方向,从而保证系统符合设计之初的各项要求。
系统功能需求分析
汽车超速报警器属于车载终端设备,它最重要的任务就是做到对车辆行驶速度的随时监测,并对超速行为发出有效警告,按照使用者和使用场景来考虑,这个系统大致应该符合如下几个方面的要求。
系统最基本的诉求在于随时监测速度,它需持续掌握车辆当下行进速度,并对相关数据展开加工与剖析,鉴于车辆行进时速度不断变动,系统务必有较高的数据收集速率,这样才能及时察觉速度的改变状况,免除出现遗漏或者延误警报的情形,而且,速度数据是否精准会直接左右报警是否可靠,所以,系统得要对定位模块所供应的速度数据执行滤波操作,从而得出一条平滑又可信的速度曲线。超速报警功能属于系统的关键需求,系统应当赋予用户依照道路限速规定自行设置超速临界值的权限,一旦检测到车速超越该临界值便马上引发显示屏视觉指示,报警信号需一直维持到车速回落到安全区间为止,而且要有报警记录能力以便后续展开分析。
定位功能是做到速度检测的前提,系统要装配北斗定位模块以及时获取车辆的经纬度等地理信息,从而支撑速度的计算以及后续轨迹的回放,定位模块要有较好的灵敏度和抗干扰能力,即便在信号较差的地方也要保留基本的工作性能。数据输送功能对于达成远程观测很关键,系统要经由无线网络把速度,位置等信息立即上传到云端,利用稳定可信的通讯协议来保障数据完整无损,而且还要有断线重连以及数据缓存的功能,在网络中断的时候先把数据储存起来,等网络重新接上之后再补传过去。 人机交互功能这块,系统设有显示屏幕,屏幕上直观显示当下速度,报警情况等信息,界面简洁清晰,方便驾驶员快速获取。而且给予一个参数设置界面,让用户可以调整报警阈值,平台运作功能属于远程观察的拓展部分,云端平台接收并保存终端数据,赋予可视化呈现,历史查询以及警报管理功能,创建起包含随时监测,本地报警,远程传送和平台运作的完整功能圈。
系统总体架构设计
按照功能需求展开分析之后,本系统决定用经典的三层物联网框架来执行设计,这三层分别是感知层,网络层以及应用层。这种分层框架存在诸多长处,比如耦合度低,拓展能力强而且每层的功能比较清晰,可以有效地助力系统达成自身功能并做好以后的升级工作,感知层位于系统内部的最底层,其职责在于采集数据并实施本地化处理,大多依靠车载终端设备达成,其中涵盖主控模块,北斗定位模块,显示模块以及报警模块等。 主控模块位于感知层的核心地位,它选择的是STMF411CEU6芯片,用于统筹各模块开展工作,执行数据处理算法以及报警逻辑,北斗定位模块需获取卫星信号以计算即时的位置及速度信息,显示模块则凭借TFT - LCD屏幕来表现速度,报警状态之类的资讯,在出现超速情况时,报警模块会激活视觉警示功能,感知层具备即时性突出和可靠性能较高这两个特征。
网络层承担着感知层与应用层之间数据传递的任务,起到整个系统的桥梁作用,其主要由ESP8266 WiFi模块以及互联网基础设施组成,WiFi模块充当通信终端,用来搭建同互联网之间的联系,而且会依靠MQTT协议把收集到的数据发送到云端服务器。MQTT协议依照发布订阅模式,具备轻量化,开销低,可以做到可靠传送的特性,比较适合资源有限的物联网设备,网络层必要应对连接状态的改变情况,在断裂的时候去执行重连操作,以此保障数据确实能够传送到云端,应用层处于系统架构的最高层级,选取了ThingsBoard开源物联网平台作为核心部分,该层主要负责执行数据的储存,加工及显示功能。 平台可接收到终端上传的诸如速度,位置之类的遥测数据并加以保存,经由可视化组件生成即时仪表盘,用曲线图,地图等形式表现车辆运行状况,而且具有设置警报规则的能力,一旦出现超速情况就会自动产生警报记录并送达告知信息,该系统具备本地和远程两种用户交互形式,数据流的走向始于北斗模块采集阶段,接着由主控加以解读分析,再经过 WiFi上传到平台,如此就创建成一个相对完善的循环体系。
关键技术选型分析
关键技术的选型会直接左右系统的性能,开发难度以及后期的守护成本,合理的选型可在满足功能需求时兼顾成本,功耗和开发效率。在主控芯片方面,本系统选择了意法半导体的 STM32F411CEU6 芯片,该芯片以 ARM Cortex - M4 内核为基础,其最高工作频率达 100MHz ,具备 512KB 的 Flash 和 128KB 的 SRAM ,可以满足复杂算法及多任务运行所需要的资源,此芯片整合了大量 UART 接口来连接定位模块和 WiFi 模块,而且有 SPI 接口用以带动显示屏幕,还有足够多的 GPIO 引脚去控制外围设备,STM32 系列具有成熟的开发工具链和丰富的社区资源,能够大幅缩减开发的困难,从性能,资源,成本和生态系统等各方面来看,它确实是这个项目的一个不错的选择。
在即时操作系统方面,本系统采用了国产开源 RT - Thread,RT - Thread 内核精简,裁剪性强,而且包含诸多组件。它的多任务机制能把复杂的应用拆解成许多独立任务,削减代码耦合度,提升系统的可守护性,系统赋予了完备的线程守护,同步与传达机制,可以有效地调和数据采集,处理以及传送等并发任务,而且,丰富的设备推动框架和软件包能够极大地简化 WiFi 模块推动的开发工作,简化网络协议栈的整合工作,定位技术运用了北斗卫星导航系统,选择了 ATGM336H 模块来执行北斗和 GPS 双模定位,这个模块具备灵敏度高,功耗低,体积小等长处,其输出依照 NMEA - 0183 标准协议的数据,方便嵌入式系统去分析处理。 无线通信部分选取了 ESP8266 WiFi 模块,该模块遵照 802.11b/g/n 协议,自带 TCP/IP 协议栈,可由 AT 指令集实施控制,从而精简网络功能的开发流程,其成本较低,性能也较为稳定,物联网平台方面则选用了 ThingsBoard 开源平台,这个平台支持 MQTT 等多种协议,具备设备管理,数据可视化,规则引擎等诸多核心功能,可以免费安装并投入使用,在功能完整性以及自主可控性方面有着比较突出的优势。
二、文档介绍





三、项目设计
嵌入式软件架构与操作系统移植
本系统的嵌入式软件采取分层模块化的架构,由底层到上层依次是硬件抽象层,操作系统层,驱动层以及应用层,硬件抽象层依靠STM32标准外设库创建而成,其中包含了时钟初始化,GPIO控制,UART收发之类的底层操作,用以隐藏硬件的差别,操作系统层采用的是RT-Thread即时内核,该内核具备多任务调度,同步通信以及定时器守护等功能,把复杂的应用程序拆解成一个个独立的任务,从而提升系统的即时响应能力与可靠性,驱动层涵盖串口,SPI这样一些基本的驱动程序,还有北斗模块,WiFi模块,LCD显示器之类的设备专用驱动程序,这些程序经由标准化的接口向高层供应服务,应用层负责执行数据采集,数据处理,警报判定,显示更新以及网络传递等并发运行的任务,各个任务相互协作来达成整个系统的预定目标。
RT - Thread 移植工作涵盖内核设置,板级支撑包编写,时钟 - 中断适配以及设备推动框架设置等方面,经由设置工具选定诸如线程管理,信号量,消息队列等必要的组件,并裁剪掉不必要的功能(如文件系统)来节省资源。板级支撑包可达成硬件的初始化,时钟设置以及中断管理,利用 SysTick 定时器给予系统节拍,而中断设置则需设置优先级分组,并针对各中断注册处理函数,从而保证中断服务不会破坏内核数据结构。 串口和 SPI 驱动在设备框架之下达成,其经由注册机制供应给应用层来调用,在完成移植之后实施功能验证,要保证任务调度正常,同步机制可靠并且中断响应及时。
北斗定位数据处理
北斗定位数据处理环节需从模块获取原始数据,并从中分析出有效信息,模块遵照 NMEA - 0183 协议输出 GGA , RMC , VTG 等语句,这些语句以文本形式存在,而且其字段之间用逗号加以分割。系统经由 UART 接口同模块相接,在中断服务程序当中把接收来的字符存储到环形缓冲区内以防止出现数据遗失状况,数据收集任务从该缓冲区读取字符,识别语句的头部与尾部来实施组包,还要解决潜在的断句问题保证语句的完整性,之后再把完整的语句交给解析模块。
解析模块依循语句类型执行分类处理,RMC语句蕴含时间,定位状态,纬度,经度,速度等诸多核心数据,这些数据属于本系统重点关注对象,而在执行解析操作的时候,会按照逗号来分隔并获取相关字段,把字符串形式的数据转为成数值形式,从而方便后续的运算过程,VTG语句给出的速值是以节或者公里每小时作为计量单位的,可以立即拿来用作显示内容以及报警判定的依据,不过对于速度数据来说,还得做一次滤波处理才行,可以利用滑动平均算法,选取若干个最近记录下来的速值加以算术平均化,以此来有效地规避一些临时性的异常波动情况出现,而且定位状态标志能够显示出当下是否有有效的定位情况,一旦出现无效现象,那么相关的报警逻辑就暂时停止运转,并且把警示提示显示在屏幕上告知使用者。 位置信息需把度分格式换成十进制度数,如此一来才利于上传和显示。
超速报警与数据显示
超速报警逻辑根据当前速度和预设阈值判断是否触发报警。系统支持多组阈值设置,可根据道路类型选择,阈值存储在非易失性存储器中并可在线修改。报警判断采用连续多次超速策略,设置计数器机制:每次速度超越阈值,计数器就加一;当低于阈值的时候,计数器就减一,当达到设置好的阈值时就会启动报警,这种方法可以有效地剔除瞬时波动带来的干扰,对于持续超速也能做到及时响应,报警一旦启动,就在显示屏上显现出醒目的标识,等到速度降回到安全范围内并且维持了相应的时间之后就会自动解除,而且这个系统会记录下报警的时间,持续的时间长度,最快的速度,所在的位置等信息,这样做利于之后的分析以及驾驶员自身的评价。
数据显示模块负责把各类信息呈现在LCD屏幕上,利用分层界面设计,主界面用大字体明显显示当下的速度,报警状态以及定位状态,辅助信息则用小字体显示在周边。显示驱动依靠SPI接口来做到屏幕的初始化,区域设定以及像素写入功能,并且具备局部刷新的能力从而提升效率,运用轻量级图形库,可以得到包含文本,线条,矩形等绘画元素,还有按钮,仪表盘之类的控件,显示更新的任务会定时从共享内存读取最新的数据并去更新屏幕,对于那些动态变化的数值,采用局部刷新的办法来缩减绘制的工作量。 菜单界面给予用户机会去更改报警阈值,显示亮度这些参数,一旦做了改动就会存入非易失性存储器当中,这样即便断电也不会遗失相关内容。
WiFi通信与云平台接入
WiFi通信软件依靠 RT - Thread 的 AT 命令组件以及 MQTT 软件包来达成,该软件用来控制 ESP8266 模块创建网络连接,并把数据上传到 ThingsBoard 平台。AT 命令组件包含指令发送和响应解读方面的内容,高层应用只需调用 API 就能执行模块初始化,WiFi 连接等任务,网络连接管理覆盖 WiFi 连接和 MQTT 连接这两个层级,系统开启之后会先去连接事先设定好的 WiFi 网络,处理好认证不通过,信号差之类的异常状况,等到连接完毕之后再形成 MQTT 连接,并且指定好服务器地址,端口号以及设备凭证,这个系统采取的是凭借访问令牌的认证方法,给每台设备分配一个专属的令牌来做身份验证,以此保障接入的安全性。
MQTT协议借助 RT - Thread 的 MQTT 客户端软件包来达成,其支持 QoS 质量服务等级以及心跳守护机制,应用层形成 MQTT 客户端实例,并设置服务器参数和回调函数之后启动连接,当连接创建起来的时候,会定时向预定的主题发布遥测数据,这些数据按照 JSON 格式加以封装,其中涵盖速度,纬度,经度,时间戳等等字段,速度把公里每小时作为单位,位置以十进制度数的形式表现出来,这样就方便平台执行相关的分析操作,创建好连接以后还要定时发送心跳消息来保障连接的持续有效,而且心跳的间隔时间要同平台所设的相符合。
断线重连机制对于确保通信可靠性十分关键,系统察觉到连接断开以后,会自动执行重连操作,而且依照从底层向高层的次序,先重建 WiFi 然后再重建 MQTT,重连时采取指数退避策略,防止因频繁重连而给网络造成过大压力,数据缓存机制会在内存里设立环形缓冲区,用以存放网络中断期间产生的数据,每条记录都涵盖时间戳和遥测数据,等到网络恢复正常之后,系统首先传送缓存里的数据,接着再传送当前的数据,缓存的大小需遵照断线时延和数据频率来恰当设定,免得出现溢出从而引发数据遗失情况,在资源比较匮乏的情况下尽可能保障数据的完整性与及时性。
硬件总体结构
本系统硬件采取模块化设计,可划分为五大模块,即主控模块,北斗定位模块,WiFi通信模块,显示模块以及电源守护模块,这些模块经由明确的接口实施通信,如此一来便于开展调试,守护工作并拓展功能。主控模块属于核心部件,依靠STM32F411CEU6微控制器搭建而成,负责执行数据处理和逻辑控制任务,其余模块全都直接或者间接同主控模块相连接,主控模块具备芯片运行所必需的基本系统电路,其中的IO引脚得到了妥善安排,分配给各个外设模块,其布局位于PCB板的中部,从而向周边引出信号线,削减线路长度以及交叉干扰现象的发生。
北斗定位模块经由串口同主控相接,持续输送车辆的位置及速度信息,此为数据源,必要给予其稳定电能,并妥善安排天线来保障接收品质。WiFi模块同样依靠串口向主控发送消息,其职责在于把数据上传到云端,在设计之时应当留意天线所在区域的设置,以此保证信号良好,显示模块选用了TFT - LCD屏幕,利用 SPI 总线与主控建立联系,从而达成人机互动,电源守护模块向各个模块供应稳定的电压,它具有宽幅的输入范围以及防干扰功能,还给每个模块分配了单独的供电路径,这可是系统稳定运行的关键所在。
电源守护模块会给整个系统给予稳定的可信赖的工作电压,它要有比较宽的输入电压范围以及不错的抗干扰能力,给不同的模块供应独立的供电回路,以此来缩减彼此之间的干扰,这个系统利用低压差线性稳压器把车载的5V电源转变为系统所必需的3.3V工作电压,在该电路的输入端和输出端分别设置了不同容量的滤波电容,以此来压制电源噪声,保障供电的质量。
总 结
本文按照车辆超速观察的实际需求,设计并完成了一套依靠STM32单片机和ThingsBoard物联网平台的汽车超速报警器系统,该系统以STM32F411CEU6作为主控芯片,利用北斗定位模块获取车辆即时速度和位置信息,经由ESP8266 WiFi模块把数据上传到云端,在ThingsBoard平台上达成数据可视化及超速告警功能,本文就系统的总体方案设计,硬件设计,软件设计以及云平台接入等情况详细论述了系统的实现流程。
在系统总体方案设计这个阶段,分析了系统的功能需求,明确了几个核心功能,即随时监测速度,发出超速警报,具备定位功能,能够传送数据,实现人与机器的交互以及平台运作等方面的事务。经由采用感知层,网络层和应用层这样三层的物联网框架,规划出系统的整体架构及其运行流程,针对主控芯片,随时操作系统,定位技术,无线传达技术以及物联网平台这些关键之处展开选择分析,从而为后续的设计形成了一定的基础。
硬件设计包含主控模块,北斗定位模块,WiFi通信模块,显示模块以及电源守护模块的电路设计,主控模块以STM32F411CEU6为核心,设置了最小系统电路并分配了IO资源。北斗定位模块采用ATGM336H,其串口与主控相连,还要设计天线电路,WiFi模块选用ESP8266,需设计串口控制方法及天线分布,显示模块采用TFT - LCD显示屏,经由SPI接口同主控相接,而且完成了PCB电路设计,其中涉及布局,布线及电磁兼容性设计。
从软件设计角度看,依靠 RT - Thread 适时操作系统创建起嵌入式软件架构,达成操作系统的移植及设置,做到对北斗定位数据经由串口的接收,并完成 NMEA 协议的解读,获取诸如速度,位置之类的关键信息;规划出超速警报逻辑,利用阈值对比以及滞回判定算法,确保警报功能既精准又可靠;开发包含 LCD 显示激发及人机交互界面的部分,形象显示车辆运行状况;形成 WiFi 通信软件,凭借 AT 指令掌控 ESP8266 模块,用 MQTT 协议把数据上传到云端。
在物联网平台接入方面,选择 ThingsBoard 开源平台作云端服务,达成设备接入设置和 MQTT 传达完成。规划用 JSON 格式的遥测数据上报,把速度,位置等信息即时传递给平台,在平台上搭建可视化的仪表板,以及时曲线,仪表盘,地图等形式表现车辆状态,并设置超速告警规则链,一旦速度超出阈值就会自动产生告警,而且具备多种通知形式,经过对系统执行整体功能检测,证实系统的稳定性,可靠性以及即时性,检测结果显示,系统可以准确定位车辆位置,随时监测行驶速度,超速时会立即发出本地报警和远程告警,数据传送稳定可靠,符合设计需求。
本系统基本上达成了预期的功能,但在研究及开发进程当中还是找出了一些短缺的地方,第一点在于电源管理的改良,当下的系统依靠简单稳压电路供电,功耗调控较为粗糙,以后可以利用电源管理芯片做到低功耗模式的转换。第二点是定位精准度的改善,在信号遮挡严重的区域定位准确度会大幅度下滑,日后能够增添惯性检测单元来融合数据,并用卡尔曼滤波加强准确性,第三点则是通信方式的拓展,现在系统只支持WiFi网络,将来可以加装4G/5G模块以达成移动网络的接入。 在功能扩展上,后续可添加对急加速,急刹车等危险驾驶行为的识别功能,并加入疲劳驾驶监测和车辆诊断功能。就云平台功能而言,日后可增添大数据分析,多车管理以及与第三方系统融合等职能,总的来说,这个系统已经具备了汽车超速报警器的核心功能,证实了该技术方案可行,以后会针对其中存在的短缺加以改进完善,从而使其更好地符合实际应用需求。

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)