閭 軍,唐慧強
(南京信息工程大學 信息與控制學院,江蘇 南京 210044)
自動氣象站數(shù)據(jù)采集器一般基于單片機或PC/104總線控制器設計,具有與PC兼容性好、功耗低、體積緊湊等特點,然而如何設計出功能強大,網(wǎng)絡傳輸功能強的自動氣象站數(shù)據(jù)采集器,滿足現(xiàn)代氣象檢測的要求,是一個值得研究的課題[1]。
文中基于ARM微處理器和Linux操作系統(tǒng)平臺,借助前端無線傳感器網(wǎng)絡的數(shù)據(jù)輸入,利用嵌入式Qt的開發(fā)優(yōu)勢并設計數(shù)據(jù)通信格式,完成無線氣象數(shù)據(jù)通信系統(tǒng)的設計,實現(xiàn)了數(shù)據(jù)的可靠傳輸。為天氣預報、科學研究、氣象災害預警等提供實時的氣象觀測數(shù)據(jù)。
如圖1所示,無線氣象數(shù)據(jù)通信系統(tǒng)主要由無線傳感器網(wǎng)絡節(jié)點、協(xié)調器、數(shù)據(jù)通信器(數(shù)據(jù)通信器以S3C2440AL為核心)、遠程服務器等組成,完成對數(shù)據(jù)的采集、處理、傳輸和存儲等功能。數(shù)據(jù)的采集基于CC2530的無線傳感器網(wǎng)絡,傳感器節(jié)點將采集到的氣象數(shù)據(jù)定時發(fā)送給協(xié)調器,再由協(xié)調器將數(shù)據(jù)通過RS232接口傳給數(shù)據(jù)通信器,數(shù)據(jù)通信器按氣象數(shù)據(jù)處理規(guī)范對接收到的數(shù)據(jù)進行處理后,一方面顯示在液晶顯示屏上,另一方面經(jīng)以太網(wǎng)發(fā)送到遠程服務器。此外,數(shù)據(jù)通信器保存接收的數(shù)據(jù)。
CC2530是TI公司以C51為內核的ZigBee芯片,它支持IEEE802.15.4標準以及ZigBee、ZigBee PRO和ZigBee RF4CE標準,提供101 dB的鏈路質量,具有高接收靈敏度和強抗干擾性,同時具有低功耗、低成本、時延短、高安全等特點[2]。此外,系統(tǒng)采用Samsung S3C2440AL來實現(xiàn)高分辨率彩色顯示、觸摸控制、高速數(shù)據(jù)處理及管理、網(wǎng)絡接口擴展等需要。
CC2530與S3C2440AL之間采用串口通信,其連接如圖2所示。CC2530的串行數(shù)據(jù)發(fā)送端P0_3與S3C2440AL的串行數(shù)據(jù)接收端RXD1相連,CC2530的串行數(shù)據(jù)接收端P0_2與S3C2440AL的串行數(shù)據(jù)發(fā)送端TXD1相連。此處將CC2530的設備類型設置為協(xié)調器[3],實現(xiàn)無線接收各個傳感器節(jié)點發(fā)送的氣象數(shù)據(jù)。
由于系統(tǒng)需要移植嵌入式Linux操作系統(tǒng)、安裝微型數(shù)據(jù)庫、運行可視化應用程序、存儲氣象數(shù)據(jù)以及將數(shù)據(jù)經(jīng)過以太網(wǎng)發(fā)送給遠程服務器,需要擴展液晶顯示器、外部存儲器、以太網(wǎng)控制器等。液晶顯示屏采用320×240分辨率的3.5英寸觸摸真彩液晶屏,SDRAM采用 H57V2562GTR,NAND FLASH采用K9F1216U0A,以太網(wǎng)控制器采用單芯片快速以太網(wǎng)MAC控制器DM9000。S3C2440AL部分外圍電路[4]如圖3所示。
圖1 數(shù)據(jù)通信系統(tǒng)結構圖Fig.1 Structure of data communication system
圖2 CC2530與S3C2440AL連接電路圖Fig.2 CC2530 and S3C2440AL connection circuit
圖3 S3C2440AL外圍電路圖Fig.3 S3C2440AL peripheral circuit
下位機軟件的核心是串口通信以及Socket通信。系統(tǒng)采用Qt4.5.0、Qt Creator 1.3.0作為數(shù)據(jù)通信器軟件的開發(fā)工具,主要包括數(shù)據(jù)接收顯示、存儲以及發(fā)送給遠程服務器等功能。
系統(tǒng)為了保證氣象數(shù)據(jù)有效、高效、可靠地通信,該系統(tǒng)建立了如表1所示的數(shù)據(jù)幀格式。
表1 數(shù)據(jù)幀格式Tab.1 Data frame format
協(xié)調器每次給數(shù)據(jù)通信器發(fā)送10字節(jié)數(shù)據(jù),其中以“#”為起始符,緊跟4字節(jié)浮點數(shù),第6字節(jié)表示氣象要素類型,第8和第9字節(jié)分別為CRC檢測的高位和低位,最后以“*”結束。CRC域是兩個字節(jié),它由協(xié)調器節(jié)點計算后加入到數(shù)據(jù)中,數(shù)據(jù)通信器對校驗信息進行檢查,若無錯則接收該數(shù)據(jù),否則放棄該數(shù)據(jù)并請求重發(fā)。
協(xié)調器通過串口與數(shù)據(jù)通信器進行數(shù)據(jù)交互,所以在程序設計時需要對串口的波特率、數(shù)據(jù)位、奇偶校驗、停止位以及數(shù)據(jù)流控制進行設置,實現(xiàn)數(shù)據(jù)傳輸。通過任務接口定時讀寫串口數(shù)據(jù),查看協(xié)調器是否有數(shù)據(jù),并將數(shù)據(jù)存入隊列供界面顯示、存儲以及發(fā)送。串口設置界面如圖4所示。
圖4 串口設置界面Fig.4 Serial setting interface
下面是串口設置的部分代碼:
其中,getPortSettings()函數(shù)返回一個PortSettings型變量,包含了對波特率、數(shù)據(jù)位、停止位等的設置,getPortName()函數(shù)返回字符串型變量,用于串口號的設置。
網(wǎng)絡傳輸是本設計的主要任務之一,將數(shù)據(jù)通信器接收的數(shù)據(jù)經(jīng)過Socket發(fā)送給遠程服務器。而Qt提供了QTcp Socket類,用于編寫TCP客戶端的應用程序。QTcpSocket類提供了一個有緩沖的TCP連接,可以用來實現(xiàn)其他標準協(xié)議也可以用來實現(xiàn)自定義的協(xié)議。QTcpSocket采用異步工作方式,它依靠Qt事件循環(huán)發(fā)現(xiàn)外來數(shù)據(jù)和向外發(fā)送數(shù)據(jù),并以信號的方式報告狀態(tài)的改變或產(chǎn)生的錯誤,一旦網(wǎng)絡的某一種狀態(tài)發(fā)生改變 (如網(wǎng)絡斷開),就會發(fā)出信號 (如connectionClosed()),再通過信號與槽函數(shù)相關聯(lián)進行處理[5-6]。服務器設置界面如圖5所示。
下面是網(wǎng)絡傳輸相應槽函數(shù):
圖5 服務器設置界面Fig.5 Server setting interface
首次使用時,在系統(tǒng)設置界面對服務器地址、服務器端口、經(jīng)度、緯度、臺站號進行設置,在串口設置界面對串口的波特率、數(shù)據(jù)位、停止位等信息進行設置。設置完成后連接服務器并打開串口,在數(shù)據(jù)顯示界面將會實時動態(tài)顯示各傳感器節(jié)點發(fā)來的氣象數(shù)據(jù)。與服務器的連接狀態(tài)等信息在程序狀態(tài)欄會有相關提示,一旦與服務器斷開,系統(tǒng)將會自動連接服務器并將這段時間內收到的數(shù)據(jù)保存起來等待連接成功后重新發(fā)送。
系統(tǒng)已經(jīng)完成制作調試,效果良好,可以成功地實現(xiàn)數(shù)據(jù)通信、處理、存儲、網(wǎng)絡連接以及網(wǎng)絡異常處理等功能。本系統(tǒng)低成本、無布線、可擴展性強等特點,在自動氣象站應用中具有廣泛的潛在市場和應用空間。
[1]胡玉峰.自動氣象站原理與測量方法[M].北京:氣象出版社,2007.
[2]Texas Instruments,CC2530 product web site[EB/OL].(2010)[2011-10-10].http://www.ti.com/lit/ds/symlink/cc2530.pdf.
[3]李文仲,段朝玉.ZigBee無線網(wǎng)絡技術入門與實戰(zhàn) [M].北京:北京航空航天大學出版社,2007.
[4]三恒星科技.ARM9原理與應用設計[M].北京:電子工業(yè)出版社,2008.
[5]Thelin J.Foundations of Qt Development.Expert’s Voice in Open Source[M].Apress,2007.
[6]成潔,盧紫毅.Linux窗口程序設計[M].北京:清華大學出版社,2008.