基于STM32F7 和Cat.1 DTU 的智能快递监测箱设计
2023-12-08王浩江豆鑫逸刘圣典王钧喆罗凌昀
王浩江,豆鑫逸,刘圣典,王钧喆,罗凌昀
(上海电机学院 电气学院,上海,201306)
近年来,京东物流打造的 211 限时达、极速达、京尊达等高端物流产品,在消费者心中成为行业的产品标杆。同时,随着医药冷链物流需求增加,医药生产商和医药电商越来越倾向于将冷链运输服务外包给第三方物流服务商,以提高专业化、标准化和一体化水平。这些冷链产品主要包括疫苗、血液制品和生物制剂。在行业发展 过程中,会出现的运输物品损坏事件,但却因证据不足而不能有令双方都满意的处理结果[1]。
面对高端快递行业的发展,可循环使用的智能快递盒呼之欲出。文献[2]使用GSM/GPRS 技术通讯技术(即2G 技术),但此技术传输速率非常慢,且目前已有2G 基站加速退网趋势,基站保有量大幅减少。文献[3]采用了NB-IoT 技术,但此技术需要对基站进行额外改造后才能适配,且延迟较高。现阶段4G 技术发展较为成熟,传输速率高,覆盖面广,各运营商的4G 基站占基站总数的比例已达64.7%,优势明显[4]。本设计突破传统使用了4G Cat.1 通讯技术,以STM32F7 单片机为核心,配合各传感器设计了一种4G 通讯的新型智能快递监测箱,来达到减少快递垃圾、监测快递货物状态、保护收发人两方权益的目的。
1 系统总体设计
本设计采用STM32F767 高性能单片机为控制核心,负责传感器数据的收集、计算和发送;为了实时采集智能快递箱的各种信息,采用串口通信的方式将各传感器接入到单片机核心板。在采集到快递箱的位置信息、温湿度数据、运动轨迹信息以及光感数据后,通过串口通信发送到Cat.1 DTU通讯模块,最后通过4G 通信上传到阿里云服务器,手端可通过调取数据来实现实时检测快递盒状态的效果。整个系统的结构如图1 所示。
图1 系统总体设计图
2 系统硬件设计
■2.1 STM32 单片机
一块性能可靠和集成程度足够高的开发板,是整个系统稳定运行的核心。出于高性能、低功耗的设计考虑,本设计采用了正点原子的阿波罗STM32F767 开发板,内嵌ARM 核心,它的板载资源非常丰富,集成了多个传感器,将STM32F767 的引脚资源得到充分开发利用。开发板的核心CPU 为STM32F767IGT6。
■2.2 AP3216C 光环境传感器
为了实现快递运输中途违规开盒探测,需要采集盒内光强度的变化情况,因此选择启用阿波罗开发板上搭载的AP3216C 光环境传感器。它支持多种工作模式,仅需连接三个引脚,即可实现驱动,具有功耗低、控制简单、封装小的特点,封装体积仅为4.1mm×2.4mm×1.35mm。敦南科技在16 位分辨率的数字环境光传感器(ALS)的基础上,还集成了接近传感器、红外传感器(均为10 位分辨率)[5]。它使用I2C 接口,内部包含多个寄存器,具有良好的抗干扰性,支持高达400Hz 的通信速率。内部框图如图2 所示。
图2 AP3216C 框图
■2.3 DHT11 温湿度传感器
在对一些药物以及其他商品进行运输过程中,必须进行冷链运输。为检测冷链运输中快递所处环境是否符合相关标准,在平衡好功率和精准度之后,选择采用DHT11 温湿度传感器采集相关数据。
DHT11 型数字传感器集湿温度检测于一体,内有电阻式湿度检测元件、NTC 测温元件,并内部配置一个独立的MCU 单元。在阿波罗STM32 开发板的最下端,已提前预留好DHT11 的接口位置,其中NC 引脚为空脚,如图3 所示。
图3 DHT11 连接图
■2.4 NEO-6M GPS 模块
GPS 模块是智能快递箱系统的重要组成部分,主要实时提供快递箱所处的位置。NEO-6M GPS 模块需要单片机2个串口,串口1 用来和电脑通讯,串口2 用来和GPS 模块通讯,GPS 模块主要进行经度和纬度的采集,并通过串口进行数据的传输和发送。接收到之后printf 经度和纬度即可。在意外断电的情况下,模块将启用后备电源,掉电时仍可在设备上储存收集到的数据,待电源重连后继续发送。GPS 模块与开发板的连接使用阿波罗开发板上自带的ATK MOUDLE 通用模块接口,连接方式如图4 所示。
■2.5 MPU9250 九轴传感器
为了记录在运输过程中是否有剧烈抛物、大量颠簸的情况,启用了阿波罗开发板上的九轴传感器。MPU9250 内部共包括3个传感器:三轴加速度计、三轴陀螺仪、三轴磁力计,它不仅体积小(3mm×3mm×1mm)、功耗低,而且解决了陀螺仪与加速器轴间差的问题。具有400kHz 每秒的传输速度,供电电压2.4~3.6V。在读取数据后,通过使用其自带的DMP 处理器以及InvenSense 公司的运动处理库,直接实现运动姿态的解算,以记录是否有暴力抛物现象在快递运输过程中发生,具有非常好的响应特性。解算完毕的数据以数字信号的形式16 位AD 输出,实时采集的数据传输给STM32F767 主控芯片[6]。传感器的引脚示意图见图5。
图5 九轴传感器电路图
■2.6 4G Cat.1 DTU 通讯模块
本设计将采用DTU 通讯模块,实现快递盒与阿里云服务器之间的连接。Cat.1 全称LTE UE-Category 1,是一个4G 通信网络下用户终端类别标准。相比于其他通讯技术,4G Cat.1 凭借更好的网络覆盖、更快的速度、更低的延时,具有高额的市场占有率,可以确保快递盒在运输的途中大部分时间都可以保持数据与云服务器的连接[7]。
设计采用了正点原子的ATK-IDM750C 高性能Cat.1 通讯模块,尺寸仅有30mm×34.5mm;上下行最高速度分别为10Mpbs/5Mps,工作电流为300mA;插入任一大运营商的4G SIM 卡,模块可支持HTTP、MQTT、阿里云、百度云、OneNET 等多种数据传输模式。支持TCP/UDP 协议和心跳包功能,保障了信号连接的稳定。另外,模块支持发送通信、基站定位(经纬度)以及掉线后自动重连[8]。
■2.7 12V 锂电电池组
为了保证运输过程的安全,选用优质的锂电池供电。同时,使用专用电池管理系统(BMS),能够实时监测电池的电压、温度、电流等参数,并提供过充、过放、过流和高温保护。定期检查和维护:定期检查电池的外观和接线是否正常。如果发现损坏、漏液、鼓包等异常情况,将更换电池并妥善处理废弃电池。同时,定期检查BMS 的运行状态和保护功能是否正常。在嵌入盒内时,将采用阻燃材料对电池进行包裹,进一步提高安全性。
3 系统程序设计
■3.1 温湿度采集程序
若运输过程中盒内温湿度高于对运输的物品造成损坏的安全值,则会发送报警值手机APP。通过进行工作状态检测,利用DHT11-Check()函数,如果在内置单片机发送起始信号后,DHT11 返回低电平后又接着迅速返回高电平,则表明DHT11 传感器运行正常。应该注意主机拉低总线时间一定要在18 毫秒以上,以确保DHT11 探测出起始信号。DHT11 与MCU 一次通讯大约为3 毫秒,主机的连续时间间隔必须大于100 毫秒。内置单片机使用DHT11-Read-Data(u8 *temp,u8 *wenshi)函数读取DHT11 上的传感器收集的数据,经过进一步运算后,该函数会以单总线输出温度和湿度数据。传感器MCU 处理结果的发送流程图如图6所示。
图6 DHT11 数据发送流程图
图7 阿里云透传模式数据传输示意图
图8 APP 程序流程图
■3.2 运动姿态解算程序
MPU9250 九轴传感器内置有DMP(数字运动处理器),可以对传感器的原始数据进行四元数转化后输出。方便了数据的处理,首先用u8 mpu_dmp_init(void)函数来初始化DMP,用mpu_set_dmp_state(1)函数来使能DMP 功能;用u8 mpu_mpl_get_data(float*pitch,float *roll,float *yaw)函数来获取mp1 姿态解算后的数 据,用int dmp_read_fifo(short *gyro,short *accel,long*quat)函数来读取数据,以得到姿态解算后的欧拉角。
通过对运动姿态的记录,在发生运输物品损坏时可作为证据来进行索赔。若发生激烈动作,则会报警至APP 端。使用上位机软件对传感器的波形进行显示,在此过程中,usartl_nimingreport 函数会对数据进行封装,计算校验并提交到地面站软件。利用MPU9250_send_data 函数来报告加速度及陀螺仪原始数据,可用来对传感器数据进行波形显示,并以传感器帧(02H)形式发送出去。usatl_report_imu 函数则是用来报告飞控显示帧的函数,它能实时显示MPU9250 姿态、传感器数据等等,并由状态帧(01H)传送出去。需要注意的是,数据处理要进行校准操作,即将快递盒平放,采集n 组数据后取平均值,将随后采集到的数据减去平均值。若加速度或者角速度过大,则表明快递盒遭到了暴力抛物运输,手机端将现实警告。
■3.3 光环境感知程序
为了保证药效,有些药品需要避光储存及运输,若在运输过程中发生了违规开盒、强光照射,则会做出记录并报警至APP 端。AP3216C 光环境传感器内部有许多寄存器,这些寄存器可以控制AP3216C 的工作模式、中断方式以及采集数据模式。数据的读取间隔应大于112.5ms。
首先使用AP3216C_Init 函数将AP3216C 初始化并复位,将工作模式设为ALS+PS+IR 模式(三个传感器同时工作)。调用寄存器的第一步是写操作,使用AP3216C_WriteOneBite(u8 reg,u8 data) 函数,其中u8 reg 是入口参数的地址;第二步是读操作,用AP3216C_ReadOneBite(u8 reg)这个函数可以循环读取传感器中的数据。最 后,AP3216C_ReadData(u16*ir,u16*ps,u16*als)函数可以实现对数据的读取然后封装。在调用这些函数收集到目标数据后,程序将通过STM32F767 进行处理计算。
如中途检测到光强突然剧增,表明快递盒被强制打开,系统将做记录并上传至云端。开发板上的MIC(麦克风咪头),已分别接入到WM8978 音频芯片的2 个差分输入通道,将对现场环境进行WAV 格式的录音并存储至板载SD 卡伺机上传。
■3.4 定位程序
NEO-6M GPS 模块将与阿波罗开发板的ATK-MOUDLE接口相连。在使用陶瓷天线通讯时,首次冷启动时间为1~10 分钟,若外接SMA 天线可缩短至1~3 分钟;若LED灯以亮灭时间9:1 进行闪烁,表示模块已定位成功,模块导航电文采用NMEA-0183 协议,通过串口2 接收位置信息,对得到的七条数据指令进行解码后输出位置,精度在2.5m以内。
程序使用unsigned char Ublox_Cfg_Rate(unsigned short measrate,unsigned char reftime) 函数来设置更新速率,其中参数short measrate 为测量时间间隔,参数reftime 为参考时间。为实现GPS 的初始化,将调用unsigned char GPS_Init(void) 函数;用void NMEA_GPGGA_Analys is(GPS_Packet Type Def *GPS_Packet,u8 *buf) 函数来对数据进行处理;其中buf 是收到GPS 数据缓冲区首地址。
■3.5 DTU 通讯程序设计
4G Cat.1 DTU 通讯模块需要外部单独供12V 的电压,插入4G 的SIM 卡后,利用单片机与模块进行uart 串口连接,服务器将数据发送到DTU 模块,接着通过串口发送给单片机,便可远程控制单片机工作;另一方面,单片机采集到的数据也可以通过串口发送至DTU 模块,DTU 模块转送至服务器端,便实现远程控制数据采集。DTU 共有2 种状态,分别为透明传输状态和配置状态。当处于配置状态时,主要采用正点原子的上位机调试软件来进行配置。首先在阿里云创建物联网设备,将DTU 模块连接阿里云服务器,对DTU的相关参数进行配置。使用上位机调试软件依次进行串口,按键及内部内存池的初始化,从内存池中分配内存给串口3 进行DTU 的数据接收。DTU 在接收到数据后,会将数据转发到串口进行输出。此外,用户可以使用短信功能实现通讯模块配置,以短信形式发送AT 指令来远程查询DTU 的参数。当处于透传状态时,DTU 会与阿里云服务器进行数据交互;当DTU 断电重启后,会默认为透传模式。
4 配套APP 程序设计
安卓系统具有开放性、开发成本低的特点,具有其广泛的用户群体。本设计以Microsoft Visual Studio Emulator for Android 为开发环境,使用Java 语言开发了快递盒系统的移动监视端。
提前记录好快递单号和其唯一对应的快递盒设备号,在软件程序的查询界面输入快递盒的设备号后,APP 将迅速调取阿里云服务器上当前设备的在线情况;如果电池电量不足,或有元件损坏,将通过4G 通讯模块上传到手机APP,通知使用者及时更换电池或维修设备。自检通过后,将显示快递盒内的温湿度,是否有中途违规开盒、是否有暴力抛物运输等行为,通过Cat.1 通讯模块的LBS 定位(即基站定位)功能和GPS 模块定位,对当前快递所处位置进行实时记录并上传至阿里云服务器。如果光传感器检测到快递盒内部光强度变化幅度过大,说明货物已被窥探,将使用开发板上的咪头麦克风进行录音并上传至云服务器,以保留证据。设备具有数据记录功能,支持查询寄出后快递的情况,以图表的形式为客户展现在详细信息的页面。移动APP 端的程序流程图如图9 所示。
图9 手机APP 示意图
图10 硬件电路测试图
测试结果显示,智能快递盒可以较好地监测货物所处环境数据。
5 结语
本设计定位为高端医药运输、高端私人运输等场景下的快递盒,可以实现多次循环使用。采用以阿波罗STM32F767 开发板上的处理器为核心,利用板载的及通过各个串口外接的传感器收集数据,通过Cat.1 DTU 上传到阿里云服务器,最后通过安卓App 实时查看数据的智能快递检测箱。相较之前的研究,采用了性能更加强悍的核心处理器和更加丰富的传感器作为环境数据来源,全程检测运输过程中的环境变化,更好地保护了收发人的利益,且可以多次重复使用,减少了快递垃圾。