當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于ZigBee的無線溫度監(jiān)控系統(tǒng)的設(shè)計(jì)

摘要:文章使甩ZigBee無線數(shù)傳模塊DRF1605作為數(shù)據(jù)通信的核心模塊,設(shè)計(jì)了一個(gè)小型的溫度監(jiān)控系統(tǒng),可以遠(yuǎn)程與溫度節(jié)點(diǎn)建立聯(lián)系,設(shè)定溫度和讀取溫度,實(shí)現(xiàn)了溫度信號的檢測與控制。設(shè)計(jì)方法簡單快速、使用界面友好,通過分置在多個(gè)地點(diǎn)的ZigBee溫度采集模塊,可以方便地實(shí)現(xiàn)多點(diǎn)分布式溫度信號的采集。
關(guān)鍵詞:無線數(shù)傳;ZigBee模塊;溫度監(jiān)控

0 前言
    ZigBee協(xié)議是基于IEEE802.15.4標(biāo)準(zhǔn)的低功耗、短距離的無線通信個(gè)域網(wǎng)協(xié)議,與傳統(tǒng)無線通信技術(shù)(如藍(lán)牙、紅外、寬帶衛(wèi)星、3G、WLAN)相比,具有距離短、復(fù)雜度低、自組網(wǎng)功能、低功耗、低成本等優(yōu)點(diǎn),適用于自動及遠(yuǎn)程控制領(lǐng)域。而ZigBee模塊具有高度集成化的特點(diǎn),可以輕松嵌入各種便攜式設(shè)備,使用戶無需考慮模塊的運(yùn)行原理,只需要將自己的數(shù)據(jù)通過標(biāo)準(zhǔn)傳輸方式發(fā)送至模塊中,模塊便可依據(jù)預(yù)先配置好的網(wǎng)絡(luò)結(jié)構(gòu),與網(wǎng)絡(luò)中的目的節(jié)點(diǎn)進(jìn)行雙向通信。本設(shè)計(jì)使用ZigBee無線數(shù)傳模塊DRF1605搭建了一個(gè)基于MESH網(wǎng)絡(luò)的小型溫度監(jiān)控系統(tǒng),實(shí)現(xiàn)主機(jī)上位機(jī)程序和終端節(jié)點(diǎn)間溫度信號與控制信號的雙向通訊。

1 系統(tǒng)結(jié)構(gòu)
   
設(shè)計(jì)使用ZigBee無線數(shù)傳模塊DRF1605作為數(shù)據(jù)通信的核心模塊,可以遠(yuǎn)程與溫度節(jié)點(diǎn)建立聯(lián)系,設(shè)定和讀取溫度,實(shí)現(xiàn)溫度的檢測和控制。系統(tǒng)包含3個(gè)模塊:PC機(jī)端的上位機(jī)監(jiān)控模塊、ZigBee無線數(shù)傳模塊、AVR單片機(jī)控制模塊。處于監(jiān)測點(diǎn)的AVR單片機(jī)控制模塊對溫度傳感器DS18B20采集的溫度數(shù)據(jù)進(jìn)行處理,通過UART的方式發(fā)送給ZigBee終端節(jié)點(diǎn)模塊,由ZigBee中心節(jié)點(diǎn)模塊接收,并通過RS232端口返回至PC機(jī)端的用戶界面。用戶在用戶界面可以獲取監(jiān)測點(diǎn)的當(dāng)前溫度并設(shè)定監(jiān)測點(diǎn)的預(yù)設(shè)溫度,AVR單片機(jī)控制模塊依據(jù)用戶UI設(shè)定的預(yù)設(shè)溫度與當(dāng)前監(jiān)測點(diǎn)溫度的對比實(shí)現(xiàn)溫度信號的監(jiān)控。系統(tǒng)架構(gòu)如圖1所示。



