,2
(華東理工大學(xué)自動(dòng)化系1,上海 200237;化工過(guò)程先進(jìn)控制與優(yōu)化技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室2,上海 200237)
隨著物聯(lián)網(wǎng)[1]、泛在網(wǎng)的蓬勃發(fā)展,如何實(shí)現(xiàn)異構(gòu)網(wǎng)絡(luò)之間的有效融合,成為物聯(lián)網(wǎng)、泛在網(wǎng)發(fā)展的關(guān)鍵性問(wèn)題。異構(gòu)網(wǎng)絡(luò)融合就是將各種不同通信模式連接在一起、實(shí)現(xiàn)不同模式通信設(shè)備之間的互聯(lián)互通[2]。異構(gòu)網(wǎng)絡(luò)下空氣質(zhì)量監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),從屬于物理網(wǎng)及泛在網(wǎng)實(shí)踐應(yīng)用研究的一部分,具有一定的實(shí)踐意義。
本文在空氣質(zhì)量成為社會(huì)熱點(diǎn)的背景下,在多種無(wú)線接入技術(shù)[3]蓬勃發(fā)展的基礎(chǔ)上,提出了基于異構(gòu)網(wǎng)絡(luò)融合構(gòu)建空氣質(zhì)量監(jiān)測(cè)系統(tǒng)。分別從硬件和軟件方面進(jìn)行研究,主要對(duì)空氣中CO2濃度、CO濃度、溫度及濕度進(jìn)行分析,闡述了空氣質(zhì)量檢測(cè)終端、嵌入式無(wú)線網(wǎng)關(guān)和上位機(jī)監(jiān)測(cè)軟件具體實(shí)現(xiàn)過(guò)程。
由于空氣質(zhì)量數(shù)據(jù)的采集和地理環(huán)境具有不確定性,而且對(duì)空氣質(zhì)量的檢測(cè)也具有長(zhǎng)期性,因此,現(xiàn)場(chǎng)數(shù)據(jù)采集、布線、能耗及可靠性需要首先得到滿足。此外,從經(jīng)濟(jì)上考慮,我們盡量選擇成本低且能較好完成檢測(cè)任務(wù)的技術(shù)。鑒于此,選用了ZigBee技術(shù)。ZigBee技術(shù)[4]具有以下特點(diǎn)。
① 無(wú)線傳輸:可以省去布線的麻煩,節(jié)約成本。
② 網(wǎng)絡(luò)時(shí)延短:一般從睡眠切換為工作狀態(tài)只需15 ms,節(jié)點(diǎn)連接入網(wǎng)絡(luò)只需30 ms。相比較,WiFi需要3 s,而藍(lán)牙需要3~10 s。
③ 模塊功耗低:配備10 Ah電池的ZigBee水表,可工作8年。
④ 可靠性好:采用碰撞避免機(jī)制,避免了發(fā)送數(shù)據(jù)時(shí)的競(jìng)爭(zhēng)和沖突。
⑤ 成本低:ZigBee模塊工作于2.4 GHz全球免費(fèi)頻段,只需要支付前期模塊費(fèi)用,不用支付以后使用的費(fèi)用。
顯然,ZigBee技術(shù)非常符合我們所提出的現(xiàn)場(chǎng)數(shù)據(jù)采集的要求,采用ZigBee技術(shù)構(gòu)建現(xiàn)場(chǎng)無(wú)線傳感網(wǎng)絡(luò)進(jìn)行現(xiàn)場(chǎng)數(shù)據(jù)的采集及發(fā)送,就可以解決布線、供能、實(shí)時(shí)性、可靠性及成本問(wèn)題,以應(yīng)對(duì)不同的地理環(huán)境。
考慮到ZigBee網(wǎng)絡(luò)中的節(jié)點(diǎn)處理能力有限,需要利用外部網(wǎng)絡(luò)中的資源對(duì)監(jiān)測(cè)數(shù)據(jù)進(jìn)行更復(fù)雜的處理;同時(shí),其他網(wǎng)絡(luò)用戶也需要對(duì)ZigBee網(wǎng)絡(luò)進(jìn)行訪問(wèn),以得到監(jiān)測(cè)區(qū)域的空氣質(zhì)量信息??紤]到WiFi技術(shù)普遍受到移動(dòng)終端的支持,高速率、頻帶免收費(fèi)、投資低,且易于與其他網(wǎng)絡(luò)融合構(gòu)建更大的異構(gòu)網(wǎng)絡(luò),符合網(wǎng)絡(luò)向泛在網(wǎng)發(fā)展的趨勢(shì)。因此,采用WiFi技術(shù)構(gòu)建檢測(cè)系統(tǒng)的外部網(wǎng)絡(luò),完成對(duì)現(xiàn)場(chǎng)采集數(shù)據(jù)的處理與顯示。
空氣質(zhì)量監(jiān)測(cè)系統(tǒng)由若干ZigBee檢測(cè)終端、嵌入式無(wú)線網(wǎng)關(guān)及遠(yuǎn)程監(jiān)控終端組成。ZigBee檢測(cè)終端完成現(xiàn)場(chǎng)數(shù)據(jù)的采集及向嵌入式無(wú)線網(wǎng)關(guān)發(fā)送;嵌入式無(wú)線網(wǎng)關(guān)構(gòu)成ZigBee網(wǎng)絡(luò)與WiFi網(wǎng)絡(luò)之間的橋梁[5];遠(yuǎn)程監(jiān)控終端從無(wú)線網(wǎng)關(guān)接收數(shù)據(jù),在Qt界面上以柱狀圖的形式直觀顯示現(xiàn)場(chǎng)空氣質(zhì)量。系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D如圖1所示。
圖1 系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D
數(shù)據(jù)采集ZigBee終端由CC2530EM核心板模塊、傳感器模塊、LED指示電路、電源電路等組成,完成現(xiàn)場(chǎng)空氣質(zhì)量數(shù)據(jù)的采集及發(fā)送。
CC2530EM核心板模塊, 采用德州儀器(TI)的ZigBee射頻芯片CC2530-F256,片上集成高性能、低功耗8051內(nèi)核、12 bit ADC、2個(gè)USART以及DMA功能等,支持ZigBee 2007/Pro協(xié)議棧。
CO2傳感器選用的是韓國(guó)SOHA公司進(jìn)口的雙光束紅外二氧化碳傳感器模塊,SH-300-N量程為0~3 000×10-6,與CC2530EM核心板模塊的P0.0口連接。
CO傳感器選用的是由日本NEMOTO公司生產(chǎn)的型號(hào)為NE-CO-BL的一氧化碳電化學(xué)傳感器,與CC2530EM核心板模塊的P0.1口連接。
空氣質(zhì)量傳感器是一款對(duì)空氣中的多種有毒或可燃?xì)怏w都具有一定的靈敏性的半導(dǎo)體氣體傳感器,其型號(hào)為QS-01,與CC2530EM核心板模塊的P0.2口連接。
濕度傳感器選用的是美國(guó)Honeywell公司生產(chǎn)的集成濕度傳感器,其型號(hào)為H- 4000-003,量程為0~100%RH,與CC2530EM核心板模塊的P0.3口連接。
溫度傳感器選用的是美國(guó)Dallas半導(dǎo)體公司生產(chǎn)的,型號(hào)為DS18B20的數(shù)字式溫度傳感器。傳感器測(cè)量范圍為-55~+125 ℃,精度為±0.5 K,與CC2530EM核心板模塊的P0.5口連接。CC2530EM核心板模塊電路如圖2所示。
圖2 CC2530EM核心板模塊電路圖
嵌入式無(wú)線網(wǎng)關(guān)硬件設(shè)計(jì)圖如圖3所示。
圖3 嵌入式無(wú)線網(wǎng)關(guān)硬件設(shè)計(jì)圖
嵌入式無(wú)線網(wǎng)關(guān)可以看成是銜接ZigBee網(wǎng)絡(luò)與WiFi網(wǎng)絡(luò)的橋梁。它以S3C6410嵌入式微處理器為中心,由CC2530 ZigBee收發(fā)模塊、雷凌WiFi模塊及觸摸顯示屏等共同組成。其中,S3C6410嵌入式微處理器完成數(shù)據(jù)的轉(zhuǎn)發(fā)、協(xié)議轉(zhuǎn)換、任務(wù)調(diào)度、設(shè)備管理及界面顯示等任務(wù)。 CC2530 ZigBee收發(fā)模塊主要完成ZigBee終端的數(shù)據(jù)接收。雷凌WiFi模塊具備軟接入點(diǎn)AP(access point)的功能,可以將嵌入式無(wú)線網(wǎng)關(guān)切換至AP模式[6],通過(guò)WiFi網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到遠(yuǎn)處監(jiān)控終端[7]。觸摸顯示屏可以直觀顯示空氣質(zhì)量狀況,從而可以在空氣質(zhì)量狀態(tài)不好的情況下迅速采取必要的措施。
由于本文設(shè)計(jì)的系統(tǒng)要使用WiFi模塊,但是Linux內(nèi)核本身并不提供該驅(qū)動(dòng),那么要先進(jìn)行WiFi驅(qū)動(dòng)移植,并下載最新的WiFi驅(qū)動(dòng),在虛擬機(jī)下編譯生成能夠在OK6410開(kāi)發(fā)板下安裝的模塊文件。
使用飛凌提供的Linux-3.0.1內(nèi)核源碼,解壓放在指定的目錄下面,并且修改其Makefile文件,重新指定編譯器及目標(biāo)平臺(tái);然后在該目錄下執(zhí)行make menuconfig命令,指定以模塊的形式加載驅(qū)動(dòng)在Device Drivers-->Network Device Support-->Wireless LAN下,將Ralink Driver Support選為M。重新編譯內(nèi)核,生成zImage,通過(guò)bootloader燒寫到開(kāi)發(fā)板的Nandflash中[8]。
3.2.1 Qt介紹及應(yīng)用
Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它為應(yīng)用程序開(kāi)發(fā)者提供建立藝術(shù)級(jí)圖形用戶界面所需的所用功能,并且很容易擴(kuò)展允許組件編程。
為了給用戶呈現(xiàn)良好的操作界面,需要移植Qt到嵌入式無(wú)線網(wǎng)關(guān)和遠(yuǎn)程監(jiān)控終端。嵌入式無(wú)線網(wǎng)關(guān)下Qt程序?qū)崿F(xiàn)從協(xié)調(diào)器中讀取數(shù)據(jù)、在Qt界面中顯示并且轉(zhuǎn)發(fā)到遠(yuǎn)程監(jiān)控終端。遠(yuǎn)程終端Qt程序?qū)崿F(xiàn)從無(wú)線網(wǎng)關(guān)接收數(shù)據(jù)并且在Qt界面顯示[9]。
在Qt中,提供了QUdpSocket類來(lái)進(jìn)行用戶數(shù)據(jù)報(bào)協(xié)議[10](user datagram protocol,UDP)數(shù)據(jù)報(bào)的發(fā)送和接收。網(wǎng)關(guān)向遠(yuǎn)程監(jiān)控終端發(fā)送數(shù)據(jù)報(bào)可以看做客戶端,而遠(yuǎn)程監(jiān)控終端可以看做服務(wù)端。Qt程序運(yùn)行后,客戶端從協(xié)調(diào)器獲得有效數(shù)據(jù),向廣播地址和指定的端口號(hào)廣播要發(fā)送的數(shù)據(jù),而服務(wù)器端監(jiān)聽(tīng)廣播地址和相應(yīng)的端口號(hào)。當(dāng)有數(shù)據(jù)到來(lái)時(shí),就接收數(shù)據(jù)并且通過(guò)檢驗(yàn)碼校驗(yàn)數(shù)據(jù)是否正確。下面分別從服務(wù)器端Qt程序和客戶端Qt分析WiFi網(wǎng)絡(luò)上的數(shù)據(jù)收發(fā)過(guò)程。
3.2.2 主要功能函數(shù)介紹
① connect( )函數(shù)
原型:bool QObject::connect(const QObject * sender,const char * signal,constQObject * receiver,const char * member)
功能:信號(hào)發(fā)送者sender對(duì)象中的信號(hào)signal與接收者receiver中的member槽函數(shù)聯(lián)系起來(lái)。當(dāng)指定信號(hào)signal時(shí),必須使用宏SIGNAL( );當(dāng)指定槽函數(shù)時(shí),必須使用宏SLOT( )。如果發(fā)送者和接收者屬于一個(gè)對(duì)象,那么在connect調(diào)用中接收者可以忽略。
② bind( )函數(shù)
原型:bool QUdpSocket::bind (const QHostAddress & address, quint16 port, BindMode mode)
功能:將套接字綁定到指定的IP地址和端口號(hào),當(dāng)UDP數(shù)據(jù)包到來(lái)時(shí)觸發(fā)readyRead信息。
③ writeDatagram( )函數(shù)
原型:qint64 QUdpSocket::writeDatagram (const QByteArray & datagram, const QHostAddress & host, quint16 port)
功能:向指定IP的端口號(hào)寫入數(shù)據(jù)。寫入成功,則返回寫入的數(shù)據(jù)長(zhǎng)度;失敗,則返回-1。
UDP主要用來(lái)支持需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。UDP協(xié)議與TCP(傳輸控制協(xié)議)協(xié)議一樣,位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層,都屬于傳輸層協(xié)議。UDP是一個(gè)面向數(shù)據(jù)報(bào)和無(wú)連接的簡(jiǎn)單傳輸層協(xié)議。它不像TCP那樣通過(guò)握手過(guò)程建立服務(wù)器與客戶端的連接才可以工作,避免占用大量的系統(tǒng)開(kāi)銷,使速度受到嚴(yán)重的影響。
Linux系統(tǒng)是通過(guò)套接字結(jié)構(gòu)來(lái)進(jìn)行網(wǎng)絡(luò)編程的,應(yīng)用程序通過(guò)對(duì)套接字的幾個(gè)函數(shù)調(diào)用,會(huì)返回一個(gè)用于通信的套接字描述符。Linux應(yīng)用程序在進(jìn)行任何形式的I/O操作時(shí),程序?qū)嶋H上是在讀寫一個(gè)文件描述符。因此,Linux下的套接字編程,可以看成是對(duì)普通文件描述符的操作,這些操作與被使用的硬件平臺(tái)無(wú)關(guān),這是Linux設(shè)備無(wú)關(guān)性的優(yōu)點(diǎn)。
客戶端程序分析如下。
① 使用第三方寫的qextserialport類,完成串口參數(shù)設(shè)置以及打開(kāi),主要使用下面4個(gè)文件。
qextserialbase.cpp和qextserialbase.h以及posix_qextserialport.cpp和posix_qextserial.h。
串口設(shè)置程序如下。
myCom = new Posix_QextSerialPort("/dev/ttySAC3",
QextSerialBase::Polling);
myCom ->open(QIODevice::ReadWrite);
//以讀寫方式打開(kāi)串口
myCom->setBaudRate(BAUD9600);
//波特率設(shè)置為9 600 bit/s
myCom->setDataBits(DATA_8);
//數(shù)據(jù)位設(shè)置為8位
myCom->setParity(PAR_NONE);
//奇偶校驗(yàn)設(shè)置為無(wú)校驗(yàn)
myCom->setStopBits(STOP_1);
//停止位設(shè)置為1位
myCom->setFlowControl(FLOW_OFF);
//數(shù)據(jù)流控制設(shè)置為無(wú)數(shù)據(jù)流
myCom->setTimeout(200);
② UDP Socket定義使用QUdpSocket類
udpSocket=new QUdpSocket(this);
③ 定時(shí)讀取串口使用connect 函數(shù),在程序中,定時(shí)器每次定時(shí)時(shí)間到就觸發(fā)timeout信號(hào),然后去執(zhí)行關(guān)聯(lián)的讀取串口的槽函數(shù)。
④ 客戶端使用writeDatagram函數(shù)向服務(wù)器端發(fā)送數(shù)據(jù)。
客戶端流程圖如圖4所示。
圖4 客戶端程序流程圖
服務(wù)器端流程圖如圖5所示。
圖5 服務(wù)器端流程圖
服務(wù)器端程序分析如下。
① 使用bind函數(shù)將套接字綁定到客戶端指定的IP地址和端口,當(dāng)UDP報(bào)文到達(dá)就會(huì)觸發(fā)readyRead信號(hào)。然后使用信號(hào)與槽函數(shù)connect,當(dāng)readyRead信號(hào)觸發(fā),便執(zhí)行讀取數(shù)據(jù)的槽函數(shù)。
② 按照數(shù)據(jù)格式,經(jīng)過(guò)處理,提取出CO濃度、CO2濃度、空氣質(zhì)量、溫度、濕度數(shù)據(jù),在Qt界面顯示。
本文設(shè)計(jì)的空氣質(zhì)量監(jiān)控系統(tǒng),采用ZigBee技術(shù)組成現(xiàn)場(chǎng)數(shù)據(jù)采集,WiFi技術(shù)完成數(shù)據(jù)向監(jiān)控終端發(fā)送。在硬件方面設(shè)計(jì)了嵌入式網(wǎng)關(guān),構(gòu)建了異構(gòu)網(wǎng)絡(luò)間的橋梁。在軟件方面,實(shí)現(xiàn)了ZigBee協(xié)議數(shù)據(jù)包與TCP/IP協(xié)議包數(shù)據(jù)轉(zhuǎn)換,并且完成數(shù)據(jù)處理與在Qt用戶界面顯示。系統(tǒng)完成了ZigBee網(wǎng)絡(luò)與WiFi網(wǎng)絡(luò)融合,實(shí)現(xiàn)了異構(gòu)網(wǎng)絡(luò)互連互通,在一定程度上為構(gòu)建泛在傳感網(wǎng)提供了參考。整個(gè)系統(tǒng)具有功耗低、移動(dòng)性強(qiáng)、人機(jī)界面美觀、復(fù)雜度低等優(yōu)點(diǎn),且空氣質(zhì)量與人體健康息息相關(guān),因此該系統(tǒng)應(yīng)用前景廣闊。
[1] 孫其博,劉杰,黎羴,等.物聯(lián)網(wǎng)概念、架構(gòu)與關(guān)鍵技術(shù)研究綜述[J].北京郵電大學(xué)學(xué)報(bào):自然科學(xué)版,2010,33(3):2-7.
[2] 黃川,鄭寶玉.多無(wú)線電協(xié)作技術(shù)與異構(gòu)網(wǎng)絡(luò)融合[J].中興通迅技術(shù),2008,14(3):27-31.
[3] 張方奎,張春業(yè).短距離無(wú)線通信技術(shù)及其融合發(fā)展研究[J].電測(cè)與儀表,2007,44(10):48-52.
[4] Lee J S,Su Y W,Shen C C.A comparative study of wireless protocols:bluetooth,UWB,ZigBee,and Wi-Fi[C]∥The 33rd Annual Conference of the IEEE Industrial Electronics Society,2007:46-51.
[5] 李佳,謝琦,王慶華.基于網(wǎng)關(guān)的ZigBee網(wǎng)絡(luò)與Internet互聯(lián)框架[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(9):2-4.
[6] 劉懿.室內(nèi)無(wú)線接入點(diǎn)設(shè)計(jì)與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2008.
[7] 王春,張良棟,孫國(guó)祥,等.基于ZigBee的焊接環(huán)境有毒氣體監(jiān)測(cè)系統(tǒng)[J].化工自動(dòng)化及儀表,2011,38(12):1479-1480.
[8] 范艷開(kāi).基于ARM的嵌入式Linux操作系統(tǒng)移植[D].西安:西北工業(yè)大學(xué),2005.
[9] 殷松遷,郭培源,王建華.基于嵌入式及ZigBee技術(shù)的居室環(huán)境監(jiān)測(cè)系統(tǒng)[J].電子技術(shù)應(yīng)用,2012,38(8):24-25.
[10]劉暢,彭楚武.Linux下的UDP協(xié)議編程[J].儀表技術(shù),2006(1):62-63.