张振权, 彭颖, 黄昊, 马丽娜·叶尔江, 宋建
(华南理工大学, 机械与汽车工程学院, 广东, 广州 510640)
浆板运动(SUP)作为一项新兴的水上运动风靡全球,其入门难度低和娱乐价值高的特性使得该运动的受众群体广大,因而诞生了许多浆板运动基地[1-2]。然而此类基地多位于大型开放水域,过大的活动场地使得浆板运动基地难以在现有安全员数量下保证游玩人员的运动安全,游玩人员超出规定活动范围进入危险区域的风险极大。得益于定位技术与和物联网技术的发展,精准定位和云端监控给上述问题带来了新的技术解决方案[3]。
目前市面上常见的安全定位设备有车辆定位器、儿童老人防丢定位器等。然而车辆定位器在定位精度上有所欠缺,定位精度多在几十米范围内,并不适合用于浆板运动场景;儿童老人防丢定位器虽在精度上满足要求,但有限的3~5天续航时间使得浆板运动场合下设备的使用价值锐减[4-6]。本文根据浆板运动基地的需求设计了一款具有高精度实时定位和长时间续航性能特点的安全定位器与云平台应用,可对游玩人员进行实时位置跟踪管理。
定位器的硬件电路主要由微处理器模块、通信定位模块、电源管理模块等3部分组成。其中,微处理器模块由STM32L031F6P6芯片及其外围电路组成;通信定位模块由BC20模组与天线、SIM卡插槽等组成,BC20与STM32L031通过UART口交换数据;电源管理模块主要由锂电池充电芯片TP4065、3.7 V锂电池、线性稳压芯片ME6211C33组成,为定位器提供持续的工作电源。定位器的硬件结构如图1所示。
图1 定位器硬件结构框图
STM32系列具有高性能、低成本、低功耗以及可裁剪的特点,在应用上大致可以分成主流型、高性能型以及超低功耗型。本文应用场景要求定位器的功耗尽可能的小,在此先确定将超低功耗型的STM32L系列作为微处理器芯片选型的主方向[7]。
表1列出了STM32L系列对应的内核,包括Cortex-M0+、Cortex-M3、Cortex-M4以及Cortex-M33,其中Cortex-M0+虽然是比较基础的ARM处理器,但其性能完全能够满足本文的应用需求,且运行能耗低并支持低能耗连接。在此基础上综合考虑芯片大小和成本等因素,最终选择了STM32L031F6P6作为主控电路的微处理器芯片。该芯片使用ARM Cortex-M0+内核,采用20个引脚的TSSOP-20封装,Flash内存为32 Kbytes,正常工作电压范围为1.8~3.6 V。
表1 STM32L系列嵌入式芯片系列与对应内核
不同的物联网通信技术有着不同的技术特征和应用场景,目前常用的物联网无线通信技术包括Sigfox、Wi-Fi、NB-IoT以及LoRa等[8]。根据应用需求,本文从通信距离、功耗、传输速度、能否接入互联网以及适用场景等几方面进行讨论,其相关参数如表2所示。
表2 常用物联网无线通信技术相关参数对比
由于桨板运动的活动场所一般在靠近郊区的湖泊中,且活动范围较大。通过表2的对比数据可知,NB-IoT和Sigfox均可满足桨板运动安全定位要求,然而Sigfox在我国的网络覆盖率较低,在此选择了NB-IoT以及支持该通信技术的BC20模块。BC20是一款支持GNSS定位功能的NB-IoT无线通信模块,相比于传统的NB-IoT+GNSS方案,其一体化设计能在一定程度上减少设备的体积,而且还能实现北斗和GPS双卫星导航系统解调算法,能在一定程度上提高定位的准确性,更能满足高定位精度的应用场景。
电源是一个设备不可缺少的组成部分,定位器的电源管理模块由充电、供电以及线性稳压三部分组成。正常运行时,由于锂电池的输出电压随电量变化且与各个芯片的工作电压不匹配,因此需要通过ME6211C33芯片将锂电池的输出电压转换为稳定的3.3 V电压,使各芯片都能安全稳定的运行,确保定位的准确性和通信的可靠性;而当电量不足时,定位器会及时预警,工作人员可以通过TP4065芯片进行充电,确保供电正常。
安全定位器程序运行流程如图2所示。
图2 定位器程序流程图
安全定位器在初始化后便尝试连接OneNET云平台以便后续数据交互;成功连接则通过BC20模组获取RMC(最简定位信息)格式的GNSS语句并从中解析出有效位置信息,然后通过ADC转换计算得到电池电量信息。综合考虑浆板运动中定位器实时定位与续航能力的要求,本文采用位置差模式上报位置信息和电量阶梯模式上报电量信息,有效减少了无价值数据的报送对电量的损耗。
BC20模块支持标准NMEA 0183协议。STM32向BC20模块发送AT+QGNSSRD=“NMEA / RMC”以获取RMC格式的GNSS语句,在判断返回的GNSS语句有效性后,从中提取经纬度信息[9]。RMC格式的GNSS语句包含经纬度、时间等内容,具体含义如表3所示。
表3 RMC语句的信息解析
提取的经纬度数据格式分别为“ddmm.mmmmm”、“dddmm.mmmmm”,将其中单位为“分”的数值进行“度”的单位转换以简化信息,处理后的经纬度数据分别以变量形式进行储存。
电量监测的主要流程为对ADC校准以更新校准因子,得到更加精准的数字电压值;启动ADC后通过微处理器芯片的PA4引脚逐次读取锂电池电压模拟值BAT_DATA、内部电压基准值VREFINT_DATA,寻址得到参考电压校准值VREFINT_CAL,VDDA_Charac取3.0 V,通过式(1)得到实际VDDA的值,通过式(2)得到电池实际电压值BAT_VALUE。循环ADC转换10次取平均值得到实际锂电池电压平均值,最后根据式(3)将得到数值转换为百分比。
(1)
(2)
(3)
获得经过处理的定位数据后,定位器通过位置差报送模式上报动态位置信息,其工作流程为计算当前定位数据与前次上报数据的距离,距离大于等于5 m便上报当前位置信息,否则不予报送。定位器的电量监测通过电量阶梯报送模式进行上报,其工作流程为:获取电量百分比数据后,使用判断语句“if(BAT_PCT%10==0)” 判断当前电量百分比是否为10%的倍数,若满足条件则将电量数据上报。上报数据均通过AT+MIPLNOTIFY指令控制BC20模块向云平台进行传送。
本文使用的是中国移动的OneNET物联网开发云平台。OneNET是一个PaaS物联网开放平台,方便开发者实现终端设备的接入与连接[10]。定位器的BC20模块通过LwM2M协议与OneNET云平台进行交互,其中LwM2M是一种安全、高效、易部署的物联网协议,适用于不同网络环境下资源有限的终端设备管理[11]。
建立云平台与定位器的连接,需要事先在平台中创建设备应用:首先在NB-IoT物联网套件创建产品,其中联网方式选择NB-IoT,设备接入协议选择LwM2M,然后创建设备应用并输入定位器的IMEI码与IMSI码,实现安全定位器与应用的连接绑定。定位器启动后,通过AT指令向云平台发送连接请求,待云平台对应的订阅请求以及发现资源请求响应后即建立与OneNET的连接。
定位器接入OneNET平台后,可以在设备资源列表中查看实时上报的电量百分比数据。为了实现低电量报警,平台提供了事件触发器管理功能。低电量报警配置流程:在触发器管理界面中选定关联设备以及相关电量对应的资源信息,设置合适的触发条件,完成上述动作即可开启平台的低电量报警功能。配置界面如图3所示。
图3 低电量报警配置界面
开启定位器并接入云平台,根据平台上的定位信息历史数据流,借助百度地图API可以得到如图4所示的定位器移动轨迹。虽然实测过程中定位器的运动速度是变化的,但从图中可以看出平台上每个位置点间的距离较为均匀,且均在5 m以上,表明位置差报送模式运行正常。基于OneNET平台的位置数据,桨板运动基地管理者可对每个游客的运动轨迹进行实时监控,借助电子围栏更可以实现超安全区域的预警。
图4 根据位置数据流得到的定位器移动轨迹
根据实地调研情况得知,每块浆板的使用时间约为4 h/d,在此确定以5 h作为该安全定位器的每日开机使用时间。使用配置额定容量5000 mAh充电电池的安全定位器进行模拟测试,达到10%的预警电量的使用时间为12~14 d,较好平衡了充电电池成本与桨板基地管理人员的充电劳动强度。
本文设计了一款低功耗、长续航的北斗/GPS双重定位浆板运动安全定位器。通过调研分析,选取超低功耗型的STM32L031F6P6作为主控电路的微处理器芯片,并设计了硬件电路;软件设计提出了位置差上报位置信息和电量阶梯上报电量信息的数据报送方法,既能为桨板运动管理提供了实时的有价值数据,也极大降低了设备的运行功耗。运行测试表明,开发的定位器定位准确,配置5000 mAh充电电池可续航12~14 d,在桨板与其他户外运动的安全定位管理中有较大的应用价值。