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