2 ZigBee數(shù)據(jù)傳輸模塊
    ZigBee無線數(shù)傳模塊采用DTK廠家開發(fā)的完整功能模塊DRF1605,附帶RS232的總線接口板。DRF1605基于TI公司CC2530F256芯片,滿足ZigBee2007/PRO協(xié)議的全部特點(diǎn),且CC2530F256芯片出廠時(shí)已自帶IEEE地址,用戶無需另行購買IEEE地址(MAC地址),IEEE地址可作為Zig Bee模塊的標(biāo)識。DRF1605結(jié)構(gòu)框圖如圖2所示。


    一個(gè)完整的ZigBee MESH網(wǎng)絡(luò)包含3種節(jié)點(diǎn):中心節(jié)點(diǎn)、路由節(jié)點(diǎn)和終端采集節(jié)點(diǎn),相鄰節(jié)點(diǎn)之間支持75M距離傳輸。在短距通信中,可以不使用路由器節(jié)點(diǎn)。本設(shè)計(jì)中的ZigBee數(shù)據(jù)傳輸采用兩種節(jié)點(diǎn):協(xié)調(diào)(Coordinator)節(jié)點(diǎn)和終端(Route)節(jié)點(diǎn)。其中,協(xié)調(diào)節(jié)點(diǎn)為中心節(jié)點(diǎn),與PC機(jī)相連,負(fù)責(zé)發(fā)送PC機(jī)數(shù)據(jù)和接收來自溫度采集模塊的信息;終端節(jié)點(diǎn)與單片機(jī)相連,負(fù)責(zé)發(fā)送溫度采集模塊的信息和接收PC機(jī)數(shù)據(jù)。2個(gè)模塊可以實(shí)現(xiàn)上電自動組網(wǎng),Coordinator節(jié)點(diǎn)自動給所有的節(jié)點(diǎn)分配地址,不需要用戶手動分配地址,具有斷電自動保護(hù)等優(yōu)點(diǎn),而且極易拓展,由于終端節(jié)點(diǎn)的設(shè)備配置方式基本一致,因此可以依據(jù)現(xiàn)有的終端節(jié)點(diǎn)迅速實(shí)現(xiàn)節(jié)點(diǎn)拓展,新加入的節(jié)點(diǎn)將異步完成網(wǎng)絡(luò)加入和重構(gòu),且當(dāng)節(jié)點(diǎn)出現(xiàn)故障時(shí),ZigBee模塊可以迅速重新架構(gòu)網(wǎng)絡(luò),保證數(shù)據(jù)網(wǎng)絡(luò)的正常通訊。
    DRF1605可以形象的理解為“無線的RS232連接”,簡單易用,不用考慮ZigBee協(xié)議,串口數(shù)據(jù)透明傳輸。有兩種數(shù)據(jù)傳輸方式:Coordi nator節(jié)點(diǎn)從串口接收到的數(shù)據(jù)會自動發(fā)送給所有的節(jié)點(diǎn),終端節(jié)點(diǎn)從串口接收到的數(shù)據(jù),會自動發(fā)送給Coordinator節(jié)點(diǎn);也可以通過串口在任意節(jié)點(diǎn)間進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)傳輸?shù)母袷綖椋?xFD(數(shù)據(jù)傳輸命令)+0x0A(數(shù)據(jù)長度)+0x73 0x79(目標(biāo)地址)+0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0X10(數(shù)據(jù),共0x0A字節(jié))。
[!--empirenews.page--]
3 AVR單片機(jī)控制模塊
    AVR單片機(jī)控制模塊由2部分組成:單片機(jī)最小系統(tǒng)以及DS18B20溫度采集模塊,如圖3中虛線框所示。其中,單片機(jī)系統(tǒng)的RX、TX兩個(gè)引腳和ZigBee模塊的TX、RX引腳相連,負(fù)責(zé)UART的通訊。單片機(jī)的PCI引腳與DS18B20的數(shù)據(jù)端相連,接收來自溫度傳感器的溫度數(shù)據(jù)。此外,單片機(jī)上的PA0和PA1兩個(gè)引腳分別引出,用來指示不同的溫度控制響應(yīng)。


3.1 溫度采集模塊
   
