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