冷藏运输车数据监测系统设计

2022-07-06 08:15杜铮
现代信息科技 2022年3期

摘  要:现存的冷藏运输车在长途运输过程中难以保证车厢内温湿度等数据的稳定。为了获取长途运输过程中冷藏车车厢温度和压力等数据,降低运输风险,文章基于STM32微控制器设计了一款车载数据监测系统,系统使用C++和Qt框架进行图形交互界面的开发,通过MS8607传感器监测车厢数据。该设计结合了软件部分可移植性强和硬件部分耐受力高等优点。

关键词:数据监测;Qt平台;STM32

中图分类号:TP277       文献标识码:A文章编号:2096-4706(2022)03-0162-03

Design of Data Monitoring System for Refrigerated Transport Vehicle

DU Zheng

(School of Electrical and Information Engineering, Anhui University of Science and Technology, Huainan  232001, China)

Abstract: The existing refrigerated transport vehicles are difficult to ensure the stability of temperature, humidity and other data in the carriage during long-distance transportation process. In order to obtain the temperature and pressure and other data of refrigerated vehicles during long-distance transportation process and reduce the transportation risk, this paper designs an on-board data monitoring system based on STM32 microcontroller. The system uses C++ and QT frame to develop the graphical interactive interface, and monitors the vehicle data through MS8607 sensor. The design combines the advantages of strong portability of software and high tolerance of hardware and so on.

Keywords: data monitoring; QT platform; STM32

0  引  言

在冷链物流行业中,传统的公路运输依然是最主要的运输方式,而厢式冷藏运输车依然是最最主要的运输工具。长途运输过程中若车厢制冷系统发生故障,势必影像运输货物的安全。司机在行驶过程中也很难分心照顾车厢温湿度等数据。从食品安全的角度出发,提高冷藏物流运输过程中的车厢数据监测是非常有必要的。基于上述原因,设计出一套车载数据监测系统。

1  系统总体设计

监测系统的总体设计如图1所示。系统主要由传感器采集模块、上位机数据显示模块和数据传输模块组成。冷藏车车厢内的温度、压力和湿度数据由MS8607传感器采集,数据统一存放至SD存储卡中。由Qt平台编写的图形交互界面显示数据,当数据超出设定阈值时发出警报提醒司机,并通过GPRS通信模块向监测中心发出报警短信。

2  软件部分设计

2.1  主程序设计

软件部分采用C++和Qt框架进行设计,其面向对象的特性也提高了程序的适用性和可移植性。Qt是一个GUI仿真工具包,即不使用本地工具包作调用,而是使用各自平台上的低级绘图函数,从而提高程序的速度。工作流程如图2所示,大致为:当程序开始工作时,系统会进行定时器和引脚的初始化,当温湿度传感器检测到冷藏车厢内数据超过设定阈值时,蜂鸣器发出警报提醒司机,司机根据当时状况选择是否通过GPRS通信模块发送当前车厢的异常数据和车厢定位信息。

2.2  图形界面设计

车厢系统软件主界面中有四个按钮,分别是系统状态、车厢设置、行驶记录和系统设置。通过可视化界面实时监测温度变化,实现用户对数据的快速观测。温度设置界面设置车厢监测温度的上限和下限,当车辆运行中温度出现异常时蜂鸣器会发出报警声响,LED也会发出红色警报。当画面处于系统主界面窗口时点击按钮“车厢设置”,进入到温度设置界面,如图3所示。假设主界面是窗口A,温度设置界面是窗口B。调用者A设置了一個槽函数,发出动作“创建一个B窗口”,使用exec()方法启动了B窗口。被调用者B也是利用信号与槽的连接函数,单击“保存退出”按钮后关闭界面。界面上有继承了QPushButton类的saveButton按钮对象和quitButton按钮对象,如字面意思,分别实现保存数据的功能和退出当前界面的功能。为了让温度设置界面更加的个性化,分别设置了继承了QSlider类的数据调整对象horizontalSlider和继承了QLCDNumber类的数据显示对象lcdNumber。QSlider很少有自己的函数,大部分功能在QAbstractSlider中。这里拿设置最高车厢温度来说明,通过setMininum()和setMininum()函数分别设置滑动条的最小值为-50,最大值为50,即最低温度-50 ℃最高温度50 ℃,此处仅表示软件设置界面的最大最小值。

车辆行驶过程中车厢温度一直处于动态变化的过程,为了便于实时的观测和统计,行驶记录界面中设置了折线视图来便于整体观测车厢温度在24 h内变化情况。使用一个QSplineSeries曲线对象,一个QChart图表和一个QChartView图表视图。本设计使用的是Qt5.12版本自带的绘图组件库,首先在工程pro文件中添加“QT += charts”以便在项目中使用Qt Charts模块,使用图表模块前还需要使用命名空间,在头文件中添加“QT_CHARTS_USE_NAMESPACE”,这样才能顺利定义图表绘制中的坐标轴。首先通过setGeometry(0,0,800,480)函数设置显示位置与大小,定义坐标轴数据范围,分别进行曲线、图表、图表视图的实例化,温度变化效果如图4所示,提供实时的温度变化。创建横坐标轴X和纵坐标轴Y的对象,定时器timer用来控制绘制速度。设置纵坐标轴Y的标题、坐标轴方向、Y轴显示范围(-50℃到50℃),通过“splineSeries->attachAxis(axisX)”将曲线对象附加在Y轴上,同理进行X轴的相关属性设置。在将图表视图对象设置为显示界面的中心部件后开始信号槽连接,当定时器timer发出信号timerout时显示组件开始曲线绘制操作。程序读写由温度传感器提供的数据,设置每次读取的最大数据为24个单位,通过循环使得当数据个数超过最大值后,删除第一个数据,如此反复便实现了数据的移动过程,也即曲线的动态显示。

