基于Arduino姿态数据云的无线监控终端设计
2018-06-14程依平YAOYuanCHENGYipingXIONGYong
姚 远,程依平,熊 勇 YAO Yuan,CHENG Yiping,XIONG Yong
(1.华中师范大学 物理科学与技术学院,湖北 武汉 430079;2.武汉理工大学 航运学院,湖北 武汉 430063)
0 引言
信息时代以来,数据云通过数据收集、分析及应用为各行各业带来更多的业务及诸多商机,进一步提升了行业和企业的服务质量[1-2]。随着传感技术飞速发展和应用需求的提升,一系列新型传感器应运而生,比如体积小、质量轻、功耗低的姿态传感器,已在机器人平衡控制、车辆船舶、低成本小型无人机及人体运动分析装置等领域得到广泛的应用[3-4],为进一步研究运动控制装备的行为分析提供了有效手段。而传统的有线监控方式已经不能很好地满足分散式设备数据采集的需求,空间的限制使其难以适应现代工业生产应用的要求。
本文基于Arduino Mega 2560控制器,通过九轴姿态传感器实时获取运动参数,基于GPS定位技术实现实时定位,借助GPRS无线传输技术实现云端数据的下传或姿态数据和GPS数据的上传,为运动终端的实时姿态和GPS数据采集、运动实时控制、远端管理等提供超值服务。
监控终端系统包括硬件和软件两部分。硬件部分包括主控芯片、九轴姿态传感器、GPS、GPRS模块、电源模块和电路部分及其他元器件。软件部分包括姿态解算函数、GPS数据解析函数、无模式下行到集成控制系统;姿态传感器模块和GPS模块接收数据后通过串行通信方式将数据发送至主控芯片进行解析,并以自定义数据传输格式通过GPRS模块将数据上传至服务器端进行显示,实现数据的实时监控。
1 姿态数据云的无线监控终端的硬件设计
1.1 Arduino Mega 2560简介
Arduino是当前流行的开源硬件开发环境之一,硬件部分由Atmel AVR单片机、I/O接口及其相关电路组成,其开发环境、软硬件及核心库文件大多是开源的[5],开发者可以修改设计及代码,开发周期快。Arduino Mega 2560处理器具有16路模拟输入、15路PWM输出接口、多路数字输入输出接口,4路串口、一个USB口及一个ICSP下载口[6]。工作电压为5V,每个数字I/O口的直流电流为40mA。
无线采集终端选用Arduino Mega 2560控制器的串口0为调试程序下载口,串口1为姿态传感器通信接口,串口2为GPS通信接口,串口3为GPRS通信接口,同时利用多路PWM输出接口实现电机控制的驱动。
1.2 姿态传感器接口设计
姿态传感器采用高精度的九轴惯性导航模块,集成高精度的陀螺仪、加速度计、地磁场传感器,采用动力学解算、卡尔曼动态滤波算法及数字滤波技术,可快速求解出模块当前的实时运动姿态,降低测量噪声,提高测量精度;集成姿态解算单元,可以在动态环境下实时输出模块的当前姿态[7]。该传感器内部自带电压稳定电路,工作电压3V~6V,引脚兼容3.3V和5V,连接方便。姿态传感器与主控芯片通信采用串口通信,将Arduino的TXD1、RXD1分别与姿态传感器的TX、RX交叉相连[8]。
1.3 GPS通信接口设计
GPS即全球定位系统,可实时对目标提供准确的定位、测速和高精度的时间,GPS已经成为全世界交通运输系统的支柱,已广泛应用于定位、导航、测距等领域[9]。选用NEO-6M GPS模块获取终端定位信息,并采用串口通信方式与Arduino主控芯片通信,该模块通信引脚与主控芯片交叉相连,输出的GPS定位数据采用NMEA-0183标准协议。
1.4 GPRS通信接口设计
GPRS是GSM移动通信业务的一种无线数据业务,为用户提供高速、稳定可靠、永远在线的透明数据传输通道,使其迅速成为远程数据采集传输的主要模式,打破了有线监控的空间限制。已广泛应用于智能家居、消防、公共安全、气象、移动POS机、遥感勘测、农业、林业、水务、电力等行业[10]。
GPRS模块基于嵌入式处理器,内嵌TCP/IP协议,具有高度集成的UART转GSM/GPRS通信接口,可以轻松实现串口到网络的双向数据透明传输,支持TCP和UDP,同时具有短信透传、网络透传等多种工作方式。该模块尺寸小,接口灵活,设置简单,能满足各种传感器数据的上传和下行,能实现系统的网络化和无线化,使设备监控过程更加透明和便捷。GPRS接口电路设计如下,SMI1为SMI卡卡槽电路,设计了唤醒、开关机、复位、恢复出厂设置按键,有工作、数据传输、GPRS是否挂载网络指示灯,GPRS模块UART1_RXD、UART1_TXD与Arduino的TXD3、RXD3相连。由于GPRS模块工作电压为3.8V,而Arduino引脚电平为5V,因此设计了电平匹配电路。
1.5 USB接口设计
选用CH340G设计Arduino的串口转USB接口电路。具有全双工功能,内部有收发缓冲区,通讯波特率最高可以达到2Mbps,易于开发和使用。CH340G芯片与主控芯片引脚采用交叉连接的方式。
2 姿态数据云的无线监控终端的软件设计
Arduino编程语言是建立在C/C++基础上的,使用类似Java、C语言的Processing/Wiring。Arduino IDE开发环境将AVR单片机相关的一些参数设置模块化[11],在IDE中编写程序代码,不需要用户直接处理底层系统,提高了应用程序的开发效率。
系统上电初始化后将GPRS模块设置为网络透传模式并连接服务器,实现串口到网络的双向传输。主控芯片先后获取姿态传感器姿态运动数据与GPS定位数据并进行解算,解析完成后将数据打包,通过GPRS通信接口发布到云平台显示和处理,以实现数据的远程监控。主程序的流程图如图1所示。
图1 主程序流程图
2.1 姿态传感器模块子程序
姿态传感器在使用之前需连接上位机进行手动校准,并保存参数。该姿态传感器模块具有串口通信、IIC通信两种通信方式。本设计选用的串口通信通信协议包含帧头、功能码、数据域、校验位共4部分组成。
姿态传感器获取运动控制器的加速度、角速度、角度信息、滚转角、俯仰角、偏航角等,本设计只获取前三组运动数据。其中加速度计算方法:
x,y,z三轴的加速度计算方法如上,其中a为加速度数据,AL为低字节,AH为高字节。高字节、低字节依次发送。g为重力加速度,可取10m/s。角速度计算方法:
角度输出计算方法:
当系统检查接收到数据后,获取姿态传感器的运动数据,姿态传感器解算部分程序如下:
2.2 GPS模块子程序
终端GPS通信协议采用ASCII码来传递GPS定位信息,格式如下:$GPRMC,(1)UTC时间,(2)定位状态,(3)纬度,(4) N(北半球)/S(南半球),(5) 经度,(6) E(东经)/W(西经),(7) 地面速率,(8) 地面航向,(9) UTC日期,(10)磁偏角,(11)磁偏角方向,(12)模式指示*hh(hh为校验和)。其中定位状态“A”表示数据有效,“V”表示数据无效。当数据有效时,主控芯片获取保存一帧GPS数据,并在一帧数据中解析出所需数据。本设计只获取并储存前6组数据,即UTC时间和经纬度信息。
2.3 GPRS模块子程序
GPRS模块采用网络透传通信模式,借助嵌入式TCP/IP协议构建GPRS通信数据业务,进而实现采集数据和云平台的远程互通互联。GPRS初始化函数设置GPRS的工作模式为网络透传模式,打开服务器连接,连接服务器,连接成功后即可进行网络透传。void connectTcpServe()函数用AT指令开启透传模式并连接服务器,按协议数据格式发送数据并进行数据交互。本无线终端采用"*38;11;#"通信协议格式,命令以*开头,#结尾,38为命令字,11为长度。GPRS模块部分程序如下所示:
2.4 姿态数据云的无线监控终端的应用测试
基于Arduino Mega 2560控制器、九轴姿态传感器、GPS定位模块和GPRS模块设计的姿态数据云的无线监控终端,已应用于某运动控制终端的云端数据的下传、姿态数据和GPS数据的上传,可为该运动终端的实时姿态和GPS数据采集、运动实时控制、远端管理等提供超值服务。
要实现无线监控终端与云平台的数据交互,必先在源程序中完成相关传感器参数的设置,完成设置后,即可以使用云平台。首先,登录网站,然后创建个人账户,设置密码和注册个人账户。然后打开首页的“控制平台”,登录,选择设备号。当监控终端正常运行时,能显示用户在线和终端的姿态运动数据及定位信息。
经上述步骤,无线监控终端可将获取的数据与云平台进行交互。GPRS模块能将打包的姿态数据与定位数据准确、实时的远程发布到云平台,供研究人员接收、查看和数据处理。
3 结论
本文以Arduino Mega 2560单片机作为控制器,借助姿态传感器实时获取运动参数,基于GPS定位技术实现实时定位,通过GPRS无线传输技术实现姿态数据和GPS数据的无线传输,实现了姿态数据云数据的实时采集,该系统还可以将数据云端的控制命令实时下传并实时控制运动终端,该系统结构简单,有较强的实用性。
:
[1]李德仁,姚远,邵振峰.智慧城市中的大数据[J].武汉大学学报(信息科学版),2014,39(6):631-640.
[2]孟小峰,慈祥.大数据管理:概念、技术与挑战[J].计算机研究与发展,2013,50(1):146-169.
[3]李荣冰,刘建业,曾庆化,等.基于MEMS技术的微型惯性导航系统的发展现状[J].中国惯性技术学报,2004(6):90-96.
[4]胡铃.高精度姿态传感器的研制[D].西安:西安工业大学(硕士学位论文),2014.
[5]蔡睿妍.Arduino的原理及应用[J].电子设计工程,2012,20(16):155-157.
[6]杨佩璐,任昱衡.Arduino入门很简单[M].北京:清华大学出版社,2015.
[7]毕盛,闵华清,李淳,等.姿态传感器采集测试系统的设计与实现[J].计算机测量与控制,2011,19(7):1562-1564.
[8]王晓萍.微机原理与接口技术[M].杭州:浙江大学出版社,2015.
[9]曹洁,郭春禹.GSM模块对终端GPS数据的通信实现[J].电子测量与仪器学报,2010,24(11):1068-1073.
[10]张玉杰,边旭烨,杨萍.基于GPRS技术的远程互相关流量测控系统[J].自动化仪表,2014,35(7):44-47.
[11](英)SIMON MONK.ARDUINO编程指南75个智能硬件程序设计技巧[M].张佳进,陈立畅,孙超,等译.北京:人民邮电出版社,2016.