基于ZigBee的航標(biāo)遙測終端
摘要:介紹了一種基于ZigBee無線傳感器網(wǎng)絡(luò)技術(shù)來實(shí)現(xiàn)航標(biāo)遙測的新型終端,該終端是航標(biāo)遙測遙控系統(tǒng)的關(guān)鍵部件。它的硬件電路采用S3C2410 ARM9微處理器、GPS模塊、ZigBee模塊和CDMA模塊搭建;軟件采用嵌入式ARM-Linux操作系統(tǒng)開發(fā)平臺,通過多線程的協(xié)同模塊化設(shè)計(jì)和模塊之間的有機(jī)組合,實(shí)現(xiàn)整個(gè)終端所需功能的程序設(shè)計(jì)。經(jīng)過調(diào)試和移植,結(jié)果表明終端可以穩(wěn)定地實(shí)現(xiàn)航標(biāo)燈、GPS數(shù)據(jù)采集、Zig-Bee網(wǎng)絡(luò)和CDMA雙模數(shù)據(jù)傳輸功能和雙模自動(dòng)切換、航標(biāo)燈的遙測遙控等功能。
關(guān)鍵詞:ZigBee;遙控終端;ARM-Linux;多線程
0 引言
航標(biāo)是船舶在海上安全運(yùn)行的重要保障,航標(biāo)遙測終端的主要功能是實(shí)現(xiàn)對航標(biāo)運(yùn)行狀態(tài)、參數(shù)的實(shí)時(shí)監(jiān)控,并將數(shù)據(jù)傳輸?shù)娇刂浦行?。對航?biāo)遙測終端的開發(fā)和研究已經(jīng)將近10年,也取得了一些成果,對航標(biāo)的管理和維護(hù)也有著重要的作用。但是,當(dāng)前使用的航標(biāo)遙測終端,由于處理器系統(tǒng)主要采用單片機(jī),通信網(wǎng)絡(luò)采用GSM,CDMA,GPRS網(wǎng)等公網(wǎng)實(shí)現(xiàn)數(shù)據(jù)傳輸,使這種終端在功能和硬件資源方面有限,并在海上有的地方會(huì)出現(xiàn)通信的盲區(qū)或者信號不穩(wěn)定,造成目前的航標(biāo)遙測遙控終端還存在著性能和穩(wěn)定性等方面的問題,還不能完全滿足現(xiàn)代化、信息化航標(biāo)管理的要求。因此,使用新的技術(shù)和手段來開發(fā)航標(biāo)遙測終端是相當(dāng)必要的。
ZigBee無線網(wǎng)絡(luò)能夠通過自組網(wǎng)形式進(jìn)行數(shù)據(jù)的實(shí)時(shí)傳輸,并具有低寬帶、功耗低、體積小、集成度高、成本低、安全等特點(diǎn),目前已經(jīng)在自動(dòng)控制、遠(yuǎn)程監(jiān)控等領(lǐng)域得到了廣泛的應(yīng)用。對于航標(biāo)遙測系統(tǒng),由于需要傳輸?shù)臄?shù)據(jù)量不大,所以采用高寬帶是多余的,而使用ZigBee技術(shù)是適合的。
因此,本文介紹一種在S3C2410處理器和ARM-Linux操作系統(tǒng)平臺下,基于ZigBee無線網(wǎng)絡(luò)的航標(biāo)遙測終端的開發(fā)。
1 ZigBee無線傳感器網(wǎng)絡(luò)
1.1 ZigBee概述
ZigBee是一個(gè)由多到65 000個(gè)無線數(shù)傳模塊組成的無線數(shù)傳網(wǎng)絡(luò)平臺,在整個(gè)網(wǎng)絡(luò)范圍內(nèi),每一個(gè)ZigBee網(wǎng)絡(luò)數(shù)傳模塊之間可以相互通信,每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)間的通信距離可以從標(biāo)準(zhǔn)的75 m到幾百米、幾千米,并且支持無限擴(kuò)展。ZigBee技術(shù)基于IEEE 802.15.4標(biāo)準(zhǔn)。ZigBee標(biāo)準(zhǔn)制定了IEEE 802.15.4的物理層、MAC層及數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、加密層及應(yīng)用描述層,而且ZigBee聯(lián)盟對其網(wǎng)絡(luò)層協(xié)議和API進(jìn)行了標(biāo)準(zhǔn)化。它的完全協(xié)議對于基本節(jié)點(diǎn)只有4 KB,而作為Hub或路由器的協(xié)調(diào)器也只有32 KB。每個(gè)協(xié)調(diào)器可連接多達(dá)255個(gè)節(jié)點(diǎn),而幾個(gè)協(xié)調(diào)器則可形成一個(gè)網(wǎng)絡(luò),對路由傳輸?shù)臄?shù)目則沒有限制。ZigBee聯(lián)盟還開發(fā)了安全層,以保證這種便攜設(shè)備不會(huì)意外泄漏其標(biāo)識,使這種網(wǎng)絡(luò)遠(yuǎn)距離傳輸?shù)臄?shù)據(jù)不會(huì)被其他節(jié)點(diǎn)獲得。可見,利用ZigBee模塊將航標(biāo)組網(wǎng),可以形成一個(gè)相互連接的航標(biāo)網(wǎng)絡(luò),實(shí)現(xiàn)航標(biāo)狀態(tài)信息的遙測。
1.2 ZigBee模塊
本項(xiàng)目使用的ZigBee模塊是無線龍LBee系列模塊,它是基于IEEE 802.15.4/ZigBee標(biāo)準(zhǔn)生產(chǎn)的,兼具短、中、長距離的無線ZigBee網(wǎng)絡(luò)低功耗模塊。模塊工作在2.4 GHz的ISM頻段。本項(xiàng)目選用長距離的無線ZigBee網(wǎng)絡(luò)低功耗模塊,型號為CC2430-F128,室外可視的最遠(yuǎn)通信距離可達(dá)2 000 m。對于廈金航線的航標(biāo)之間的距離最遠(yuǎn)是1 400 m左右,因此選用該模塊可滿足通信距離的要求。
LBee系列模塊采用的協(xié)議為ZigBee 2006,支持網(wǎng)狀、星狀、串狀等多種網(wǎng)絡(luò)拓?fù)?。LBee系列模塊集成了所有的射頻組件,并已實(shí)現(xiàn)軟件升級、參數(shù)設(shè)置。模塊采用標(biāo)準(zhǔn)的AT指令接口,支持AT指令集,其AT指令的通用幀格式如圖1所示。圖中,幀頭為FEH;控制命令中COMD0,COMD1分別表示控制命令中的低字節(jié)和高字節(jié);檢驗(yàn)位是從控制命令到數(shù)據(jù)的每個(gè)字節(jié)的異或后所得的值。標(biāo)志/狀態(tài)和有效數(shù)據(jù)長度對不同的幀是不一樣的,例如在發(fā)送數(shù)據(jù)的幀格式中,標(biāo)志/狀態(tài)為一個(gè)字節(jié),而在設(shè)置節(jié)點(diǎn)的通道、PANID、設(shè)備類型的幀格式中,標(biāo)志/狀態(tài)位為2個(gè)字節(jié),而有效數(shù)據(jù)長度變成了目的地址,且為2個(gè)字節(jié),詳細(xì)的幀格式請參見文獻(xiàn)。這樣基于ZigBee技術(shù)的航標(biāo)遙測終端的開發(fā),需要做的工作就是連接電源、串口及I/O口。ZigBee模塊可以通過AT指令集來實(shí)現(xiàn)通信距離、信道、網(wǎng)絡(luò)參數(shù)、低功耗參數(shù)(工作模式)的設(shè)定以及收發(fā)數(shù)據(jù)包,并可通過編程來實(shí)現(xiàn)I/O控制、A/D采集、PWM輸出、定位等功能。
[!--empirenews.page--]
2 終端的硬件組成
根據(jù)功能要求,設(shè)計(jì)的航標(biāo)遙測終端組成框圖如圖2所示,主要由處理器模塊、ZigBee/CDMA通信模塊、GPS定位模塊、航標(biāo)燈數(shù)據(jù)采集模塊及供電系統(tǒng)組成。
處理器模塊是以S3C2410 32 b RISC ARM9處理器為中心,主要由時(shí)鐘/復(fù)位單元、存儲(chǔ)系統(tǒng)、調(diào)試接口等組成。它是整個(gè)終端的核心,負(fù)責(zé)整個(gè)終端系統(tǒng)的管理、控制運(yùn)行、數(shù)據(jù)采集以及通信協(xié)議的解析和數(shù)據(jù)處理。S3C2410微處理器具有3個(gè)串口,即UART0,UART1,UART2,通過合理分配串口,并設(shè)計(jì)控制電路,對不足的串口資源進(jìn)行復(fù)用,使其滿足應(yīng)用需求。ZigBee/CDMA通信模塊的作用是負(fù)責(zé)終端和控制中心之間的遠(yuǎn)程雙向無線數(shù)據(jù)傳輸。GPS定位模塊用于實(shí)現(xiàn)終端的定位,使終端可以實(shí)時(shí)監(jiān)視浮標(biāo)是否產(chǎn)生漂移。由于目前的航標(biāo)燈均自帶有數(shù)據(jù)采集模塊,并通過RS 485輸出數(shù)據(jù)。因此,終端通過發(fā)送采集指令給航標(biāo)燈,航標(biāo)燈數(shù)據(jù)就會(huì)自動(dòng)傳輸給終端,即只需要利用一個(gè)RS 485到RS 232轉(zhuǎn)換器就可實(shí)現(xiàn)對航標(biāo)燈數(shù)據(jù)的采集。處理器與外圍通信模塊的通訊是通過串口連接,處理器可以通過AT指令對通信模塊進(jìn)行操作和控制,從而實(shí)現(xiàn)ZigBee/CDMA網(wǎng)絡(luò)的無線接入,并與控制中心建立通信鏈路,以提供遠(yuǎn)程數(shù)據(jù)雙向傳輸?shù)耐ǖ?。通過以太網(wǎng)控制器芯片DM9000擴(kuò)展一個(gè)網(wǎng)口,以滿足運(yùn)用,同時(shí)方便調(diào)試開發(fā)的功能。由于輸入是12 V,而不同的模塊所需的電壓不一樣,所以要進(jìn)行電壓的轉(zhuǎn)換,即供電系統(tǒng)部分。由于采用了ARM9嵌入式系統(tǒng)和模塊化設(shè)計(jì),使系統(tǒng)硬件的外圍電路相對簡單,因此具體電路本文將不介紹。
3 終端軟件設(shè)計(jì)
3.1 多線程設(shè)計(jì)
終端軟件是在Linux 2.4.18操作系統(tǒng)內(nèi)核上采用多線程開發(fā)的。與進(jìn)程相比,線程很小,創(chuàng)建一個(gè)線程可以使用相對較少的CPU時(shí)間,提高了CPU并行處理的能力。因此,多線程編程與多進(jìn)程編程相比,在性能和通信等方面都有顯著的優(yōu)勢,所以終端軟件的開發(fā)采用單個(gè)進(jìn)程多線程的編程方式實(shí)現(xiàn)。
在整個(gè)終端軟件系統(tǒng)中,創(chuàng)建了五個(gè)線程:主線程、通信線程、遙測遙控線程、協(xié)議處理線程及定時(shí)處理線程。主線程是進(jìn)程對應(yīng)的線程,是整個(gè)軟件的控制線程,它控制其他線程的工作,具體包括創(chuàng)建管道、打開驅(qū)動(dòng)、建立線程及安裝觸發(fā)線程的信號等功能;通信線程負(fù)責(zé)終端通信方式的選擇、通信模塊的驅(qū)動(dòng)及收發(fā)數(shù)據(jù)等工作;遙測遙控線程主要負(fù)責(zé)航標(biāo)數(shù)據(jù)采集、GPS數(shù)據(jù)采集、遙測數(shù)據(jù)的上傳及遙控命令的執(zhí)行;協(xié)議處理線程根據(jù)通信協(xié)議對數(shù)據(jù)進(jìn)行變換、格式轉(zhuǎn)換、打包和解包;定時(shí)處理線程主要完成周期性的控制,包括定時(shí)數(shù)據(jù)上傳、定時(shí)故障和異常判斷與報(bào)警、定時(shí)休眠、重新啟動(dòng)等。
由于整個(gè)終端需要處理的任務(wù)較多,下面僅介紹幾個(gè)關(guān)鍵功能模塊的設(shè)計(jì)。[!--empirenews.page--]
3.2 通信功能模塊設(shè)計(jì)
終端的通信具有ZigBee,CDMA兩種通信方式,由通信處理線程實(shí)現(xiàn)。具體完成ZigBee,CDMA模塊的初始化、數(shù)據(jù)發(fā)送與接收、智能切換通信方式以及模塊工作狀態(tài)的監(jiān)測等功能。
通信線程的處理機(jī)制是利用信號的異步通知機(jī)制,通過安裝信號處理函數(shù),當(dāng)某一通信方式出現(xiàn)異常時(shí)就發(fā)送信號并攜帶相關(guān)的信息,從而觸發(fā)信號處理函數(shù)進(jìn)入中斷處理異常信息,并根據(jù)信息來選擇重建當(dāng)前通信或建立另一種通信方式或重啟系統(tǒng)。在此主要介紹雙模通信中的ZigBee通信方式。
當(dāng)選擇ZigBee通信方式時(shí),必須對ZigBee進(jìn)行初始化,其初始化流程圖如圖3所示。
部分初始化程序如下:
fd表示的是連接ZigBee/CDMA與ARM的串口的文件句柄;sendPort相當(dāng)于UNIX中的write()函數(shù),即將Send_buf中的數(shù)據(jù)寫入到串口。
因?yàn)樵诮K端中用的ZigBee通信模塊有其固定的幀格式,所以需要將采集到的數(shù)據(jù)進(jìn)行打包,然后才能傳輸,利用一個(gè)函數(shù)send_prepare(int mode,unsignedchar send_buf[512],int length)實(shí)現(xiàn)數(shù)據(jù)的打包。其中,mode表示的是ZigBee和CDMA中的一種模式;send_buf[]表示需要發(fā)送的有效數(shù)據(jù),此函數(shù)的主要功能是將有效數(shù)據(jù)加入到ZigBee和CDMA能識別的幀格式中。然后調(diào)用發(fā)送函數(shù)sendPort(fd_com,send _buf)將數(shù)據(jù)通過ZigBee或CDMA發(fā)送到控制中心。當(dāng)數(shù)據(jù)發(fā)送到控制中心,控制中心模塊會(huì)給終端一個(gè)應(yīng)答。通過對此幀的解析,可以看出發(fā)送是否成功。例如,在ZigBee通信方式中,狀態(tài)/標(biāo)志位為00時(shí)表示發(fā)送成功,否則表示發(fā)送失敗。
3.3 遙測遙控功能模塊設(shè)計(jì)
3.3.1 遙測功能模塊
遙測包括數(shù)據(jù)采集與數(shù)據(jù)傳輸兩部分。數(shù)據(jù)采集包括航標(biāo)燈數(shù)據(jù)和GPS數(shù)據(jù)的采集。航標(biāo)燈是一種請求-應(yīng)答式的設(shè)備,要采集航標(biāo)燈數(shù)據(jù)就必須通過處理器或是控制中心發(fā)送采集命令。在終端上采用定時(shí)的方式,當(dāng)設(shè)置時(shí)間到時(shí),終端就會(huì)自動(dòng)發(fā)送遙測命令給航標(biāo)燈,當(dāng)航標(biāo)燈收到數(shù)據(jù)并通過CRC檢驗(yàn)后,航標(biāo)燈將其實(shí)時(shí)的數(shù)據(jù)發(fā)送給處理器,然后通過通信模塊發(fā)送到控制中心。GPS數(shù)據(jù)是通過讀取GPS-OEM板自動(dòng)輸出的NMEA-0183格式數(shù)據(jù)獲得的,在程序中采用中斷方式接收,每1 s接收一次數(shù)據(jù)。GPS和航標(biāo)燈數(shù)據(jù)采集流程圖如圖4,圖5所示。
當(dāng)采用ZigBee通信方式時(shí),由于ZigBee模塊發(fā)送數(shù)據(jù)的最大長度為63個(gè)字節(jié),所以將終端發(fā)給服務(wù)器的有效數(shù)據(jù)分為兩幀發(fā)送,在兩幀之間加上一個(gè)標(biāo)志0x21,有助于服務(wù)器端解析終端數(shù)據(jù)。[!--empirenews.page--]
3.3.2 遙控功能模塊
此模塊主要負(fù)責(zé)對控制中心發(fā)來的命令進(jìn)行解析,并對其做出相應(yīng)的處理??刂浦行牡臄?shù)據(jù)通過通信模塊發(fā)送給終端之后,在協(xié)議處理線程中進(jìn)行控制命令的解析。當(dāng)數(shù)據(jù)校驗(yàn)正確后,終端根據(jù)命令進(jìn)行處理并返回一個(gè)遙控成功的信息。遙控命令主要包括輪巡時(shí)間間隔設(shè)置、跟蹤時(shí)間間隔設(shè)置、報(bào)警時(shí)間間隔設(shè)置、遙控航標(biāo)燈、終端重啟等,其具體流程圖如圖6所示。
4 調(diào)試結(jié)果與結(jié)論
根據(jù)上述軟硬件設(shè)計(jì)和調(diào)試結(jié)果表明,該終端能實(shí)現(xiàn)航標(biāo)燈數(shù)據(jù)和GPS數(shù)據(jù)的采集;能正確、穩(wěn)定地以ZigBee或者CDMA通信方式實(shí)現(xiàn)與服務(wù)器之間的數(shù)據(jù)傳輸,并且雙模通信模塊能自動(dòng)進(jìn)行切換;能通過遙控命令對終端進(jìn)行設(shè)置,對航標(biāo)燈進(jìn)行遙控;并且可以穩(wěn)定的運(yùn)行。由此可見,在S3C2410處理器和ARM-Linux操作系統(tǒng)平臺下,采用基于ZigBee無線網(wǎng)絡(luò)的航標(biāo)遙測終端開發(fā),可以方便地實(shí)現(xiàn)航標(biāo)遙測終端功能;采用雙模通信,可以克服其中一種斷線時(shí)數(shù)據(jù)丟失的缺陷。當(dāng)然,由于ZigBee模塊本身的通信距離有限,當(dāng)航標(biāo)間距較遠(yuǎn)時(shí),需要通過增加功率放大器來增大其通信距離,以滿足航標(biāo)間距較遠(yuǎn)的應(yīng)用場景。