3  硬件部分设计

3.1  GPS模块

ATK-S1216F8-BD-V23模块具有167个通道,测量输出频率最高可达20 Hz,通过串口对模块各参数进行配置并保存在内部FLASH中,使用SkyTrap协议配置串口波特率、PPS脉冲输出宽度、输出频率等。默认采用NEMA-0183协议输出GPS的定位数据,NMEA-0183协议是以类似$GPGSV为开头,然后固定输出格式,以‘*’作为有效数据的结尾。VCC为电源引脚(3.3 ~ 5 V),GND接地引脚,TXD为模块串口发送引脚,RXD为模块串口接受引脚,发送和接收引脚均为TTL电平。模块自带状态知识灯PPS,指示灯常亮表示模块已经开始工作,但未完成定位,指示灯闪烁时表示已经定位成功。

3.2  GPRS模块

GPRS模块是具有GPRS数据传输功能的GSM模块(将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上的功能模块)。GPRS模块就是一个精简版的手机,集成GSM通信的主要功能于一块电路板上,具有发送短消息、通话、数据传输等功能。GPRS模块相当于手机的核心部分,如果增加键盘和屏幕就是一个完整的手机。本设计中MCU通过RS-232串口与GPRS模块相连,通过AT指令控制GPRS模块实现各种基于GSM的通信功能。

3.3  显示模块

显示模块采用4.3寸的RGBLCD电容触摸屏,屏幕分辨率为480×272,最高支持24位真彩显示。显示模块本身是不带控制器的,在本设计中程序通过交叉编译移植进硬件后,通过显示模块打开用户界面。VCC引脚为5 V电源输入引脚,GND接地,R0至R7是8位RED数据位,G0至G7是8位GREEN数据位,B0至B7是8位BLUE数据位,CLK为像素时钟。HSYNC和VSYNC分别是水平同步信号引脚和垂直同步信号引脚,DE为数据使能信号位。LCD控制共需要29个IO口驱动,输入格式为RBG888,电容触摸屏需要33个IO口驱动,MCU在初始化RGB参数前先读取R7/G7/B7的状态,从而判断显示屏对应的分辨率为480×272。触摸屏模块通过I2C接口与MCU连接。

3.4  通信接口设计

设计中使用RS-232串口连接GPRS模块和开发板。TTL的电平标准在理想状态下使用5 V表示二进制逻辑1,0 V表示逻辑0;而为了增加串口通信的远距离传输及抗干扰能力,它使用-15 V表示逻辑1,+15 V表示逻辑0。

Qt提供了串口类,可以直接对串口进行访问。将QSerialPort库安装到Qt中,需要在Qt的pro项目文件中添加窗口模块的支持:QT += core gui serialport。在头文件中声明属于QSerialPort类的串口对象serialPort,用作接收数据的对象textBrowser,用作发送数据对象textEdit。在头文件中声明界面布局初始化函数,扫描系统可用串口函数以及进行波特率项、数据位项、检验位项、停止位项的初始化函数声明。在源文件中首先进行界面布局初始化的设置,利用垂直布局和网格布局方式,根据实际显示屏大小设置全屏显示。初始化界面后开始查找系统可用的串口,并添加串口名到下拉窗口部件comboBox[0]中,串口波特率預设为115 200,并添加到comboBox[1]中,设置默认数据为8,无校验位,默认停止位为1。使用函数void openSerialPortPush ButtonClicked()打开或者关闭串口,从缓存区里读取数据并显示到textBrower中。

4  结  论

本次设计以STM32为主控核心,硬件部分采用了GPRS模块进行远距离通信、GPS模块定位运输车辆的坐标信息、温度传感器模块实时监测车厢中的温度变化,以及一些系统必备的功能模块。软件部分处于系统兼容性的考虑选择了Qt框架平台进行图形用户界面的开发。使用QApplication类管理GUI程序的控制流和主要设置、QPixmap类进行图形绘制、QSplashScreen类实现Qt程序的启动动画以及QTest类进行单元测试。

参考文献:

[1] 毋庆刚.我国冷链物流发展现状与对策研究 [J].中国流通经济,2011,25(2):24-28.

[2] 游燕珍,赵国锋,徐川.基于Qt/E的嵌入式GUI的研究及其移植 [J].微计算机信息,2008(14):61-63.

[3] 陈冰曲.基于嵌入式系统的车辆目标检测研究 [D].重庆:重庆交通大学,2019.

[4] 满莎,杨恢先,彭友,等.基于ARM9的嵌入式无线智能家居网关设计 [J].计算机应用,2010,30(9):2541-2544.

[5] 郑州朗睿科技有限公司.一种嵌入式系统的串行通信接口电平转换电路:CN207543086U [P].2018-06-26.

[6] 李助军,谭森.一种汽车涉水远程报警装置的研制 [J].装备制造技术,2014(6):64-66.

[7] 苑洁,常太华.基于STM32单片机的高精度超声波测距系统的设计 [J].电子设计工程,2011,19(15):76-78+82.

作者简介:杜铮(1994.12—),男,汉族,安徽舒城人,硕士在读,研究方向:传感器与检测技术。