,,
(1.貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴陽 550025;2.清華大學(xué))
隨著物聯(lián)網(wǎng)的興起,將無線傳感器網(wǎng)絡(luò)技術(shù)應(yīng)用于溫室環(huán)境監(jiān)控系統(tǒng)成為農(nóng)業(yè)研究的熱門方向。國外溫室研究開始于20世紀70年代,90年代初期很多發(fā)達國家開始把無線通信技術(shù)應(yīng)用在溫室種植領(lǐng)域,直到90年代末,由美國興起并嘗試性地將無線傳感器網(wǎng)絡(luò)技術(shù)應(yīng)用到溫室監(jiān)測中。近幾年,無線傳感器網(wǎng)絡(luò)在溫室內(nèi)的研究工作蓬勃發(fā)展[1]。
我國在20世紀70年代把微機控制技術(shù)開始使用在農(nóng)業(yè)種植領(lǐng)域,到80年代這種技術(shù)在溫室監(jiān)測領(lǐng)域廣泛使用,進入90年代,隨著計算機技術(shù)的發(fā)展,在溫室環(huán)境監(jiān)測、視頻監(jiān)控等方面取得了顯著成果。近年來,國內(nèi)很多高校和企業(yè)展開了無線傳感網(wǎng)絡(luò)技術(shù)的研究并得到了廣泛的應(yīng)用??v觀國內(nèi)外研究現(xiàn)狀,影響無線傳感網(wǎng)絡(luò)通信質(zhì)量的因素主要有傳輸距離、能耗、通信可靠性等[2]。本文設(shè)計了一種自適應(yīng)性強、低功耗的Si4432無線組網(wǎng)模塊,并利用該模塊搭建了適用于溫室無線數(shù)據(jù)采集和收發(fā)的遠程數(shù)據(jù)傳輸系統(tǒng)。該系統(tǒng)采用分布式管理,保證了系統(tǒng)的可靠性。
該無線組網(wǎng)模塊基于低功耗單片機PIC24FJ64和高集成度、低功耗和多頻段的無線收發(fā)器件Si4432,頻率在433 MHz,具有低功耗、遠距離無線組網(wǎng)傳輸?shù)墓δ躘3]。PIC24FJ64和Si4432芯片之間通過SPI總線通信。在實際應(yīng)用中,用戶無需關(guān)心模塊內(nèi)部組成和操作,當用戶需要組網(wǎng)通信時,將本地標準串口接入到無線組網(wǎng)模塊,完成本地串口通信,其他組網(wǎng)通信由Si4432組網(wǎng)模塊自動完成。本系統(tǒng)采用點對點的樹型組網(wǎng)通信,提高了組網(wǎng)模塊的開發(fā)周期,模塊電路結(jié)構(gòu)圖如圖1所示。
圖1 無線組網(wǎng)模塊電路
首先,為每個節(jié)點配置自身設(shè)備信息、組網(wǎng)節(jié)點信息。自身信息有模塊的網(wǎng)絡(luò)IP、組地址;組網(wǎng)節(jié)點信息包括父節(jié)點信息、子節(jié)點信息和附屬子節(jié)點信息。通過配置每個節(jié)點的網(wǎng)絡(luò)地址搭建系統(tǒng)路由參數(shù)配置樹。然后,檢查組網(wǎng)數(shù)據(jù)隊列里是否有待轉(zhuǎn)發(fā)的數(shù)據(jù),如果隊列為空,結(jié)束轉(zhuǎn)發(fā)流程清除本條數(shù)據(jù)。如果隊列里有待轉(zhuǎn)發(fā)的數(shù)據(jù),根據(jù)數(shù)據(jù)方向、目的地址判斷本機是否為目的地址。如果本機是目的地址,則轉(zhuǎn)到串口處理流程,如果本機不是目的地址,在路由表中索引,查找下一跳的所有節(jié)點地址,當找到合適的地址時,啟動喚醒,根據(jù)下一跳節(jié)點選擇頻段,發(fā)送數(shù)據(jù)等待確認,在等待超時時間內(nèi)收到應(yīng)答時,結(jié)束本次數(shù)據(jù)轉(zhuǎn)發(fā),在超時時間內(nèi)沒有接收到應(yīng)答信號,進行數(shù)據(jù)重發(fā),當重發(fā)次數(shù)超過3次未響應(yīng)時,把數(shù)據(jù)轉(zhuǎn)發(fā)給備用下一跳節(jié)點。無線組網(wǎng)流程圖如圖2所示。
圖2 組網(wǎng)流程圖
在點對點通信中,同一通信信道內(nèi)有可能出現(xiàn)多個從節(jié)點同時發(fā)數(shù)據(jù)給主節(jié)點的情況,如果這種情況不能避免,會導(dǎo)致數(shù)據(jù)幀的丟失?;赟i4432的無線組網(wǎng)模塊里固化了防數(shù)據(jù)碰撞算法,這種算法參考了CSMA/CA機制自動完成避讓[4]。
數(shù)據(jù)通信碰撞處理主要包括呼叫碰撞處理和數(shù)據(jù)碰撞處理。
呼叫碰撞處理:隨機延時一段時間(隨機數(shù)選取1~16,窗口時間為3 ms),該隨機延時主要為了讓滯后發(fā)送的模塊能夠偵聽到已經(jīng)搶占信道的模塊正在進行呼叫,延時時間到首先進行載波偵聽,如果載波信號強度大于設(shè)定閾值,則開始持續(xù)接收呼叫數(shù)據(jù)包,直到聽不到呼叫數(shù)據(jù)包后啟動直接發(fā)送數(shù)據(jù)內(nèi)容。
數(shù)據(jù)碰撞處理:與呼叫碰撞一樣,首先隨機延時一段時間,然后進行載波偵聽。信號強度如果小于閾值,直接發(fā)送數(shù)據(jù);如果大于閾值,隨機延時進行發(fā)送,隨機數(shù)的產(chǎn)生主要基于定時器的計數(shù)值。
在進行數(shù)據(jù)碰撞處理時,通過防數(shù)據(jù)通信碰撞算法的選擇,基本可以保證9個模塊同時發(fā)送數(shù)據(jù)不沖突。
無線組網(wǎng)模塊的通信協(xié)議是通信收發(fā)雙方為實現(xiàn)信息交互而制定的規(guī)則[5]。無線組網(wǎng)模塊傳輸協(xié)議格式如下所示:
BYTE0BYTE1BYTE2BYTE3…BYTE(n-1)BYTEn0xff0x550xAALen…CHK0x16同步頭幀頭幀頭長度內(nèi)容校驗和幀尾
同步頭:用于可靠喚醒CPU。長度:除去同步頭外的所有數(shù)據(jù)長度。內(nèi)容:節(jié)點號和溫濕度ASCII碼值。校驗和:除去同步頭、幀頭、幀尾之外數(shù)據(jù)相加之和。
軟件設(shè)計中Si4432采用自動喚醒功能,Si4432有4種狀態(tài):關(guān)閉、掛起、發(fā)射和接收。其中掛起狀態(tài)分為待機模式、睡眠模式、傳感器模式、預(yù)備模式、調(diào)諧模式,用戶可以根據(jù)需要靈活選擇不同的配置選項。在沒有數(shù)據(jù)收發(fā)時芯片處于休眠狀態(tài),定時一段時間由休眠狀態(tài)切換至發(fā)送或者接收狀態(tài),監(jiān)聽是否有數(shù)據(jù)的收發(fā)。不同狀態(tài)轉(zhuǎn)換需要的時間和功耗都不相同,可以根據(jù)系統(tǒng)需要選擇最佳的狀態(tài)[6]。
Si4432無線組網(wǎng)模塊中PIC24FJ64芯片通常為休眠狀態(tài)。在接收到中斷時,將從休眠狀態(tài)切換為正常狀態(tài),當執(zhí)行完任務(wù)后,立即從正常狀態(tài)切換回休眠狀態(tài)。
圖3 數(shù)據(jù)采集器結(jié)構(gòu)圖
數(shù)據(jù)采集器分布放置在多個監(jiān)測點,該模塊采用RS485總線接口,方便在總線上掛載多種類型的傳感器模塊,數(shù)據(jù)采集器將編碼的數(shù)據(jù)包通過Si4432無線組網(wǎng)模塊發(fā)送給溫室控制器節(jié)點。中央控制器選用STM32芯片,其性能好、功耗低。傳感器模塊采用高精度的SHT10芯片作為溫濕度采集傳感器,其支持A/D轉(zhuǎn)換和CRC校驗。圖3為數(shù)據(jù)采集器硬件結(jié)構(gòu)圖。
溫室控制器節(jié)點通過Si4432無線組網(wǎng)模塊收集分布在各個節(jié)點的數(shù)據(jù)采集器發(fā)射過來的編碼數(shù)據(jù)包,并將校驗正確的編碼數(shù)據(jù)包通過USB轉(zhuǎn)串口線傳送給電腦顯示和解碼。圖4為溫室控制器硬件結(jié)構(gòu)圖。
圖4 溫室控制器結(jié)構(gòu)圖
圖5 數(shù)據(jù)采集器軟件流程
圖6 溫室控制器軟件流程
數(shù)據(jù)采集器發(fā)送程序流程圖如圖5所示。完成系統(tǒng)單片機初始化后,STM32單片機讀入SHT10溫濕度值并且封裝成幀,通過串口定時發(fā)送數(shù)據(jù)包給無線組網(wǎng)模塊預(yù)留的UART接口,然后通過配置Si4432寄存器來設(shè)置包的長度和結(jié)構(gòu),通過SPI通信向發(fā)送FIFO中寫入溫濕度值。之后關(guān)閉除包發(fā)送之外的所有中斷,使能發(fā)送功能,當數(shù)據(jù)包發(fā)送完時,nIRQ引腳拉成低電平,從而通知PIC24FJ64芯片數(shù)據(jù)包已經(jīng)發(fā)送完畢,讀取中斷狀態(tài)并拉高nIRQ引腳,否則繼續(xù)等待。一次數(shù)據(jù)包發(fā)送完成后,循環(huán)進入下一次數(shù)據(jù)發(fā)送狀態(tài)[7]。
溫室控制器接收程序流程圖如圖6所示。完成系統(tǒng)單片機初始化后,讀Si4432寄存器4bh的狀態(tài),獲取包長度信息,打開接收中斷和同步字中斷,關(guān)閉其他中斷,使能接收功能,若nIRQ引腳變成低電平,表示數(shù)據(jù)包被檢測到。等待數(shù)據(jù)完成接收,讀取中斷標志位nIRQ引腳,使nIRQ引腳恢復(fù)至高電平,以準備下一次數(shù)據(jù)包的接收。通過SPI通信讀取接收FIFO中的數(shù)值,將數(shù)據(jù)包通過Si4432無線組網(wǎng)模塊的串口發(fā)送給STM32單片機,STM32單片機通過串口將數(shù)據(jù)包發(fā)送給上位機顯示,之后進入下一次數(shù)據(jù)包接收狀態(tài)[8]。
為了驗證Si4432無線組網(wǎng)模塊的可靠性,對模塊進行了系統(tǒng)的測試。Si4432無線組網(wǎng)模塊在供電電壓為3.3 V時,經(jīng)測試該模塊的通信頻率為433 MHz,通信信道數(shù)目和呼叫信道數(shù)目均為1,超低休眠電流為4.5 μA,發(fā)射功率為20 dBm,空中傳輸速率是9.6 kbps,接收電流為19 mA,一節(jié) 3.6 V/3.6 A的鋰亞電池可工作超 10年以上。在空曠條件下最遠傳輸距離為1000 m。經(jīng)過測試發(fā)現(xiàn),該無線組網(wǎng)模塊具有通信距離遠、穿透力強的優(yōu)點。該模塊也可廣泛應(yīng)用于無線傳感網(wǎng)絡(luò)、遠程抄表系統(tǒng)、電力通信、智能家居系統(tǒng)中,具有廣闊的應(yīng)用前景。
為了更直觀地觀察溫濕度信息,設(shè)計中使用QT Creator軟件編寫了上位機顯示界面。在測量中,隨機放置 2 個節(jié)點,經(jīng)過多次測量觀察,發(fā)現(xiàn)每個節(jié)點的溫濕度變化很小,測量數(shù)據(jù)對比見表1。這說明該系統(tǒng)在實際應(yīng)用中具有良好的可靠性。
表1 測量數(shù)據(jù)對比
[1] 李棟.基于無線傳感器網(wǎng)絡(luò)的溫室監(jiān)測系統(tǒng)的設(shè)計與研究[D].無錫:江南大學(xué),2008.
[2] 馬琦.基于無線傳感器網(wǎng)絡(luò)的溫室溫溫度監(jiān)測系統(tǒng)研究[D].太原:中北大學(xué),2009.
[3] 許永通.基于Si4432的高性能無線收發(fā)系統(tǒng)設(shè)計[D].杭州:杭州電子科技大學(xué),2014.
[4] 張玲,劉九維,何偉.基于SI4432的高性能無線收發(fā)應(yīng)用平臺設(shè)計[J].電子技術(shù)應(yīng)用,2010,36(12):124-127.
[5] 劉國新.基于Si4432的無線傳輸系統(tǒng)設(shè)計[D].大連:大連理工大學(xué),2010.
[6] 潘旭兵.基于Si4432的無線收發(fā)模塊的設(shè)計[J].計算機應(yīng)用,2009(S2):189-191.
[7] 張春元.基于SI4432的無線數(shù)據(jù)采集系統(tǒng)設(shè)計[D].長沙:湖南大學(xué),2012.
[8] 陳侃松,唐寅,劉洪波,等.基于SI4432的無線通信系統(tǒng)設(shè)計與實現(xiàn)[J].信息技術(shù),2013,37(3):70-73.
陳慧(碩士研究生),主要研究方向為無線傳感器網(wǎng)絡(luò);吳次南(教授),主要研究方向為光電子學(xué)、光譜學(xué)、理論物理以及教育科學(xué);劉澤文(教授),主要研究方向為MEMS及微納系統(tǒng)。