溫度采集模塊由溫度傳感器DS18B20構(gòu)成。由于DS18B20采用1-WIRE數(shù)據(jù)傳輸協(xié)議,僅使用1根數(shù)據(jù)線即可實(shí)現(xiàn)與單片機(jī)芯片的雙向通訊(包括傳輸溫度信息),接線方便,非常適用于農(nóng)業(yè)大棚、潔凈室、機(jī)房等多種非極限測溫場合。設(shè)計(jì)采用寄生電源供電方式,電路連接如圖4所示,由ATMega16的PCI采集溫度數(shù)據(jù)。


    DS18B20的內(nèi)部有64位的ROM單元和9字節(jié)的RAM單元。64位的ROM包含了DS18B20唯一的序列號,因此DS18B20支持多點(diǎn)組網(wǎng)功能,多至階DS18B20可以同時(shí)存在一條總線上,實(shí)現(xiàn)多點(diǎn)測溫,由ROM讀取操作來判斷選擇某點(diǎn)的DS18B20溫度數(shù)據(jù)。在9字節(jié)RAM單元中,字節(jié)0-1是溫度寄存器,用來保存轉(zhuǎn)換好的溫度,共16bits。其中,bit0-bit7為LSB,分別保存權(quán)值為2-4至23的數(shù)據(jù);bit8-bit15為MSB,bit8-bit10保存權(quán)值為24至26的數(shù)據(jù),bit11-bit15為符號位,DS18B20的分辨率為0.0625,溫度計(jì)算公式為:temperature=(MSB+LSB)×256x0.062。DS18 B20內(nèi)部還有2個(gè)E2PROM字節(jié)TH和TL,用于配置溫度最高界限和溫度最低界限,用戶通過設(shè)置這2個(gè)寄存器的值可以設(shè)定溫度報(bào)警的上下限。
3.2 單片機(jī)控制系統(tǒng)
   
單片機(jī)控制系統(tǒng)使用Atmel公司的ATMega16L芯片作為主控芯片,實(shí)現(xiàn)溫度數(shù)據(jù)的采集、串行數(shù)據(jù)的發(fā)送與接收,以及根據(jù)上位機(jī)的設(shè)定溫度和當(dāng)前溫度比對結(jié)果做出加熱或降溫響應(yīng)。數(shù)據(jù)傳輸和溫度信號采集部分的主要程序如下。
    1 UART數(shù)據(jù)接收模塊

    利用單片機(jī)內(nèi)部自帶的接收中斷來完成數(shù)據(jù)接收模塊。在此之前,需要對UART寄存器進(jìn)行如下配置:異步模式、8位數(shù)據(jù)位、無校驗(yàn)位、1位停止位。波特率設(shè)置函數(shù)為:UBRRL=(CRYSTAL/BAUD/16-1)%256和UBRRH=(CRYSTAL/BAUD/16-1)/256。
    2 UART數(shù)據(jù)發(fā)送模塊

    當(dāng)系統(tǒng)調(diào)用字符發(fā)送函數(shù)時(shí),會先判斷發(fā)送寄存器是否為空,如果為空,則函數(shù)會向UART的I/O數(shù)據(jù)寄存器UDR寫入待發(fā)送的字符,格式為char型(8bits)。單片機(jī)接收到來自DS18B20的溫度數(shù)據(jù),分別取出溫度的整數(shù)位和小數(shù)位,添加小數(shù)點(diǎn)后,將所有的整數(shù)位和小數(shù)點(diǎn)后兩位數(shù)據(jù)發(fā)送給UART。溫度數(shù)據(jù)以字符數(shù)組的形式保存,因此發(fā)送時(shí)以字符串的形式發(fā)送數(shù)據(jù)。
    3.DS18B20溫度數(shù)據(jù)接收模塊
[!--empirenews.page--]
    完成對DS18B20的報(bào)警溫度的設(shè)置和當(dāng)前溫度的讀取。單片機(jī)與DS18B20的通訊,一般需要經(jīng)過3個(gè)步驟:(1)DS18B20復(fù)位;(2)執(zhí)行ROM指令,對于總線上掛接多個(gè)DS18B20的情況,通過讀取ROM里的序列號來匹配某個(gè)DS18B20,否則可以直接跳過ROM指令(0XCC);(3)執(zhí)行DS18B20功能指令(RAM指令)。DS18B20有2個(gè)常用的功能指令:0x44:開始轉(zhuǎn)換溫度,轉(zhuǎn)換好的溫度會儲存在暫存器字節(jié)0和1;最小頻率不得小于750ms。0xBE:讀RAM指令,依次讀取RAM的9個(gè)字節(jié)的數(shù)據(jù)。DS18B20復(fù)位可以終止此進(jìn)程。

4 上位機(jī)GUI監(jiān)控模塊
   
