基于ZigBee的無(wú)線溫度監(jiān)控系統(tǒng)的設(shè)計(jì)
完成對(duì)DS18B20的報(bào)警溫度的設(shè)置和當(dāng)前溫度的讀取。單片機(jī)與DS18B20的通訊,一般需要經(jīng)過(guò)3個(gè)步驟:(1)DS18B20復(fù)位;(2)執(zhí)行ROM指令,對(duì)于總線上掛接多個(gè)DS18B20的情況,通過(guò)讀取ROM里的序列號(hào)來(lái)匹配某個(gè)DS18B20,否則可以直接跳過(guò)ROM指令(0XCC);(3)執(zhí)行DS18B20功能指令(RAM指令)。DS18B20有2個(gè)常用的功能指令:0x44:開(kāi)始轉(zhuǎn)換溫度,轉(zhuǎn)換好的溫度會(huì)儲(chǔ)存在暫存器字節(jié)0和1;最小頻率不得小于750ms。0xBE:讀RAM指令,依次讀取RAM的9個(gè)字節(jié)的數(shù)據(jù)。DS18B20復(fù)位可以終止此進(jìn)程。
4 上位機(jī)GUI監(jiān)控模塊
該模塊是基于WINDOWS系統(tǒng)開(kāi)發(fā)的上位機(jī)程序,通過(guò)系統(tǒng)預(yù)設(shè)的API函數(shù)與主機(jī)RS232底層端口進(jìn)行通訊和捕獲用戶輸入。用戶可以通過(guò)用戶UI界面自行設(shè)定預(yù)設(shè)溫度值,通過(guò)主機(jī)RS232端口發(fā)送至ZigBee模塊;ZigBee模塊將接收來(lái)自ROUTE終端節(jié)點(diǎn)的溫度信息,并反饋至上位機(jī)程序。用戶界面的設(shè)計(jì)采用跨平臺(tái)的圖形用戶界面應(yīng)用程序QT軟件,采用第三方開(kāi)源qextsertalport類,對(duì)串口進(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è)串口對(duì)象serialPort,包含對(duì)串口名、波特率、數(shù)據(jù)位、起始位、停止位、校驗(yàn)位等變量的定義以及設(shè)定這些變量的相關(guān)函數(shù)。第二條語(yǔ)句是一個(gè)信號(hào)連接槽的函數(shù),將serialPort的信號(hào)SIGNAL與槽SLOT相連接,在這種情況下,每當(dāng)發(fā)送這個(gè)信號(hào)的時(shí)候,就會(huì)自動(dòng)調(diào)用這個(gè)槽。
4.2 打開(kāi)串口
包括了對(duì)串口常用參數(shù):串口名、波特率、數(shù)據(jù)位、起始位、停止位、發(fā)送接收使能等的設(shè)置。
4.3 發(fā)送數(shù)據(jù)
serialPort->scndData(temp);
調(diào)用對(duì)象sendData,將變量temp的數(shù)據(jù)通過(guò)串口RS232發(fā)送。通過(guò)返回值來(lái)指示發(fā)送狀態(tài):1表示數(shù)據(jù)發(fā)送成功;2表示未打開(kāi)串口;3表示發(fā)送使能但無(wú)發(fā)送數(shù)據(jù)。主要用于發(fā)送預(yù)設(shè)溫度值,UI界面接收到用戶設(shè)定的預(yù)設(shè)溫度后,將其保存,并在用戶按下發(fā)送按鈕后,將數(shù)據(jù)通過(guò)RS232串口發(fā)送給ZigBee模塊。
4.4 接收數(shù)據(jù)
QString decodedStr=in.readAll();
這里rcadAll()函數(shù)是使用在槽slot_new DataReceived(const QByteArraydataReeeived)中負(fù)責(zé)對(duì)數(shù)據(jù)接收的操作函數(shù),由于之前在串口定義時(shí),已經(jīng)將信號(hào)與槽函數(shù)關(guān)聯(lián),因此,當(dāng)串口緩沖區(qū)有數(shù)據(jù)時(shí),會(huì)自動(dòng)調(diào)用此槽函數(shù),進(jìn)行讀串口操作,并通過(guò)readAll()函數(shù)讀取串口緩沖區(qū)數(shù)據(jù)(即來(lái)自單片機(jī)DS18B20的溫度數(shù)據(jù)),給臨時(shí)變量decodeStr。
4.5 串口關(guān)閉操作
serialPort->close(); -調(diào)用close()子函數(shù)關(guān)閉串口對(duì)象
設(shè)計(jì)后的用戶UI界面如圖5所示,左部分為通信串口的設(shè)置,串口和波特率均可調(diào)整,默認(rèn)使用COM1、38400波特率;中部為系統(tǒng)預(yù)設(shè)溫度;右部為系統(tǒng)數(shù)據(jù)返回,當(dāng)接收到來(lái)自串口的溫度數(shù)據(jù)后,歡迎界面將顯示系統(tǒng)當(dāng)前溫度。
5 結(jié)語(yǔ)
基于ZigBee模塊設(shè)計(jì)的無(wú)線溫度監(jiān)控系統(tǒng),具有ZigBee技術(shù)的低復(fù)雜度、低功耗、低成本等優(yōu)點(diǎn),同時(shí)由于ZigBee模塊的高集成化,用戶不需要了解復(fù)雜的ZigBee協(xié)議,所有的ZigBee協(xié)議的處理部分,在ZigBee模塊內(nèi)部自動(dòng)完成,用戶只需要通過(guò)串口傳輸數(shù)據(jù)即可,研發(fā)周期短,滿足了產(chǎn)品快速入市,適應(yīng)市場(chǎng)快速變化的需求,通過(guò)分置在多個(gè)地點(diǎn)的ZigBee溫度采集模塊,可以方便的實(shí)現(xiàn)多點(diǎn)分布式溫度信號(hào)的采集。本文引用地址:http://www.ex-cimer.com/article/153600.htm
評(píng)論