,,
(1.貴州大學 大數據與信息工程學院,貴陽 550025;2.清華大學)
隨著物聯網的興起,將無線傳感器網絡技術應用于溫室環境監控系統成為農業研究的熱門方向。國外溫室研究開始于20世紀70年代,90年代初期很多發達國家開始把無線通信技術應用在溫室種植領域,直到90年代末,由美國興起并嘗試性地將無線傳感器網絡技術應用到溫室監測中。近幾年,無線傳感器網絡在溫室內的研究工作蓬勃發展[1]。
我國在20世紀70年代把微機控制技術開始使用在農業種植領域,到80年代這種技術在溫室監測領域廣泛使用,進入90年代,隨著計算機技術的發展,在溫室環境監測、視頻監控等方面取得了顯著成果。近年來,國內很多高校和企業展開了無線傳感網絡技術的研究并得到了廣泛的應用。縱觀國內外研究現狀,影響無線傳感網絡通信質量的因素主要有傳輸距離、能耗、通信可靠性等[2]。本文設計了一種自適應性強、低功耗的Si4432無線組網模塊,并利用該模塊搭建了適用于溫室無線數據采集和收發的遠程數據傳輸系統。該系統采用分布式管理,保證了系統的可靠性。
該無線組網模塊基于低功耗單片機PIC24FJ64和高集成度、低功耗和多頻段的無線收發器件Si4432,頻率在433 MHz,具有低功耗、遠距離無線組網傳輸的功能[3]。PIC24FJ64和Si4432芯片之間通過SPI總線通信。在實際應用中,用戶無需關心模塊內部組成和操作,當用戶需要組網通信時,將本地標準串口接入到無線組網模塊,完成本地串口通信,其他組網通信由Si4432組網模塊自動完成。本系統采用點對點的樹型組網通信,提高了組網模塊的開發周期,模塊電路結構圖如圖1所示。

圖1 無線組網模塊電路
首先,為每個節點配置自身設備信息、組網節點信息。自身信息有模塊的網絡IP、組地址;組網節點信息包括父節點信息、子節點信息和附屬子節點信息。通過配置每個節點的網絡地址搭建系統路由參數配置樹。然后,檢查組網數據隊列里是否有待轉發的數據,如果隊列為空,結束轉發流程清除本條數據。如果隊列里有待轉發的數據,根據數據方向、目的地址判斷本機是否為目的地址。如果本機是目的地址,則轉到串口處理流程,如果本機不是目的地址,在路由表中索引,查找下一跳的所有節點地址,當找到合適的地址時,啟動喚醒,根據下一跳節點選擇頻段,發送數據等待確認,在等待超時時間內收到應答時,結束本次數據轉發,在超時時間內沒有接收到應答信號,進行數據重發,當重發次數超過3次未響應時,把數據轉發給備用下一跳節點。無線組網流程圖如圖2所示。

圖2 組網流程圖
在點對點通信中,同一通信信道內有可能出現多個從節點同時發數據給主節點的情況,如果這種情況不能避免,會導致數據幀的丟失。基于Si4432的無線組網模塊里固化了防數據碰撞算法,這種算法參考了CSMA/CA機制自動完成避讓[4]。
數據通信碰撞處理主要包括呼叫碰撞處理和數據碰撞處理。
呼叫碰撞處理:隨機延時一段時間(隨機數選取1~16,窗口時間為3 ms),該隨機延時主要為了讓滯后發送的模塊能夠偵聽到已經搶占信道的模塊正在進行呼叫,延時時間到首先進行載波偵聽,如果載波信號強度大于設定閾值,則開始持續接收呼叫數據包,直到聽不到呼叫數據包后啟動直接發送數據內容。
數據碰撞處理:與呼叫碰撞一樣,首先隨機延時一段時間,然后進行載波偵聽。信號強度如果小于閾值,直接發送數據;如果大于閾值,隨機延時進行發送,隨機數的產生主要基于定時器的計數值。
在進行數據碰撞處理時,通過防數據通信碰撞算法的選擇,基本可以保證9個模塊同時發送數據不沖突。
無線組網模塊的通信協議是通信收發雙方為實現信息交互而制定的規則[5]。無線組網模塊傳輸協議格式如下所示:

BYTE0BYTE1BYTE2BYTE3…BYTE(n-1)BYTEn0xff0x550xAALen…CHK0x16同步頭幀頭幀頭長度內容校驗和幀尾
同步頭:用于可靠喚醒CPU。長度:除去同步頭外的所有數據長度。內容:節點號和溫濕度ASCII碼值。校驗和:除去同步頭、幀頭、幀尾之外數據相加之和。
軟件設計中Si4432采用自動喚醒功能,Si4432有4種狀態:關閉、掛起、發射和接收。其中掛起狀態分為待機模式、睡眠模式、傳感器模式、預備模式、調諧模式,用戶可以根據需要靈活選擇不同的配置選項。在沒有數據收發時芯片處于休眠狀態,定時一段時間由休眠狀態切換至發送或者接收狀態,監聽是否有數據的收發。不同狀態轉換需要的時間和功耗都不相同,可以根據系統需要選擇最佳的狀態[6]。
Si4432無線組網模塊中PIC24FJ64芯片通常為休眠狀態。在接收到中斷時,將從休眠狀態切換為正常狀態,當執行完任務后,立即從正常狀態切換回休眠狀態。

