姚 遠,程依平,熊 勇 YAO Yuan,CHENG Yiping,XIONG Yong
(1.華中師范大學 物理科學與技術學院,湖北 武漢 430079;2.武漢理工大學 航運學院,湖北 武漢 430063)
信息時代以來,數據云通過數據收集、分析及應用為各行各業帶來更多的業務及諸多商機,進一步提升了行業和企業的服務質量[1-2]。隨著傳感技術飛速發展和應用需求的提升,一系列新型傳感器應運而生,比如體積小、質量輕、功耗低的姿態傳感器,已在機器人平衡控制、車輛船舶、低成本小型無人機及人體運動分析裝置等領域得到廣泛的應用[3-4],為進一步研究運動控制裝備的行為分析提供了有效手段。而傳統的有線監控方式已經不能很好地滿足分散式設備數據采集的需求,空間的限制使其難以適應現代工業生產應用的要求。
本文基于Arduino Mega 2560控制器,通過九軸姿態傳感器實時獲取運動參數,基于GPS定位技術實現實時定位,借助GPRS無線傳輸技術實現云端數據的下傳或姿態數據和GPS數據的上傳,為運動終端的實時姿態和GPS數據采集、運動實時控制、遠端管理等提供超值服務。
監控終端系統包括硬件和軟件兩部分。硬件部分包括主控芯片、九軸姿態傳感器、GPS、GPRS模塊、電源模塊和電路部分及其他元器件。軟件部分包括姿態解算函數、GPS數據解析函數、無模式下行到集成控制系統;姿態傳感器模塊和GPS模塊接收數據后通過串行通信方式將數據發送至主控芯片進行解析,并以自定義數據傳輸格式通過GPRS模塊將數據上傳至服務器端進行顯示,實現數據的實時監控。
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輸出接口實現電機控制的驅動。
姿態傳感器采用高精度的九軸慣性導航模塊,集成高精度的陀螺儀、加速度計、地磁場傳感器,采用動力學解算、卡爾曼動態濾波算法及數字濾波技術,可快速求解出模塊當前的實時運動姿態,降低測量噪聲,提高測量精度;集成姿態解算單元,可以在動態環境下實時輸出模塊的當前姿態[7]。該傳感器內部自帶電壓穩定電路,工作電壓3V~6V,引腳兼容3.3V和5V,連接方便。姿態傳感器與主控芯片通信采用串口通信,將Arduino的TXD1、RXD1分別與姿態傳感器的TX、RX交叉相連[8]。
GPS即全球定位系統,可實時對目標提供準確的定位、測速和高精度的時間,GPS已經成為全世界交通運輸系統的支柱,已廣泛應用于定位、導航、測距等領域[9]。選用NEO-6M GPS模塊獲取終端定位信息,并采用串口通信方式與Arduino主控芯片通信,該模塊通信引腳與主控芯片交叉相連,輸出的GPS定位數據采用NMEA-0183標準協議。
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芯片與主控芯片引腳采用交叉連接的方式。
Arduino編程語言是建立在C/C++基礎上的,使用類似Java、C語言的Processing/Wiring。Arduino IDE開發環境將AVR單片機相關的一些參數設置模塊化[11],在IDE中編寫程序代碼,不需要用戶直接處理底層系統,提高了應用程序的開發效率。
系統上電初始化后將GPRS模塊設置為網絡透傳模式并連接服務器,實現串口到網絡的雙向傳輸。主控芯片先后獲取姿態傳感器姿態運動數據與GPS定位數據并進行解算,解析完成后將數據打包,通過GPRS通信接口發布到云平臺顯示和處理,以實現數據的遠程監控。主程序的流程圖如圖1所示。

圖1 主程序流程圖
姿態傳感器在使用之前需連接上位機進行手動校準,并保存參數。該姿態傳感器模塊具有串口通信、IIC通信兩種通信方式。本設計選用的串口通信通信協議包含幀頭、功能碼、數據域、校驗位共4部分組成。
姿態傳感器獲取運動控制器的加速度、角速度、角度信息、滾轉角、俯仰角、偏航角等,本設計只獲取前三組運動數據。其中加速度計算方法:

x,y,z三軸的加速度計算方法如上,其中a為加速度數據,AL為低字節,AH為高字節。高字節、低字節依次發送。g為重力加速度,可取10m/s。角速度計算方法:

角度輸出計算方法:

當系統檢查接收到數據后,獲取姿態傳感器的運動數據,姿態傳感器解算部分程序如下:

終端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時間和經緯度信息。
GPRS模塊采用網絡透傳通信模式,借助嵌入式TCP/IP協議構建GPRS通信數據業務,進而實現采集數據和云平臺的遠程互通互聯。GPRS初始化函數設置GPRS的工作模式為網絡透傳模式,打開服務器連接,連接服務器,連接成功后即可進行網絡透傳。void connectTcpServe()函數用AT指令開啟透傳模式并連接服務器,按協議數據格式發送數據并進行數據交互。本無線終端采用"*38;11;#"通信協議格式,命令以*開頭,#結尾,38為命令字,11為長度。GPRS模塊部分程序如下所示:

基于Arduino Mega 2560控制器、九軸姿態傳感器、GPS定位模塊和GPRS模塊設計的姿態數據云的無線監控終端,已應用于某運動控制終端的云端數據的下傳、姿態數據和GPS數據的上傳,可為該運動終端的實時姿態和GPS數據采集、運動實時控制、遠端管理等提供超值服務。
要實現無線監控終端與云平臺的數據交互,必先在源程序中完成相關傳感器參數的設置,完成設置后,即可以使用云平臺。首先,登錄網站,然后創建個人賬戶,設置密碼和注冊個人賬戶。然后打開首頁的“控制平臺”,登錄,選擇設備號。當監控終端正常運行時,能顯示用戶在線和終端的姿態運動數據及定位信息。
經上述步驟,無線監控終端可將獲取的數據與云平臺進行交互。GPRS模塊能將打包的姿態數據與定位數據準確、實時的遠程發布到云平臺,供研究人員接收、查看和數據處理。
本文以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.