該模塊是基于WINDOWS系統(tǒng)開發(fā)的上位機(jī)程序,通過系統(tǒng)預(yù)設(shè)的API函數(shù)與主機(jī)RS232底層端口進(jìn)行通訊和捕獲用戶輸入。用戶可以通過用戶UI界面自行設(shè)定預(yù)設(shè)溫度值,通過主機(jī)RS232端口發(fā)送至ZigBee模塊;ZigBee模塊將接收來自ROUTE終端節(jié)點(diǎn)的溫度信息,并反饋至上位機(jī)程序。用戶界面的設(shè)計(jì)采用跨平臺的圖形用戶界面應(yīng)用程序QT軟件,采用第三方開源qextsertalport類,對串口進(jìn)行讀寫操作。在WINDOWS下,需要使用其中的6個(gè)文件:qextserialbase.cpp和qextserialbase.h,qextserialport.cpp和qextserialport.h,win qextserialpo rt.cpp和win qextserialport.h定義的API接口函數(shù),具體如下。
4.1 建立串口
    serialPort=new ManageSedalPort;
    connect(serialPort,SIGNAL(newDataReeeived(const QByteArray&)),this,SLOT(slot_new DataReceived(const QByteArray&)));
    基于ManageSerialPort類新建一個(gè)串口對象serialPort,包含對串口名、波特率、數(shù)據(jù)位、起始位、停止位、校驗(yàn)位等變量的定義以及設(shè)定這些變量的相關(guān)函數(shù)。第二條語句是一個(gè)信號連接槽的函數(shù),將serialPort的信號SIGNAL與槽SLOT相連接,在這種情況下,每當(dāng)發(fā)送這個(gè)信號的時(shí)候,就會自動調(diào)用這個(gè)槽。
4.2 打開串口

    包括了對串口常用參數(shù):串口名、波特率、數(shù)據(jù)位、起始位、停止位、發(fā)送接收使能等的設(shè)置。
4.3 發(fā)送數(shù)據(jù)
    serialPort->scndData(temp);
    調(diào)用對象sendData,將變量temp的數(shù)據(jù)通過串口RS232發(fā)送。通過返回值來指示發(fā)送狀態(tài):1表示數(shù)據(jù)發(fā)送成功;2表示未打開串口;3表示發(fā)送使能但無發(fā)送數(shù)據(jù)。主要用于發(fā)送預(yù)設(shè)溫度值,UI界面接收到用戶設(shè)定的預(yù)設(shè)溫度后,將其保存,并在用戶按下發(fā)送按鈕后,將數(shù)據(jù)通過RS232串口發(fā)送給ZigBee模塊。
4.4 接收數(shù)據(jù)
    QString decodedStr=in.readAll();
    這里rcadAll()函數(shù)是使用在槽slot_new DataReceived(const QByteArray&dataReeeived)中負(fù)責(zé)對數(shù)據(jù)接收的操作函數(shù),由于之前在串口定義時(shí),已經(jīng)將信號與槽函數(shù)關(guān)聯(lián),因此,當(dāng)串口緩沖區(qū)有數(shù)據(jù)時(shí),會自動調(diào)用此槽函數(shù),進(jìn)行讀串口操作,并通過readAll()函數(shù)讀取串口緩沖區(qū)數(shù)據(jù)(即來自單片機(jī)DS18B20的溫度數(shù)據(jù)),給臨時(shí)變量decodeStr。
4.5 串口關(guān)閉操作
    serialPort->close(); -調(diào)用close()子函數(shù)關(guān)閉串口對象
    設(shè)計(jì)后的用戶UI界面如圖5所示,左部分為通信串口的設(shè)置,串口和波特率均可調(diào)整,默認(rèn)使用COM1、38400波特率;中部為系統(tǒng)預(yù)設(shè)溫度;右部為系統(tǒng)數(shù)據(jù)返回,當(dāng)接收到來自串口的溫度數(shù)據(jù)后,歡迎界面將顯示系統(tǒng)當(dāng)前溫度。

5 結(jié)語
   
基于ZigBee模塊設(shè)計(jì)的無線溫度監(jiān)控系統(tǒng),具有ZigBee技術(shù)的低復(fù)雜度、低功耗、低成本等優(yōu)點(diǎn),同時(shí)由于ZigBee模塊的高集成化,用戶不需要了解復(fù)雜的ZigBee協(xié)議,所有的ZigBee協(xié)議的處理部分,在ZigBee模塊內(nèi)部自動完成,用戶只需要通過串口傳輸數(shù)據(jù)即可,研發(fā)周期短,滿足了產(chǎn)品快速入市,適應(yīng)市場快速變化的需求,通過分置在多個(gè)地點(diǎn)的ZigBee溫度采集模塊,可以方便的實(shí)現(xiàn)多點(diǎn)分布式溫度信號的采集。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