圖3 數據采集器結構圖
數據采集器分布放置在多個監測點,該模塊采用RS485總線接口,方便在總線上掛載多種類型的傳感器模塊,數據采集器將編碼的數據包通過Si4432無線組網模塊發送給溫室控制器節點。中央控制器選用STM32芯片,其性能好、功耗低。傳感器模塊采用高精度的SHT10芯片作為溫濕度采集傳感器,其支持A/D轉換和CRC校驗。圖3為數據采集器硬件結構圖。
溫室控制器節點通過Si4432無線組網模塊收集分布在各個節點的數據采集器發射過來的編碼數據包,并將校驗正確的編碼數據包通過USB轉串口線傳送給電腦顯示和解碼。圖4為溫室控制器硬件結構圖。

圖4 溫室控制器結構圖

圖5 數據采集器軟件流程

圖6 溫室控制器軟件流程
數據采集器發送程序流程圖如圖5所示。完成系統單片機初始化后,STM32單片機讀入SHT10溫濕度值并且封裝成幀,通過串口定時發送數據包給無線組網模塊預留的UART接口,然后通過配置Si4432寄存器來設置包的長度和結構,通過SPI通信向發送FIFO中寫入溫濕度值。之后關閉除包發送之外的所有中斷,使能發送功能,當數據包發送完時,nIRQ引腳拉成低電平,從而通知PIC24FJ64芯片數據包已經發送完畢,讀取中斷狀態并拉高nIRQ引腳,否則繼續等待。一次數據包發送完成后,循環進入下一次數據發送狀態[7]。
溫室控制器接收程序流程圖如圖6所示。完成系統單片機初始化后,讀Si4432寄存器4bh的狀態,獲取包長度信息,打開接收中斷和同步字中斷,關閉其他中斷,使能接收功能,若nIRQ引腳變成低電平,表示數據包被檢測到。等待數據完成接收,讀取中斷標志位nIRQ引腳,使nIRQ引腳恢復至高電平,以準備下一次數據包的接收。通過SPI通信讀取接收FIFO中的數值,將數據包通過Si4432無線組網模塊的串口發送給STM32單片機,STM32單片機通過串口將數據包發送給上位機顯示,之后進入下一次數據包接收狀態[8]。
為了驗證Si4432無線組網模塊的可靠性,對模塊進行了系統的測試。Si4432無線組網模塊在供電電壓為3.3 V時,經測試該模塊的通信頻率為433 MHz,通信信道數目和呼叫信道數目均為1,超低休眠電流為4.5 μA,發射功率為20 dBm,空中傳輸速率是9.6 kbps,接收電流為19 mA,一節 3.6 V/3.6 A的鋰亞電池可工作超 10年以上。在空曠條件下最遠傳輸距離為1000 m。經過測試發現,該無線組網模塊具有通信距離遠、穿透力強的優點。該模塊也可廣泛應用于無線傳感網絡、遠程抄表系統、電力通信、智能家居系統中,具有廣闊的應用前景。
為了更直觀地觀察溫濕度信息,設計中使用QT Creator軟件編寫了上位機顯示界面。在測量中,隨機放置 2 個節點,經過多次測量觀察,發現每個節點的溫濕度變化很小,測量數據對比見表1。這說明該系統在實際應用中具有良好的可靠性。

表1 測量數據對比

[1] 李棟.基于無線傳感器網絡的溫室監測系統的設計與研究[D].無錫:江南大學,2008.
[2] 馬琦.基于無線傳感器網絡的溫室溫溫度監測系統研究[D].太原:中北大學,2009.
[3] 許永通.基于Si4432的高性能無線收發系統設計[D].杭州:杭州電子科技大學,2014.
[4] 張玲,劉九維,何偉.基于SI4432的高性能無線收發應用平臺設計[J].電子技術應用,2010,36(12):124-127.
[5] 劉國新.基于Si4432的無線傳輸系統設計[D].大連:大連理工大學,2010.
[6] 潘旭兵.基于Si4432的無線收發模塊的設計[J].計算機應用,2009(S2):189-191.
[7] 張春元.基于SI4432的無線數據采集系統設計[D].長沙:湖南大學,2012.
[8] 陳侃松,唐寅,劉洪波,等.基于SI4432的無線通信系統設計與實現[J].信息技術,2013,37(3):70-73.
陳慧(碩士研究生),主要研究方向為無線傳感器網絡;吳次南(教授),主要研究方向為光電子學、光譜學、理論物理以及教育科學;劉澤文(教授),主要研究方向為MEMS及微納系統。