基于ARM的無線氣象數(shù)據(jù)通信系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:為了實(shí)現(xiàn)自動(dòng)氣象站無線化、網(wǎng)絡(luò)化的需要,開發(fā)了一種基于ARM、嵌入式Linux和CC2530構(gòu)建的無線氣象數(shù)據(jù)通信系統(tǒng)。對(duì)系統(tǒng)軟硬件設(shè)計(jì)和通信流程進(jìn)行了闡述。采用跨平臺(tái)能力強(qiáng)的Qt作為開發(fā)工具,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)帶有圖形用戶界面的嵌入式系統(tǒng),提出新的數(shù)據(jù)幀格式,實(shí)現(xiàn)了氣象數(shù)據(jù)準(zhǔn)確、高效傳輸。結(jié)果表明,系統(tǒng)具有低成本、高可靠性以及較好的實(shí)用性。
關(guān)鍵詞:ARM;CC2530;嵌入式系統(tǒng);數(shù)據(jù)通信;無線傳感器網(wǎng)絡(luò)
自動(dòng)氣象站數(shù)據(jù)采集器一般基于單片機(jī)或PC/104總線控制器設(shè)計(jì),具有與PC兼容性好、功耗低、體積緊湊等特點(diǎn),然而如何設(shè)計(jì)出功能強(qiáng)大,網(wǎng)絡(luò)傳輸功能強(qiáng)的自動(dòng)氣象站數(shù)據(jù)采集器,滿足現(xiàn)代氣象檢測(cè)的要求,是一個(gè)值得研究的課題。
文中基于ARM微處理器和Linux操作系統(tǒng)平臺(tái),借助前端無線傳感器網(wǎng)絡(luò)的數(shù)據(jù)輸入,利用嵌入式Qt的開發(fā)優(yōu)勢(shì)并設(shè)計(jì)數(shù)據(jù)通信格式,完成無線氣象數(shù)據(jù)通信系統(tǒng)的設(shè)計(jì),實(shí)現(xiàn)了數(shù)據(jù)的可靠傳輸。為天氣預(yù)報(bào)、科學(xué)研究、氣象災(zāi)害預(yù)警等提供實(shí)時(shí)的氣象觀測(cè)數(shù)據(jù)。
1 無線氣象數(shù)據(jù)通信系統(tǒng)的基本組成
如圖1所示,無線氣象數(shù)據(jù)通信系統(tǒng)主要由無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)、協(xié)調(diào)器、數(shù)據(jù)通信器(數(shù)據(jù)通信器以S3C2440AL為核心)、遠(yuǎn)程服務(wù)器等組成,完成對(duì)數(shù)據(jù)的采集、處理、傳輸和存儲(chǔ)等功能。數(shù)據(jù)的采集基于CC2530的無線傳感器網(wǎng)絡(luò),傳感器節(jié)點(diǎn)將采集到的氣象數(shù)據(jù)定時(shí)發(fā)送給協(xié)調(diào)器,再由協(xié)調(diào)器將數(shù)據(jù)通過RS232接口傳給數(shù)據(jù)通信器,數(shù)據(jù)通信器按氣象數(shù)據(jù)處理規(guī)范對(duì)接收到的數(shù)據(jù)進(jìn)行處理后,一方面顯示在液晶顯示屏上,另一方面經(jīng)以太網(wǎng)發(fā)送到遠(yuǎn)程服務(wù)器。此外,數(shù)據(jù)通信器保存接收的數(shù)據(jù)。
2 硬件電路設(shè)計(jì)
2.1 CC2530與S3C2440AL的連接
CC2530是TI公司以C51為內(nèi)核的ZigBee芯片,它支持IEEE802.15.4標(biāo)準(zhǔn)以及ZigBee、ZigBee PRO和ZigBee RF4CE標(biāo)準(zhǔn),提供101 dB的鏈路質(zhì)量,具有高接收靈敏度和強(qiáng)抗干擾性,同時(shí)具有低功耗、低成本、時(shí)延短、高安全等特點(diǎn)。此外,系統(tǒng)采用Samsung S3C2440AL來實(shí)現(xiàn)高分辨率彩色顯示、觸摸控制、高速數(shù)據(jù)處理及管理、網(wǎng)絡(luò)接口擴(kuò)展等需要。
[!--empirenews.page--]
CC2530與S3C2440AL之間采用串口通信,其連接如圖2所示。CC2530的串行數(shù)據(jù)發(fā)送端P0_3與S3C2440AL的串行數(shù)據(jù)接收端RXD1相連,CC25 30的串行數(shù)據(jù)接收端P0_2與S3C2440AL的串行數(shù)據(jù)發(fā)送端TXD1相連。此處將CC2530的設(shè)備類型設(shè)置為協(xié)調(diào)器,實(shí)現(xiàn)無線接收各個(gè)傳感器節(jié)點(diǎn)發(fā)送的氣象數(shù)據(jù)。
2.2 S3C2440AL外圍電路設(shè)計(jì)
由于系統(tǒng)需要移植嵌入式Linux操作系統(tǒng)、安裝微型數(shù)據(jù)庫(kù)、運(yùn)行可視化應(yīng)用程序、存儲(chǔ)氣象數(shù)據(jù)以及將數(shù)據(jù)經(jīng)過以太網(wǎng)發(fā)送給遠(yuǎn)程服務(wù)器,需要擴(kuò)展液晶顯示器、外部存儲(chǔ)器、以太網(wǎng)控制器等。液晶顯示屏采用320x240分辨率的3.5英寸觸摸真彩液晶屏,SDRAM采用H57V25 62GTR,NANDFLASH采用K9F1216UOA,以太網(wǎng)控制器采用單芯片快速以太網(wǎng)MAC控制器DM9000。S3C2440AL部分外圍電路如圖3所示。
3 軟件設(shè)計(jì)
下位機(jī)軟件的核心是串口通信以及Socket通信。系統(tǒng)采用Qt4.5.0、Qt Creator 1.3.0作為數(shù)據(jù)通信器軟件的開發(fā)工具,主要包括數(shù)據(jù)接收顯示、存儲(chǔ)以及發(fā)送給遠(yuǎn)程服務(wù)器等功能。
系統(tǒng)為了保證氣象數(shù)據(jù)有效、高效、可靠地通信,該系統(tǒng)建立了如表1所示的數(shù)據(jù)幀格式。
協(xié)調(diào)器每次給數(shù)據(jù)通信器發(fā)送10字節(jié)數(shù)據(jù),其中以“#”為起始符,緊跟4字節(jié)浮點(diǎn)數(shù),第6字節(jié)表示氣象要素類型,第8和第9字節(jié)分別為CRC檢測(cè)的高位和低位,最后以“*”結(jié)束。CRC域是兩個(gè)字節(jié),它由協(xié)調(diào)器節(jié)點(diǎn)計(jì)算后加入到數(shù)據(jù)中,數(shù)據(jù)通信器對(duì)校驗(yàn)信息進(jìn)行檢查,若無錯(cuò)則接收該數(shù)據(jù),否則放棄該數(shù)據(jù)并請(qǐng)求重發(fā)。[!--empirenews.page--]
3.1 串口通信程序設(shè)計(jì)
協(xié)調(diào)器通過串口與數(shù)據(jù)通信器進(jìn)行數(shù)據(jù)交互,所以在程序設(shè)計(jì)時(shí)需要對(duì)串口的波特率、數(shù)據(jù)位、奇偶校驗(yàn)、停止位以及數(shù)據(jù)流控制進(jìn)行設(shè)置,實(shí)現(xiàn)數(shù)據(jù)傳輸。通過任務(wù)接口定時(shí)讀寫串口數(shù)據(jù),查看協(xié)調(diào)器是否有數(shù)據(jù),并將數(shù)據(jù)存入隊(duì)列供界面顯示、存儲(chǔ)以及發(fā)送。串口設(shè)置界面如圖4所示。
下面是串口設(shè)置的部分代碼:
其中,getPortSettings()函數(shù)返回一個(gè)PortSettings型變量,包含了對(duì)波特率、數(shù)據(jù)位、停止位等的設(shè)置,getPortName()函數(shù)返回字符串型變量,用于串口號(hào)的設(shè)置。[!--empirenews.page--]
3.2 網(wǎng)絡(luò)通信程序設(shè)計(jì)
網(wǎng)絡(luò)傳輸是本設(shè)計(jì)的主要任務(wù)之一,將數(shù)據(jù)通信器接收的數(shù)據(jù)經(jīng)過Socket發(fā)送給遠(yuǎn)程服務(wù)器。而Qt提供了QTcpSocket類,用于編寫TCP客戶端的應(yīng)用程序。QTcpSocket類提供了一個(gè)有緩沖的TCP連接,可以用來實(shí)現(xiàn)其他標(biāo)準(zhǔn)協(xié)議也可以用來實(shí)現(xiàn)自定義的協(xié)議。OTcpSocket采用異步工作方式,它依靠Qt事件循環(huán)發(fā)現(xiàn)外來數(shù)據(jù)和向外發(fā)送數(shù)據(jù),并以信號(hào)的方式報(bào)告狀態(tài)的改變或產(chǎn)生的錯(cuò)誤,一旦網(wǎng)絡(luò)的某一種狀態(tài)發(fā)生改變(如網(wǎng)絡(luò)斷開),就會(huì)發(fā)出信號(hào)(如connectionClosed()),再通過信號(hào)與槽函數(shù)相關(guān)聯(lián)進(jìn)行處理。服務(wù)器設(shè)置界面如圖5所示。
下面是網(wǎng)絡(luò)傳輸相應(yīng)槽函數(shù):
4 結(jié)論
首次使用時(shí),在系統(tǒng)設(shè)置界面對(duì)服務(wù)器地址、服務(wù)器端口、經(jīng)度、緯度、臺(tái)站號(hào)進(jìn)行設(shè)置,在串口設(shè)置界面對(duì)串口的波特率、數(shù)據(jù)位、停止位等信息進(jìn)行設(shè)置。設(shè)置完成后連接服務(wù)器并打開串口,在數(shù)據(jù)顯示界面將會(huì)實(shí)時(shí)動(dòng)態(tài)顯示各傳感器節(jié)點(diǎn)發(fā)來的氣象數(shù)據(jù)。與服務(wù)器的連接狀態(tài)等信息在程序狀態(tài)欄會(huì)有相關(guān)提示,一旦與服務(wù)器斷開,系統(tǒng)將會(huì)自動(dòng)連接服務(wù)器并將這段時(shí)間內(nèi)收到的數(shù)據(jù)保存起來等待連接成功后重新發(fā)送。
系統(tǒng)已經(jīng)完成制作調(diào)試,效果良好,可以成功地實(shí)現(xiàn)數(shù)據(jù)通信、處理、存儲(chǔ)、網(wǎng)絡(luò)連接以及網(wǎng)絡(luò)異常處理等功能。本系統(tǒng)低成本、無布線、可擴(kuò)展性強(qiáng)等特點(diǎn),在自動(dòng)氣象站應(yīng)用中具有廣泛的潛在市場(chǎng)和應(yīng)用空間。