楊林杰 張斌 陳婷婷



摘要:針對農業物聯網系統中環境信息檢測采集的需求,設計了一種無線傳感器網絡。設計基于NRF24L01無線射頻收發芯片,采用STM32C8T6單片機作為控制核心,實現了溫濕度、光照度數據的采集和簇狀多跳無線網絡傳輸。描述了硬件電路的特點及實現,詳細介紹了簇狀網絡的實現思路。相較于NRF24L01原有的一對六通信功能,通信距離更遠、可實現的網絡規模更大、能采集更大范圍的農業環境信息。
關鍵詞:農業;物聯網;NRF24L01無線通信;傳感器;STM32;簇狀網絡
中圖分類號:TP368.12 文獻標識碼:A 文章編號:1007-9416(2020)01-0124-03
0 引言
我國目前的農業生產存在勞動生產率普遍低下、人均農業資源缺乏和農業資源浪費嚴重等問題,農業物聯網技術可以實現生產的精準化管理、智能化控制[1]。農業生產智能化的實現,離不開傳感器網絡。
傳統的傳感器網絡布線復雜、成本高。為了克服這些缺點,設計了基于NRF24L01無線通信模塊、以STM32C8T6為控制核心的無線傳感器網絡,采用分層簇狀的拓撲結構,簇頭和各層簇成員間以逐層、多跳傳輸的方式通信。
NRF24L01是一款單片射頻收發器,工作在世界通用的2.4- 2.5GHz ISM頻段。接收模式下能同時接收六路數據[2]。但該模塊的基礎通信功能存在著網絡規模小、通信距離短的局限性。因此本設計在其基礎功能上進行拓展,設計簇狀網絡通信協議,以達到網絡規模更大、通信距離更遠的目的。
1 硬件設計
本設計由多個傳感器節點組成簇狀網絡,單個節點硬件設計基本相同,可根據需要增減傳感器數量。硬件包括:STM32C8T6單片機最小系統、NRF24L01無線通信模塊、傳感器模塊、電源模塊。單個節點結構框圖如圖1。
1.1 STM32與無線通信模塊
STM32C8T6是基于ARM核心的32位帶64K字節閃存的微控制器,工作頻率為72MHz,外設資源豐富:1個USB、1個CAN、3個16位通用定時器和1個PWM定時器、2個ADC、2個IIC接口和SPI接口、37個快速I/O端口[3],完全滿足本設計需求。
無線收發芯片NRF24L01可通過硬件或軟件模擬SPI 接口對進行配置,能兼容無SPI外設的MCU。通過SPI配置無線收發模式、工作頻道、發送輸出功率、天線增益、發送和接收地址等功能,實現無線數據收發。NRF24L01功耗低,在0dBm輸出功率的發送模式下,電流消耗僅為11.3mA[2],很好地滿足了無線傳感器網絡對低功耗的需求。
NRF24L01集成了OSI模型中的物理層和數據鏈路層,擁有PID(包識別)、CRC校驗、自動應答與自動重發功能,從而確保數據包的可靠傳輸,也給在此基礎上的協議開發提供了方便。
1.2 傳感器模塊
本設計采用SHT20數字溫濕度傳感器進行溫濕度的測量。溫度的測量范圍是-40到125℃,相對濕度的測量范圍是0-100%RH[4]。MCU可通過IIC接口與該傳感器通信,設置溫濕度數據的采集模式或讀取數據。
采用B-LUX-V30B低功耗環境光傳感器測量光通量,測量的范圍是0-200000流明,工作電流小于0.8mA,IIC數字量輸出。
1.3 電源電路
本設計硬件電路統一采用3.3V電壓供電,為了降低系統成本、使系統更小型、布置更方便,采用一節3.7V鋰電池降壓到3.3V后供電。為滿足低壓降穩壓的需求,電源電路選用的是3.3V電壓輸出的三端穩壓芯片XC6206P33。該芯片具有高精度、低功耗、低壓降的情況下能保持較高輸出電流等特點,最大輸入電壓為4.3V,最大輸出電流200mA,應用電路如圖2,圖中C1、C2值為1uF[5]。
2 軟件設計
2.1 簇狀網絡設計
本設計傳感器節點的通信鏈路關系采用分層簇狀結構[6]。每個簇由一個簇頭節點和若干個簇成員節點構成。一個簇中簇頭節點相對于成員節點為上級節點,成員節點相對于簇頭節點為下級節點。最高級的簇頭為sink節點[6]。sink節點下接若干個成員節點,這些成員節點下再進一步分支,由此形成整個簇結構。如圖3所示,圖形內數字表示ID,箭頭上數字表示sink節點接收通道號。
將NRF24L01的6個接收通道中的通道0用于接收自動應答,通道1用于接收上級節點指令,通道2到5用于接收下級節點的數據。因此,每個節點有一個上級節點和四個下級節點。通信時,根據收到數據包的通道號即可判斷數據包的來源。
本設計中每個節點都具有節點級別、節點ID、節點上級ID、本節點各通信通道地址4個屬性。在程序中,定義結構體變量,該變量包含一個節點具有的各項屬性:
定義結構體數組,在每個節點的結構體數組中存儲網絡中全部節點的屬性。給每個節點分配一個ID和級別,各個節點就可以根據自己的ID和級別確定自己具有的各項屬性。若共有n個節點,當簇頭節點要給簇成員發送數據時,可通過查找結構體數組元素中,s_super值與自己的s_ID值相等的元素,并將發送地址設置為該元素中存儲的接收通道1地址,如圖4(a);當簇成員給簇頭節點發送數據時,查找出s_ID與本節點的s_super值相等的元素,將發送地址設置為該元素中存儲的相應接收通道地址即可,如圖4(b)。
2.2 總體功能實現
系統主要實現功能為在收到包后,判斷收到的包是來自下級的數據包還是來自上級的命令包。如果收到的是數據包,則將數據轉發給上級;如果收到的是命令包,則先轉發命令包給下級節點,再采集數據,將采集到的數據發送給上級節點。
初始狀態下除sink節點外,簇狀網絡中的所有節點處于接收狀態,sink節點周期性發出采集數據指令。sink節點初始化IO口和NRF24L01配置后,轉入發送模式,發起數據采集。完成發送后轉入接收模式,將采集到的數據匯總并發送到串口助手顯示。流程圖如圖5。
成員節點初始化為接收模式,根據接收到數據的通道號判斷數據來源。若是上級節點下發的指令數據,則將數據轉發給下級節點;若是下級節點上發的數據,則將數據轉發給自己的上級節點。如圖6。
3 實驗測試
制作4個無線通信節點,首先測試節點間最大通信距離:在空曠室內,測得兩個節點間最大通信距離為20m。
測試整體通信功能。選用2個通信節點作為無線傳感器節點,2個作為簇頭節點,其中最高級的簇頭為sink節點,在空曠的室內的有效通信距離范圍內布置節點構成簇狀網絡。進行測試,測得溫濕度及光照數據如表1。
4 結論
本文基于NRF24L01設計了一種簇狀拓撲的網絡通信協議,結合傳感器技術,設計了無線傳感器節點,實現了農業環境信息的采集與無線傳輸。由于無須布線且簇狀網絡中的成員節點可作為簇頭節點進一步擴展網絡,具有布置簡便、網絡規模大、覆蓋監測范圍廣的優點。實驗證明,本文設計的無線傳感器網絡能夠實現設計目的,進行組網、通信和信息采集,為農業物聯網的監測環節提供了解決方案,同時對其他無線傳感器網絡的應用場景也具有一定的參考價值。
參考文獻
[1] 陳曉棟,原向陽,郭平毅,等.農業物聯網研究進展與前景展望[J].中國農業科技導報,2015,17(02):8-16.
[2] Nordic Semiconductor.nRF24L01 datasheet[R].[S.l.]:Nordic Semiconductor,2009.
[3] STMicroelectronics.STM32F103x8 STM32F103xB datasheet[R].[S.I.]:STMicroel-Ectronics,2015.
[4] SENSIRION.Datasheet SHT20 [R].[S.l.]:SENSIRION,2014.
[5] TOREX SEMICONDUCTOR LTD. XC6206 Series[R].[S.l.]:TOREX SEMICONDUCTOR LTD.
[6] 孫利民,張書欽,李志,等.無線傳感器網絡:理論及應用[M].北京:清華大學出版社,2018.