姚 遠(yuǎn),程依平,熊 勇 YAO Yuan,CHENG Yiping,XIONG Yong
(1.華中師范大學(xué) 物理科學(xué)與技術(shù)學(xué)院,湖北 武漢 430079;2.武漢理工大學(xué) 航運(yùn)學(xué)院,湖北 武漢 430063)
信息時(shí)代以來(lái),數(shù)據(jù)云通過(guò)數(shù)據(jù)收集、分析及應(yīng)用為各行各業(yè)帶來(lái)更多的業(yè)務(wù)及諸多商機(jī),進(jìn)一步提升了行業(yè)和企業(yè)的服務(wù)質(zhì)量[1-2]。隨著傳感技術(shù)飛速發(fā)展和應(yīng)用需求的提升,一系列新型傳感器應(yīng)運(yùn)而生,比如體積小、質(zhì)量輕、功耗低的姿態(tài)傳感器,已在機(jī)器人平衡控制、車(chē)輛船舶、低成本小型無(wú)人機(jī)及人體運(yùn)動(dòng)分析裝置等領(lǐng)域得到廣泛的應(yīng)用[3-4],為進(jìn)一步研究運(yùn)動(dòng)控制裝備的行為分析提供了有效手段。而傳統(tǒng)的有線(xiàn)監(jiān)控方式已經(jīng)不能很好地滿(mǎn)足分散式設(shè)備數(shù)據(jù)采集的需求,空間的限制使其難以適應(yīng)現(xiàn)代工業(yè)生產(chǎn)應(yīng)用的要求。
本文基于Arduino Mega 2560控制器,通過(guò)九軸姿態(tài)傳感器實(shí)時(shí)獲取運(yùn)動(dòng)參數(shù),基于GPS定位技術(shù)實(shí)現(xiàn)實(shí)時(shí)定位,借助GPRS無(wú)線(xiàn)傳輸技術(shù)實(shí)現(xiàn)云端數(shù)據(jù)的下傳或姿態(tài)數(shù)據(jù)和GPS數(shù)據(jù)的上傳,為運(yùn)動(dòng)終端的實(shí)時(shí)姿態(tài)和GPS數(shù)據(jù)采集、運(yùn)動(dòng)實(shí)時(shí)控制、遠(yuǎn)端管理等提供超值服務(wù)。
監(jiān)控終端系統(tǒng)包括硬件和軟件兩部分。硬件部分包括主控芯片、九軸姿態(tài)傳感器、GPS、GPRS模塊、電源模塊和電路部分及其他元器件。軟件部分包括姿態(tài)解算函數(shù)、GPS數(shù)據(jù)解析函數(shù)、無(wú)模式下行到集成控制系統(tǒng);姿態(tài)傳感器模塊和GPS模塊接收數(shù)據(jù)后通過(guò)串行通信方式將數(shù)據(jù)發(fā)送至主控芯片進(jìn)行解析,并以自定義數(shù)據(jù)傳輸格式通過(guò)GPRS模塊將數(shù)據(jù)上傳至服務(wù)器端進(jìn)行顯示,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)監(jiān)控。
Arduino是當(dāng)前流行的開(kāi)源硬件開(kāi)發(fā)環(huán)境之一,硬件部分由Atmel AVR單片機(jī)、I/O接口及其相關(guān)電路組成,其開(kāi)發(fā)環(huán)境、軟硬件及核心庫(kù)文件大多是開(kāi)源的[5],開(kāi)發(fā)者可以修改設(shè)計(jì)及代碼,開(kāi)發(fā)周期快。Arduino Mega 2560處理器具有16路模擬輸入、15路PWM輸出接口、多路數(shù)字輸入輸出接口,4路串口、一個(gè)USB口及一個(gè)ICSP下載口[6]。工作電壓為5V,每個(gè)數(shù)字I/O口的直流電流為40mA。
無(wú)線(xiàn)采集終端選用Arduino Mega 2560控制器的串口0為調(diào)試程序下載口,串口1為姿態(tài)傳感器通信接口,串口2為GPS通信接口,串口3為GPRS通信接口,同時(shí)利用多路PWM輸出接口實(shí)現(xiàn)電機(jī)控制的驅(qū)動(dòng)。
姿態(tài)傳感器采用高精度的九軸慣性導(dǎo)航模塊,集成高精度的陀螺儀、加速度計(jì)、地磁場(chǎng)傳感器,采用動(dòng)力學(xué)解算、卡爾曼動(dòng)態(tài)濾波算法及數(shù)字濾波技術(shù),可快速求解出模塊當(dāng)前的實(shí)時(shí)運(yùn)動(dòng)姿態(tài),降低測(cè)量噪聲,提高測(cè)量精度;集成姿態(tài)解算單元,可以在動(dòng)態(tài)環(huán)境下實(shí)時(shí)輸出模塊的當(dāng)前姿態(tài)[7]。該傳感器內(nèi)部自帶電壓穩(wěn)定電路,工作電壓3V~6V,引腳兼容3.3V和5V,連接方便。姿態(tài)傳感器與主控芯片通信采用串口通信,將Arduino的TXD1、RXD1分別與姿態(tài)傳感器的TX、RX交叉相連[8]。
GPS即全球定位系統(tǒng),可實(shí)時(shí)對(duì)目標(biāo)提供準(zhǔn)確的定位、測(cè)速和高精度的時(shí)間,GPS已經(jīng)成為全世界交通運(yùn)輸系統(tǒng)的支柱,已廣泛應(yīng)用于定位、導(dǎo)航、測(cè)距等領(lǐng)域[9]。選用NEO-6M GPS模塊獲取終端定位信息,并采用串口通信方式與Arduino主控芯片通信,該模塊通信引腳與主控芯片交叉相連,輸出的GPS定位數(shù)據(jù)采用NMEA-0183標(biāo)準(zhǔn)協(xié)議。
GPRS是GSM移動(dòng)通信業(yè)務(wù)的一種無(wú)線(xiàn)數(shù)據(jù)業(yè)務(wù),為用戶(hù)提供高速、穩(wěn)定可靠、永遠(yuǎn)在線(xiàn)的透明數(shù)據(jù)傳輸通道,使其迅速成為遠(yuǎn)程數(shù)據(jù)采集傳輸?shù)闹饕J剑蚱屏擞芯€(xiàn)監(jiān)控的空間限制。已廣泛應(yīng)用于智能家居、消防、公共安全、氣象、移動(dòng)POS機(jī)、遙感勘測(cè)、農(nóng)業(yè)、林業(yè)、水務(wù)、電力等行業(yè)[10]。
GPRS模塊基于嵌入式處理器,內(nèi)嵌TCP/IP協(xié)議,具有高度集成的UART轉(zhuǎn)GSM/GPRS通信接口,可以輕松實(shí)現(xiàn)串口到網(wǎng)絡(luò)的雙向數(shù)據(jù)透明傳輸,支持TCP和UDP,同時(shí)具有短信透?jìng)?、網(wǎng)絡(luò)透?jìng)鞯榷喾N工作方式。該模塊尺寸小,接口靈活,設(shè)置簡(jiǎn)單,能滿(mǎn)足各種傳感器數(shù)據(jù)的上傳和下行,能實(shí)現(xiàn)系統(tǒng)的網(wǎng)絡(luò)化和無(wú)線(xiàn)化,使設(shè)備監(jiān)控過(guò)程更加透明和便捷。GPRS接口電路設(shè)計(jì)如下,SMI1為SMI卡卡槽電路,設(shè)計(jì)了喚醒、開(kāi)關(guān)機(jī)、復(fù)位、恢復(fù)出廠設(shè)置按鍵,有工作、數(shù)據(jù)傳輸、GPRS是否掛載網(wǎng)絡(luò)指示燈,GPRS模塊UART1_RXD、UART1_TXD與Arduino的TXD3、RXD3相連。由于GPRS模塊工作電壓為3.8V,而Arduino引腳電平為5V,因此設(shè)計(jì)了電平匹配電路。
1.5 USB接口設(shè)計(jì)
選用CH340G設(shè)計(jì)Arduino的串口轉(zhuǎn)USB接口電路。具有全雙工功能,內(nèi)部有收發(fā)緩沖區(qū),通訊波特率最高可以達(dá)到2Mbps,易于開(kāi)發(fā)和使用。CH340G芯片與主控芯片引腳采用交叉連接的方式。
Arduino編程語(yǔ)言是建立在C/C++基礎(chǔ)上的,使用類(lèi)似Java、C語(yǔ)言的Processing/Wiring。Arduino IDE開(kāi)發(fā)環(huán)境將AVR單片機(jī)相關(guān)的一些參數(shù)設(shè)置模塊化[11],在IDE中編寫(xiě)程序代碼,不需要用戶(hù)直接處理底層系統(tǒng),提高了應(yīng)用程序的開(kāi)發(fā)效率。
系統(tǒng)上電初始化后將GPRS模塊設(shè)置為網(wǎng)絡(luò)透?jìng)髂J讲⑦B接服務(wù)器,實(shí)現(xiàn)串口到網(wǎng)絡(luò)的雙向傳輸。主控芯片先后獲取姿態(tài)傳感器姿態(tài)運(yùn)動(dòng)數(shù)據(jù)與GPS定位數(shù)據(jù)并進(jìn)行解算,解析完成后將數(shù)據(jù)打包,通過(guò)GPRS通信接口發(fā)布到云平臺(tái)顯示和處理,以實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程監(jiān)控。主程序的流程圖如圖1所示。
圖1 主程序流程圖
姿態(tài)傳感器在使用之前需連接上位機(jī)進(jìn)行手動(dòng)校準(zhǔn),并保存參數(shù)。該姿態(tài)傳感器模塊具有串口通信、IIC通信兩種通信方式。本設(shè)計(jì)選用的串口通信通信協(xié)議包含幀頭、功能碼、數(shù)據(jù)域、校驗(yàn)位共4部分組成。
姿態(tài)傳感器獲取運(yùn)動(dòng)控制器的加速度、角速度、角度信息、滾轉(zhuǎn)角、俯仰角、偏航角等,本設(shè)計(jì)只獲取前三組運(yùn)動(dòng)數(shù)據(jù)。其中加速度計(jì)算方法:
x,y,z三軸的加速度計(jì)算方法如上,其中a為加速度數(shù)據(jù),AL為低字節(jié),AH為高字節(jié)。高字節(jié)、低字節(jié)依次發(fā)送。g為重力加速度,可取10m/s。角速度計(jì)算方法:
角度輸出計(jì)算方法:
當(dāng)系統(tǒng)檢查接收到數(shù)據(jù)后,獲取姿態(tài)傳感器的運(yùn)動(dòng)數(shù)據(jù),姿態(tài)傳感器解算部分程序如下:
終端GPS通信協(xié)議采用ASCII碼來(lái)傳遞GPS定位信息,格式如下:$GPRMC,(1)UTC時(shí)間,(2)定位狀態(tài),(3)緯度,(4) N(北半球)/S(南半球),(5) 經(jīng)度,(6) E(東經(jīng))/W(西經(jīng)),(7) 地面速率,(8) 地面航向,(9) UTC日期,(10)磁偏角,(11)磁偏角方向,(12)模式指示*hh(hh為校驗(yàn)和)。其中定位狀態(tài)“A”表示數(shù)據(jù)有效,“V”表示數(shù)據(jù)無(wú)效。當(dāng)數(shù)據(jù)有效時(shí),主控芯片獲取保存一幀GPS數(shù)據(jù),并在一幀數(shù)據(jù)中解析出所需數(shù)據(jù)。本設(shè)計(jì)只獲取并儲(chǔ)存前6組數(shù)據(jù),即UTC時(shí)間和經(jīng)緯度信息。
GPRS模塊采用網(wǎng)絡(luò)透?jìng)魍ㄐ拍J?,借助嵌入式TCP/IP協(xié)議構(gòu)建GPRS通信數(shù)據(jù)業(yè)務(wù),進(jìn)而實(shí)現(xiàn)采集數(shù)據(jù)和云平臺(tái)的遠(yuǎn)程互通互聯(lián)。GPRS初始化函數(shù)設(shè)置GPRS的工作模式為網(wǎng)絡(luò)透?jìng)髂J?,打開(kāi)服務(wù)器連接,連接服務(wù)器,連接成功后即可進(jìn)行網(wǎng)絡(luò)透?jìng)?。void connectTcpServe()函數(shù)用AT指令開(kāi)啟透?jìng)髂J讲⑦B接服務(wù)器,按協(xié)議數(shù)據(jù)格式發(fā)送數(shù)據(jù)并進(jìn)行數(shù)據(jù)交互。本無(wú)線(xiàn)終端采用"*38;11;#"通信協(xié)議格式,命令以*開(kāi)頭,#結(jié)尾,38為命令字,11為長(zhǎng)度。GPRS模塊部分程序如下所示:
基于Arduino Mega 2560控制器、九軸姿態(tài)傳感器、GPS定位模塊和GPRS模塊設(shè)計(jì)的姿態(tài)數(shù)據(jù)云的無(wú)線(xiàn)監(jiān)控終端,已應(yīng)用于某運(yùn)動(dòng)控制終端的云端數(shù)據(jù)的下傳、姿態(tài)數(shù)據(jù)和GPS數(shù)據(jù)的上傳,可為該運(yùn)動(dòng)終端的實(shí)時(shí)姿態(tài)和GPS數(shù)據(jù)采集、運(yùn)動(dòng)實(shí)時(shí)控制、遠(yuǎn)端管理等提供超值服務(wù)。
要實(shí)現(xiàn)無(wú)線(xiàn)監(jiān)控終端與云平臺(tái)的數(shù)據(jù)交互,必先在源程序中完成相關(guān)傳感器參數(shù)的設(shè)置,完成設(shè)置后,即可以使用云平臺(tái)。首先,登錄網(wǎng)站,然后創(chuàng)建個(gè)人賬戶(hù),設(shè)置密碼和注冊(cè)個(gè)人賬戶(hù)。然后打開(kāi)首頁(yè)的“控制平臺(tái)”,登錄,選擇設(shè)備號(hào)。當(dāng)監(jiān)控終端正常運(yùn)行時(shí),能顯示用戶(hù)在線(xiàn)和終端的姿態(tài)運(yùn)動(dòng)數(shù)據(jù)及定位信息。
經(jīng)上述步驟,無(wú)線(xiàn)監(jiān)控終端可將獲取的數(shù)據(jù)與云平臺(tái)進(jìn)行交互。GPRS模塊能將打包的姿態(tài)數(shù)據(jù)與定位數(shù)據(jù)準(zhǔn)確、實(shí)時(shí)的遠(yuǎn)程發(fā)布到云平臺(tái),供研究人員接收、查看和數(shù)據(jù)處理。
本文以Arduino Mega 2560單片機(jī)作為控制器,借助姿態(tài)傳感器實(shí)時(shí)獲取運(yùn)動(dòng)參數(shù),基于GPS定位技術(shù)實(shí)現(xiàn)實(shí)時(shí)定位,通過(guò)GPRS無(wú)線(xiàn)傳輸技術(shù)實(shí)現(xiàn)姿態(tài)數(shù)據(jù)和GPS數(shù)據(jù)的無(wú)線(xiàn)傳輸,實(shí)現(xiàn)了姿態(tài)數(shù)據(jù)云數(shù)據(jù)的實(shí)時(shí)采集,該系統(tǒng)還可以將數(shù)據(jù)云端的控制命令實(shí)時(shí)下傳并實(shí)時(shí)控制運(yùn)動(dòng)終端,該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,有較強(qiáng)的實(shí)用性。
:
[1]李德仁,姚遠(yuǎn),邵振峰.智慧城市中的大數(shù)據(jù)[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2014,39(6):631-640.
[2]孟小峰,慈祥.大數(shù)據(jù)管理:概念、技術(shù)與挑戰(zhàn)[J].計(jì)算機(jī)研究與發(fā)展,2013,50(1):146-169.
[3]李榮冰,劉建業(yè),曾慶化,等.基于MEMS技術(shù)的微型慣性導(dǎo)航系統(tǒng)的發(fā)展現(xiàn)狀[J].中國(guó)慣性技術(shù)學(xué)報(bào),2004(6):90-96.
[4]胡鈴.高精度姿態(tài)傳感器的研制[D].西安:西安工業(yè)大學(xué)(碩士學(xué)位論文),2014.
[5]蔡睿妍.Arduino的原理及應(yīng)用[J].電子設(shè)計(jì)工程,2012,20(16):155-157.
[6]楊佩璐,任昱衡.Arduino入門(mén)很簡(jiǎn)單[M].北京:清華大學(xué)出版社,2015.
[7]畢盛,閔華清,李淳,等.姿態(tài)傳感器采集測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2011,19(7):1562-1564.
[8]王曉萍.微機(jī)原理與接口技術(shù)[M].杭州:浙江大學(xué)出版社,2015.
[9]曹潔,郭春禹.GSM模塊對(duì)終端GPS數(shù)據(jù)的通信實(shí)現(xiàn)[J].電子測(cè)量與儀器學(xué)報(bào),2010,24(11):1068-1073.
[10]張玉杰,邊旭燁,楊萍.基于GPRS技術(shù)的遠(yuǎn)程互相關(guān)流量測(cè)控系統(tǒng)[J].自動(dòng)化儀表,2014,35(7):44-47.
[11](英)SIMON MONK.ARDUINO編程指南75個(gè)智能硬件程序設(shè)計(jì)技巧[M].張佳進(jìn),陳立暢,孫超,等譯.北京:人民郵電出版社,2016.