基于無線通信的溫度監(jiān)測系統(tǒng)的設計
摘要:通過對單片機技術和無線傳感器網(wǎng)絡技術的研究,介紹了一種具有分層結(jié)構的無線通信的溫度監(jiān)測系統(tǒng), 并設計了基于這種分層結(jié)構的通信協(xié)議,給出了系統(tǒng)的硬件結(jié)構和軟件設計。應用結(jié)果表明,系統(tǒng)可以廣泛應用在需要溫度監(jiān)測的領域。
1 引言
溫度與人們的生產(chǎn)生活密切相關,需要對溫度監(jiān)測的場合非常多。傳統(tǒng)的有線測溫方式存在著布線復雜,線路容易老化等問題。無線測溫技術與有線測溫技術相比,有成本低、攜帶方便、搭建網(wǎng)絡簡單快捷等特點,特別是在有線網(wǎng)絡不通暢或由于現(xiàn)場環(huán)境因素的限制不便架設線路的情況下,使用無線通信技術進行溫度監(jiān)測顯得更加實用、快捷。
無線傳感器網(wǎng)絡技術在21世紀有了很大的發(fā)展,典型的傳感器網(wǎng)絡是指由大量同構的、微小的、資源受限的、基本不動的傳感器節(jié)點隨機分布在被測量區(qū)域形成的大規(guī)模的、自組織的、多跳的、未分割的網(wǎng)絡。
而在一些場合我們并不需要構建大規(guī)模的、自組織的網(wǎng)絡,結(jié)合無線傳感器網(wǎng)絡的特點,本文提出了一種具有分層結(jié)構的無線通信的溫度監(jiān)測系統(tǒng),并給出了這種分層結(jié)構的通信協(xié)議,該系統(tǒng)吸取了無線傳感器網(wǎng)絡的特點同時又不需要考慮傳感器網(wǎng)絡的自組織建網(wǎng),降低了功耗。
2 系統(tǒng)的組成結(jié)構
參照無線傳感器網(wǎng)絡中的分簇結(jié)構,以降低功耗為目的,本文提出了具有兩層結(jié)構的基于無線通信的溫度監(jiān)測系統(tǒng),系統(tǒng)由大量的無線傳感器節(jié)點、二級節(jié)點和一個主節(jié)點組成。系統(tǒng)結(jié)構如圖1所示,主節(jié)點M相當于無線傳感器網(wǎng)絡中的一級簇首,同時又是主控節(jié)點。1、2、……、N相當于無線傳感器網(wǎng)絡中的二級簇首,文中稱為二級節(jié)點,A1、A2、……、Am為二級節(jié)點1的子節(jié)點, B1、B2、……、Bm為二級節(jié)點2的子節(jié)點, N1、N2等為二級節(jié)點N的子節(jié)點等等。分布在傳感器網(wǎng)絡中的簇首節(jié)點主要用于接收傳感器節(jié)點的數(shù)據(jù)上報,并將其進行融合處理。本系統(tǒng)的主控節(jié)點M沒有能量限制,主要負責收集和協(xié)調(diào)各個子節(jié)點的數(shù)據(jù),并將其處理后上傳給監(jiān)控主機。二級節(jié)點主要負責收集各個傳感器子節(jié)點的數(shù)據(jù),并且負責接收和下發(fā)主控節(jié)點的命令,在整個結(jié)構起中轉(zhuǎn)的作用。傳感器子節(jié)點帶有射頻收發(fā)器主要用于溫度的采集和傳輸。為了節(jié)約能耗,底層傳感器節(jié)點工作在睡眠- 偵聽模式,只有收到二級節(jié)點的數(shù)據(jù)請求命令才傳送數(shù)據(jù)。
圖1 系統(tǒng)結(jié)構
主控節(jié)點通過串口與監(jiān)控計算機通信,各二級節(jié)點要放到與主控節(jié)點距離較近的位置,傳感器子節(jié)點隨機放置。本系統(tǒng)射頻傳輸成本低,功耗小,采用兩層結(jié)構的通信方案,能夠滿足較遠距離的溫度監(jiān)測。
3 系統(tǒng)硬件設計
3.1 傳感器節(jié)點的硬件設計
一個完整的傳感器節(jié)點需要有小尺寸、低功耗,短距離通信的特點,因此一個傳感器節(jié)點通常由傳感器模塊、處理器模塊、無線通信模塊組成。本系統(tǒng)的傳感器節(jié)點硬件結(jié)構如圖2所示。
圖2 傳感器節(jié)點硬件結(jié)構圖
溫度傳感器采用DALLAS公司生產(chǎn)的DS18B20,DS18B20具有獨特的單總線接口,只需一個接口引腳即可通信,并且多個DS18B20可以存在于同一條單線總線上,測量范圍為- 55~125 ℃,以9位數(shù)字值方式讀出溫度,需要的外圍器件很少,體積小,滿足傳感器節(jié)點的要求。
單片機ATmega16L是Atmel公司的基于AVR的增強型R ISC結(jié)構的極低功耗的8位CMOS微控制器。
Atmega16L數(shù)據(jù)吞吐率高達1M IPS/MHz,從而緩解了系統(tǒng)在功耗和處理速度之間的矛盾,有六種睡眠模式,并且在1MHz, 3V, 25 ℃時的功耗在正常模式是111mA,在空閑模式是0135mA,適合傳感器節(jié)點的低功耗要求。
無線通信芯片采用Nordic公司的NRF905無線收發(fā)芯片。NRF905是一款工作在433 /868 /915頻段上的可編程的單片射頻收發(fā)器,體積小,外圍電路簡單,集成度高。NRF905可以自動完成處理字頭和CRC (循環(huán)冗余碼校驗)的工作,可由片內(nèi)硬件自動完成曼徹斯特編碼、解碼,使用SP I接口與微控制器通信。其功耗非常低,以- 10 dBm的輸出功率發(fā)射時電流只有11 mA,在接收模式時電流為1215 mA。最主要的特點是可以通過單片機編程給每片NRF905分配地址,地址寬度最多可達4字節(jié)。
傳感器節(jié)點主要負責溫度的采集和無線發(fā)送,傳感器DS18B20將采集的數(shù)據(jù)發(fā)送給Atmega16L, At2mega16將數(shù)據(jù)通過SP I口發(fā)送給NRF905,再由NRF905將數(shù)據(jù)打包后發(fā)送給二級節(jié)點。
3.2 主控節(jié)點和二級節(jié)點硬件設計
主控節(jié)點和二級節(jié)點的硬件結(jié)構如圖3所示,處理器都是采用了低功耗的單片機ATmenga16L,發(fā)射芯片采用Nordic公司的NRF905無線收發(fā)芯片,有區(qū)別的是主控節(jié)點通過RS232與監(jiān)控計算機通信,主控節(jié)點收集的來自各個傳感器節(jié)點的數(shù)據(jù)經(jīng)簡單處理后傳送給監(jiān)控計算機,監(jiān)控計算機負責數(shù)據(jù)的保存和溫度值的顯示。
圖3 二級節(jié)點和主控節(jié)點硬件結(jié)構
4 通信協(xié)議的設計
系統(tǒng)采用如圖1所示的分層結(jié)構,主節(jié)點采用數(shù)據(jù)請求工作方式,按順序?qū)Χ壒?jié)點進行數(shù)據(jù)請求,二級節(jié)點收到數(shù)據(jù)請求命令后,將采集的數(shù)據(jù)交給主節(jié)點統(tǒng)一處理,主節(jié)點把帶有傳感器地址的溫度數(shù)據(jù)傳送給上位機。NRF905每次只能收發(fā)32字節(jié)數(shù)據(jù),因此底層傳感器節(jié)點并不是無限多,根據(jù)DS18B20的通信協(xié)議,DS18B20采集的溫度數(shù)據(jù)是用兩個字節(jié)表示,而每個傳感器有唯一的1字節(jié)地址,這樣每個傳感器傳送給二級節(jié)點的數(shù)據(jù)都是三個字節(jié),即兩個字節(jié)的溫度數(shù)據(jù)和一個字節(jié)的地址數(shù)據(jù)。二級節(jié)點一次最多傳送32字節(jié)數(shù)據(jù),為了保證數(shù)據(jù)傳送的穩(wěn)定性, 該系統(tǒng)每個二級節(jié)點對應10個底層傳感器節(jié)點,共構建了20個二級節(jié)點,系統(tǒng)總的底層傳感器節(jié)點的數(shù)目是200個。本系統(tǒng)的所有節(jié)點的通訊都是同一信道,當出現(xiàn)多個節(jié)點同時傳送數(shù)據(jù)的情況時,會形成相互間的干擾導致數(shù)據(jù)無法正確的接收,因此需要一種機制來合理的分配信道資源,減少數(shù)據(jù)沖突?;贜RF905通訊的特點,即兩個NRF905模塊必需具有相同的頻段和地址才能通訊成功,設計了通信協(xié)議,通信協(xié)議的算法如下:
(1)主節(jié)點M采用輪詢數(shù)據(jù)請求工作方式,按順序?qū)Χ壒?jié)點進行數(shù)據(jù)請求,主節(jié)點對每一個二級節(jié)點發(fā)送完請求數(shù)據(jù)命令后都會進入信道偵聽狀態(tài),一定的時間間隙T內(nèi)主節(jié)點一直處于偵聽信道狀態(tài)。
(2)二級節(jié)點偵聽信道,接收來自主節(jié)點的數(shù)據(jù)請求命令, 收到數(shù)據(jù)請求命令后結(jié)束偵聽,發(fā)送應答信息。
(3)二級節(jié)點采用類似主節(jié)點M的工作方式,按順序?qū)鞲衅鞴?jié)點進行數(shù)據(jù)請求,二級節(jié)點對每一個傳感器節(jié)點發(fā)送完請求數(shù)據(jù)命令后都會進入信道偵聽狀態(tài),一定的時間間隙Tm內(nèi)二級節(jié)點一直處于偵聽信道狀態(tài)。
(4)傳感器節(jié)點偵聽信道,接收來自二級節(jié)點的數(shù)據(jù)請求命令,收到命令后,結(jié)束偵聽,發(fā)送溫度數(shù)據(jù)信息。
(5)二級節(jié)點與傳感器節(jié)點進行數(shù)據(jù)傳輸,接收數(shù)據(jù)包。
(6)主節(jié)點與二級節(jié)點進行數(shù)據(jù)傳輸,接收來自二級節(jié)點的數(shù)據(jù)包。
(7)主節(jié)點與監(jiān)控主機通信,傳送各個傳感器節(jié)點采集的溫度數(shù)據(jù)和傳感器地址。
數(shù)據(jù)在系統(tǒng)中無線傳輸必須有統(tǒng)一的格式,數(shù)據(jù)包格式如下:
其中,前導碼由器件自動添加,占用1個字節(jié);目的地址是表示數(shù)據(jù)包要到達的目的地址,占用1個字節(jié);數(shù)據(jù)屬性用來說明該數(shù)據(jù)包是數(shù)據(jù)包還是命令包,占用一個字節(jié);有效數(shù)據(jù)包括節(jié)點的采集信息和地址信息可設定最大為32個字節(jié); CRC校驗系統(tǒng)自動完成,本系統(tǒng)采用16位CRC校驗占用2個字節(jié)。
主節(jié)點發(fā)出的通信數(shù)據(jù)包格式如下:
其中,目的地址是二級節(jié)點的地址,命令字是指請求數(shù)據(jù)命令,用0AH代表數(shù)據(jù)請求命令,占用一個字節(jié),有效數(shù)據(jù)長度為空。
二級節(jié)點的應答數(shù)據(jù)包格式如下:
其中目的地址是主節(jié)點的地址,應答字用0BH表示,占用1字節(jié),有效數(shù)據(jù)長度為空。
二級節(jié)點發(fā)出的帶有采集點數(shù)據(jù)的包格式如下:
其中目的地址是主節(jié)點的地址,數(shù)據(jù)標志用0CH表示,占用一個字節(jié),有效數(shù)據(jù)長度包括傳感器節(jié)點的溫度數(shù)據(jù)和傳感器地址數(shù)據(jù),占用30個字節(jié)。
系統(tǒng)中所有的節(jié)點都工作在同一信道,同一時刻只能有兩個節(jié)點通訊,并且只有在主節(jié)點對某一節(jié)點有數(shù)據(jù)要求時通信才會連接,其他時間雙方都處于未連接狀態(tài),通訊協(xié)議的實現(xiàn)有效避免了數(shù)據(jù)的沖突,降圖4 主節(jié)點程序流程圖低了系統(tǒng)功耗。
圖4 主節(jié)點程序流程圖
5 軟件設計
遵循通信協(xié)議,本系統(tǒng)的軟件程序主要包括主節(jié)點的程序設計,二級節(jié)點的程序設計和底層傳感器的程序設計。主節(jié)點程序負責整個系統(tǒng)的協(xié)調(diào)工作,系統(tǒng)的數(shù)據(jù)請求命令都是由主控節(jié)點發(fā)出,數(shù)據(jù)的匯總最后也都是有主控節(jié)點完成。二級節(jié)點程序在整個系統(tǒng)起中轉(zhuǎn)作用,底層傳感器程序只負責數(shù)據(jù)的采集和發(fā)射。遵循通信協(xié)議,在進行各節(jié)點的程序設計時系統(tǒng)要有一個統(tǒng)一的規(guī)劃,系統(tǒng)為除了主節(jié)點外的每個NRF905 模塊都分配一個不同的地址,整個系統(tǒng)共有220個NRF905模塊,對應了220個地址,地址的配置是實現(xiàn)整個通訊協(xié)議的關鍵。NRF905通訊的特點是兩個NRF905模塊必需具有相同的頻段和地址才能通訊成功,這200多個具有不同地址的模塊要通訊成功必須嚴格遵守軟件流程,并且除了主節(jié)點以外其他各個節(jié)點在開機的時候NRF905都被配置一個唯一的地址,且置為接收模式。
主節(jié)點程序設計是整個通訊的關鍵,二級節(jié)點的軟件設計思想和主節(jié)點程序設計相同。主節(jié)點程序流程圖如圖4所示,主節(jié)點控制器初始化NRF905模塊,配置NRF905的地址為二級節(jié)點1的地址,主控制器置NRF905為發(fā)射模式,發(fā)送數(shù)據(jù)請求命令,因為主節(jié)點配置的是二級節(jié)點1的地址,主節(jié)點發(fā)送數(shù)據(jù)請求命令,只有二級節(jié)點1能夠收到,其它二級節(jié)點接收不到,實現(xiàn)了點對點的通信。主節(jié)點發(fā)送完畢數(shù)據(jù)請求命令后,進入等待狀態(tài)1,接收來自二級節(jié)點的應答消息,收到應答消息后結(jié)束等待狀態(tài)1,進入等待狀態(tài)2,接收來自二級節(jié)點的數(shù)據(jù)包,收到數(shù)據(jù)包后結(jié)束等待狀態(tài)2。節(jié)點進入等待狀態(tài)后若是沒有收到來自二級節(jié)點的應答信息或數(shù)據(jù)包都會延時一定時間自動結(jié)束等待。主節(jié)點控制器重置NRF905的地址為二級節(jié)點2的地址,重復上述過程,每采集完一個二級節(jié)點的數(shù)據(jù)包后,主節(jié)點控制器都要重置NRF905的地址為下個二級節(jié)點地址,如此循環(huán)直到采集完整個二級節(jié)點的數(shù)據(jù),主控制器通過串口傳送所有數(shù)據(jù)給監(jiān)控主機,傳送完畢后主控制器重新配置NRF905的地址進行下一輪數(shù)據(jù)的采集。按照上述流程,主節(jié)點控制器要存放20個二級節(jié)點的地址,這是輪詢通信的關鍵。
6 結(jié)束語
本文給出了一種具有兩層簇狀結(jié)構的無線通信的溫度監(jiān)測系統(tǒng),通信協(xié)議簡單可靠,系統(tǒng)吸取了傳感器網(wǎng)絡的特點又不需要考慮類似傳感器網(wǎng)絡中的建網(wǎng)設計,大大降低了能量消耗。系統(tǒng)的結(jié)構簡單體積小,可以廣泛應用在大棚溫室測溫、糧庫溫度監(jiān)測、電力開關測溫等領域。