国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Arduino的XBee與Yeelink結(jié)合的溫濕度監(jiān)控網(wǎng)絡(luò)的搭建

2017-04-10 00:28李曠琦黃梓釗蔡志崗
現(xiàn)代電子技術(shù) 2017年6期

李曠琦 黃梓釗 蔡志崗

摘 要:以Arduino為開發(fā)平臺,借助XBee模塊完成ZigBee局域網(wǎng)組網(wǎng),利用Yeelink互聯(lián)網(wǎng)開放平臺搭建了一個遠(yuǎn)程溫濕度監(jiān)控系統(tǒng)。系統(tǒng)以Arduino UNO為控制板,在局域網(wǎng)內(nèi)利用XBee模塊無線傳輸溫濕度傳感器所采集的數(shù)據(jù),以W5100以太網(wǎng)模塊作為ZigBee無線網(wǎng)絡(luò)網(wǎng)關(guān),實(shí)現(xiàn)數(shù)據(jù)從ZigBee網(wǎng)絡(luò)向互聯(lián)網(wǎng)傳輸。該系統(tǒng)可以實(shí)現(xiàn)對溫度、濕度等數(shù)據(jù)的實(shí)時采集;通過互聯(lián)網(wǎng)訪問Yeelink可以獲取信息,進(jìn)行在線監(jiān)測;在數(shù)據(jù)監(jiān)測出現(xiàn)異常情況時通過Yeelink向終端發(fā)出報(bào)警信息,使終端蜂鳴器發(fā)出聲響,從而提醒周圍人,達(dá)到報(bào)警效果,實(shí)現(xiàn)系統(tǒng)的遠(yuǎn)程實(shí)時監(jiān)控。

關(guān)鍵詞: Arduino; ZigBee; Yeelink; 溫濕度監(jiān)控

中圖分類號: TN711?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2017)06?0140?04

Abstract: A remote temperature and humidity monitoring system was constructed with Yeelink Internet open platform, which takes Arduino as the development platform, and performs the networking of the ZigBee local area network (LAN) by means of the XBee module. This system takes the Arduino UNO as the control panel, uses the XBee module in LAN to transmit the data acquired by the temperature and humidity sensors wirelessly, and employs the Ethernet module W5100 as the ZigBee wireless network gateway to transmit the data from ZigBee network to the Internet. The system can realize the real?time acquisition of temperature and humidity data. The information is acquired by accessing the Yeelink through Internet to execute on?line monitoring. If the abnormal situation of data monitoring occurs, the system sends the alarm information to the terminal through Yeelink, and makes the terminal buzzer send out the sound to remind the people around, which can realize the alarm effect and remote real?time monitoring of the system.

Keywords: Arduino; ZigBee; Yeelink; temperature and humidity monitoring

0 引 言

無線傳感網(wǎng)絡(luò)(Wireless Sensor Network,WSN)由大量的傳感器借助一定的無線網(wǎng)絡(luò)協(xié)議組成,能在一定區(qū)域內(nèi)采集、傳輸、存儲和處理相應(yīng)的感知信息[1]。

無線傳感網(wǎng)絡(luò)的研究與應(yīng)用中,Arduino作為一款基于單片機(jī)并且代碼開源的硬件平臺,十分適合用于低成本無線傳感網(wǎng)的終端控制;ZigBee是由ZigBee聯(lián)盟制定的一種可工作在2.4 GHz,868 MHz,915 MHz三個頻段上無線自組網(wǎng)技術(shù)標(biāo)準(zhǔn)[2],適用于通信數(shù)據(jù)傳輸速率要求低、距離短、低功耗的使用場合,因此在傳感器網(wǎng)絡(luò)中應(yīng)用非常廣泛;Yeelink是國內(nèi)一個對個人用戶免費(fèi)開放的物聯(lián)網(wǎng)云平臺,能借助互聯(lián)網(wǎng)的優(yōu)勢,實(shí)現(xiàn)傳感器數(shù)據(jù)儲存、查看、操作等云功能。

本文使用Yeelink作為傳感網(wǎng)絡(luò)云服務(wù)器,通過傳感器采集數(shù)據(jù),借助ZigBee進(jìn)行局域網(wǎng)內(nèi)的無線傳輸,最后借助以太網(wǎng)模塊,實(shí)現(xiàn)數(shù)據(jù)向Yeelink的上傳,完成濕度監(jiān)控系統(tǒng)的搭建。該監(jiān)測系統(tǒng),可以實(shí)現(xiàn)環(huán)境遠(yuǎn)程監(jiān)控,遇到特殊情況可以遠(yuǎn)程操控,發(fā)出報(bào)警,有利于財(cái)產(chǎn)保護(hù)、日常監(jiān)管、突發(fā)情況預(yù)警等。

1 系統(tǒng)框架

本文設(shè)計(jì)和搭建的無線傳感探測系統(tǒng),由多個終端對應(yīng)一個協(xié)調(diào)器組成的ZigBee無線傳感網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)采集,以協(xié)調(diào)器作為局域網(wǎng)網(wǎng)關(guān),Yeelink作為互聯(lián)網(wǎng)端的數(shù)據(jù)存儲與監(jiān)控平臺[3],實(shí)現(xiàn)數(shù)據(jù)從實(shí)驗(yàn)室采集到互聯(lián)網(wǎng)的上傳與監(jiān)控。用戶通過電腦或移動終端登錄Yeelink,獲取相應(yīng)的數(shù)據(jù)信息,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。具體來說,ZigBee網(wǎng)絡(luò)采用星形拓?fù)洌蓛蓚€終端A和B加上一個協(xié)調(diào)器構(gòu)成。終端A探測溫度,終端B用作濕度探測,兩個終端采集相應(yīng)的數(shù)據(jù)經(jīng)過ZigBee無線網(wǎng),傳遞至協(xié)調(diào)器端,協(xié)調(diào)器端利用W5100以太網(wǎng)模塊與路由器相連,利用互聯(lián)網(wǎng),將數(shù)據(jù)傳送到Y(jié)eelink進(jìn)行存儲。

當(dāng)用戶在遠(yuǎn)程觀測到數(shù)據(jù)出現(xiàn)異常時,可通過Yeelink開關(guān)控制功能向終端發(fā)出報(bào)警信息,報(bào)警信息通過互聯(lián)網(wǎng)傳遞給協(xié)調(diào)器端,再經(jīng)過ZigBee發(fā)送給終端,終端在接收報(bào)警信息后,驅(qū)動蜂鳴器工作,發(fā)出報(bào)警。系統(tǒng)的具體功能圖如圖1所示。

2 硬件設(shè)計(jì)

本文系統(tǒng)采用Arduino UNO,核心處理器為ATmega328,具有14路數(shù)字輸入/輸出口(其中6路可作為PWM輸出),6路模擬輸入,一個16 MHz晶體振蕩器,一個USB口,一個電源插座,一個ICSP header和一個復(fù)位按鈕。同時UNO預(yù)置了Bootloader程序,不需要其他外部燒寫器,可直接通過USB下載程序[4]。

溫度傳感器:LM35系列溫度傳感器,其輸出的電壓線性地與攝氏溫度成正比,輸出電壓與攝氏溫度一一對應(yīng)。其工作電壓范圍4~30 V靈敏度為 10.0 mV/℃,精度在 0.4~0.8 ℃(-55~150 ℃溫度范圍內(nèi)),重復(fù)性好,低輸出阻抗,可單電源和正負(fù)電源工作。

濕度傳感器:DHT11 數(shù)字溫濕度傳感器,其相應(yīng)的技術(shù)參數(shù)為:DC 3.3~5.5 V的供電電壓;濕度方面,20~90%RH的濕度測量范圍,5%RH的測量精度以及1%RH的濕度分辨率。

蜂鳴器:電磁式蜂鳴器,由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。其接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性振動發(fā)聲。

ZigBee模塊:XBee S2模塊,工作頻段2.4 GHz,采用802.15.4協(xié)議棧,通過串口與Arduino間進(jìn)行通信,支持點(diǎn)對點(diǎn)通信以及點(diǎn)對多點(diǎn)網(wǎng)絡(luò)。其基本的參數(shù)為:工作電壓3.3 V,電流50 mA,最大通信速率250 KB/s,功耗1 mW 輸出(0 dBm),通信距離可達(dá)100 m。

以太網(wǎng)模塊:W5100以太網(wǎng)模塊,采用堆疊式設(shè)計(jì),直接插到Arduino上,可組成簡單Web服務(wù)器或者利用網(wǎng)絡(luò)控制讀寫Arduino的接口數(shù)據(jù)。

完成以上硬件設(shè)備的物理連接,采用C語言編程,通過Arduino基礎(chǔ)開發(fā)環(huán)境內(nèi)集成的GCC開源編譯器將C語言編譯成二進(jìn)制文件并通過USB端口,寫入Arduino平臺[5],實(shí)現(xiàn)Arduino控制的工作流程,完成系統(tǒng)搭建。

3 工作流程與代碼

系統(tǒng)主要由終端、協(xié)調(diào)器端、Yeelink服務(wù)器端三部分構(gòu)成,分別完成傳感數(shù)據(jù)的采集、傳感網(wǎng)絡(luò)的組建以及數(shù)據(jù)的傳輸、數(shù)據(jù)的云端存儲等功能。根據(jù)終端、協(xié)調(diào)器端的功能設(shè)計(jì),寫入相應(yīng)的Arduino代碼,并對Yeelink服務(wù)器端進(jìn)行設(shè)置,從而實(shí)現(xiàn)整個系統(tǒng)的邏輯功能。

Arduino的代碼編寫有著固定的流程和規(guī)范,每個程序只有一個setup( ),一個loop( )。當(dāng)setup( )函數(shù)執(zhí)行完后,就會循環(huán)執(zhí)行l(wèi)oop( )函數(shù)內(nèi)的代碼[6]。因此Arduino的代碼實(shí)現(xiàn)中,setup( )函數(shù)主要完成相應(yīng)的初始化工作,而loop( )函數(shù)內(nèi)完成相應(yīng)的功能。

3.1 終 端

終端主要功能是采集傳感數(shù)據(jù),并利用XBee模塊透明傳輸模式(Transparenet Operation),直接替換控制系統(tǒng)中串口間的傳輸導(dǎo)線,實(shí)現(xiàn)無線數(shù)據(jù)傳輸[7],將傳感器數(shù)據(jù)發(fā)送至協(xié)調(diào)器;同時監(jiān)聽和接收協(xié)調(diào)器的報(bào)警信息,驅(qū)動蜂鳴器,實(shí)現(xiàn)報(bào)警功能,其工作流程圖見圖2。

對于終端的XBee模塊,首先要通過X?CTU軟件進(jìn)行相應(yīng)的配置,包括個人局域網(wǎng)ID,即PAN ID的配置,接著配置目標(biāo)地址的高低位。每塊XBee無線模塊的背面都有一個64位序列號地址,地址高位部分0013A200,它屬于DIGI預(yù)先分配的地址空間,而每塊模塊地址的地位部分都是惟一的。XBee模塊間的相互通信是根據(jù)其對應(yīng)節(jié)點(diǎn)的序列號地址來進(jìn)行的[8]。

XBee模塊配置完成后,連接傳感器和Arduino可以實(shí)現(xiàn)溫濕度的探測。終端在進(jìn)行數(shù)據(jù)探測的同時,監(jiān)聽來自協(xié)調(diào)器端的信息,沒有報(bào)警信息時,與蜂鳴器相連的管腳輸出低電平,當(dāng)接收到報(bào)警信息時,使與蜂鳴器相連的管腳輸出高電平,從而發(fā)出報(bào)警。其代碼如下:

if(Serial.available() >0 //判斷是否有來自協(xié)調(diào)器端的信息

recv=Serial.read(); //接收字符的讀取

digitalWrite(warning,HIGH);//輸出高電平,蜂鳴器發(fā)聲報(bào)警

delay(1 000); //延遲1 s

}

}

3.2 協(xié)調(diào)器端

協(xié)調(diào)器的主要功能是接收來自ZigBee局域網(wǎng)的傳感數(shù)據(jù)并將其傳至Yeelink,監(jiān)聽來自互聯(lián)網(wǎng)端的報(bào)警信息,若有報(bào)警操作,將此消息通過ZigBee發(fā)送至對應(yīng)終端,其工作流程如圖3所示。

協(xié)調(diào)器作為局域網(wǎng)的網(wǎng)關(guān),通過廣播的形式向局域網(wǎng)內(nèi)所有終端設(shè)備節(jié)點(diǎn)發(fā)送信息,因此X?CTU會將其目標(biāo)地址默認(rèn)地設(shè)置為廣播地址。在ZigBee協(xié)議初始化后,協(xié)調(diào)器通過向周圍結(jié)點(diǎn)發(fā)送廣播信標(biāo)幀以尋求設(shè)備同步,終端結(jié)點(diǎn)收到協(xié)調(diào)器廣播幀時,得到協(xié)調(diào)器的地址和信道,通過此信息便可申請加入網(wǎng)絡(luò)[9],完成系統(tǒng)組網(wǎng)。系統(tǒng)組網(wǎng)完成后,將實(shí)現(xiàn)數(shù)據(jù)在ZigBee局域網(wǎng)內(nèi)數(shù)據(jù)的傳輸。實(shí)現(xiàn)協(xié)調(diào)器接收終端傳感器數(shù)據(jù)的功能部分代碼如下:

if(Serial.available() >0){ //判斷是否有來自終端的數(shù)據(jù)信息

recv=Serial.read(); //接收的第1個字符讀取

if(recv == ′B′) { //判斷是否為B端的信息

Serial.println("the data of B is received "); //提示字符

int a1= Serial.read(); //接收的第1個字符讀取

int a2= Serial.read(); //接收的第2個字符讀取

a3=a1*10+a2-528;

//利用ASCII碼與十進(jìn)制碼對應(yīng)數(shù)字相差48將兩次接收到的數(shù)據(jù)重新組合成接收的數(shù)據(jù)

}

W5100以太網(wǎng)模塊與Yeelink服務(wù)器通過DHCP協(xié)議進(jìn)行初始化建立聯(lián)系。DHCP協(xié)議采用客戶端/服務(wù)器模型,主機(jī)地址的動態(tài)分配任務(wù)由網(wǎng)絡(luò)主機(jī)驅(qū)動。當(dāng)設(shè)備登陸網(wǎng)絡(luò)時,服務(wù)器會向客戶端發(fā)送包含分配的IP地址、子網(wǎng)掩碼、DNS服務(wù)器和網(wǎng)關(guān)等信息的數(shù)據(jù)包,實(shí)現(xiàn)IP地址信息的動態(tài)配置[10]。

協(xié)調(diào)器成功連接服務(wù)器后,將傳感數(shù)據(jù)進(jìn)一步傳輸至服務(wù)器。函數(shù)sendData(),利用HTTP協(xié)議,實(shí)現(xiàn)傳感數(shù)據(jù)向服務(wù)器上傳的功能:

void sendData(intthisData,int flag) {

//如果連接成功,利用80端口

if (client.connect(server, 80)) { //發(fā)送HTTP POST請求

intthisLength = 10 + getLength(thisData);

client.println(thisLength); //計(jì)算傳感器數(shù)據(jù)長度

client.print(thisData);

}

函數(shù)getData(),監(jiān)聽并獲取用戶通過Yeelink發(fā)送的報(bào)警信息:

voidgetData(int flag) {

if (client.connect(server, 80)) { //發(fā)送GET請求

client.print(SENSORIDS[flag]);

//通過flag來獲取不同開關(guān)信息

}

以上函數(shù)發(fā)送POST請求和GET請求來上傳數(shù)據(jù)和接收服務(wù)器的返回信息,從而完成對終端的控制。

if (returnValue.charAt(returnValue.length()-1) == ′1′)

else if(returnValue.charAt(returnValue.length()-1) == ′0′)

當(dāng)協(xié)調(diào)器監(jiān)聽到來自服務(wù)器端的開關(guān)狀態(tài)值為1時,說明用戶發(fā)出了報(bào)警信息,則向終端發(fā)送報(bào)警信息,而監(jiān)聽到開關(guān)狀態(tài)值為0時,說明狀態(tài)正常,不用發(fā)送報(bào)警信息。

3.3 Yeelink服務(wù)器端

Yeelink物聯(lián)網(wǎng)云平臺為用戶提供傳感器云服務(wù)。其通過實(shí)時數(shù)據(jù)處理,提供安全可靠的狀態(tài)監(jiān)控[11]。要使用Yeelink,需進(jìn)行注冊并創(chuàng)建相應(yīng)的傳感器設(shè)備,最后調(diào)用官方的API。API key用來授權(quán)對設(shè)備、傳感器的數(shù)據(jù)等操作。在Yeelink中創(chuàng)建一個設(shè)備,會產(chǎn)生一個URL,該URL的一個HTTP POST請求會為指定的傳感器創(chuàng)建一個新的數(shù)據(jù)點(diǎn),使用此API來為傳感器存儲歷史數(shù)據(jù)[12]。設(shè)置完成后,Yeelink服務(wù)器可以用作數(shù)據(jù)的云端存儲和遠(yuǎn)程訪問,再結(jié)合之前的傳感器、ZigBee組網(wǎng)以及協(xié)調(diào)器的功能,溫濕度監(jiān)控網(wǎng)絡(luò)的搭建基本完成。

4 系統(tǒng)工作的實(shí)際測試

給Arduino上電以后,A端探測溫度,B端檢測濕度,并將數(shù)據(jù)通過ZigBee進(jìn)行傳輸。協(xié)調(diào)器端數(shù)據(jù)上傳至Yeelink上。此時可以通過協(xié)調(diào)器端的串口監(jiān)視與Yeelink網(wǎng)頁查看傳感器工作情況以及數(shù)據(jù)的發(fā)送情況。系統(tǒng)實(shí)際測試過程中,Yeelink網(wǎng)頁上對應(yīng)顯示的數(shù)據(jù)如圖4所示。

經(jīng)測試,監(jiān)控系統(tǒng)所探測的溫度、濕度等傳感數(shù)據(jù)能夠順利上傳至Yeelink服務(wù)器上,系統(tǒng)的監(jiān)測功能正常實(shí)現(xiàn)。同樣,通過改變Yeelink上創(chuàng)建的報(bào)警開關(guān)狀態(tài),終端的蜂鳴器能根據(jù)開關(guān)狀態(tài)發(fā)出或者停止報(bào)警,其控制報(bào)警的功能能夠正常實(shí)現(xiàn)。

為了驗(yàn)證設(shè)備工作的穩(wěn)定性。給設(shè)備長時間供電并采集數(shù)據(jù),設(shè)備工作持續(xù)工作時,濕度曲線平穩(wěn),變化不大,濕度探測的功能基本正常,能連續(xù)長時間工作。和濕度設(shè)備一樣,溫度終端所測溫度變化與實(shí)際相符。溫度探測的功能正常。

5 結(jié) 語

本文工作以Arduino作為開發(fā)平臺,利用傳感器、以太網(wǎng)模塊、ZigBee無線模塊以及互聯(lián)網(wǎng)平臺Yeelink搭建了一個能夠探測環(huán)境溫濕度的監(jiān)控系統(tǒng)。實(shí)現(xiàn)了環(huán)境數(shù)據(jù)的采集及實(shí)時上傳。并且具有報(bào)警功能。通過該系統(tǒng),實(shí)現(xiàn)了系統(tǒng)對實(shí)驗(yàn)室長期監(jiān)測的功能。本文所搭建的系統(tǒng),采用分布式布局,重點(diǎn)解決了ZigBee無線網(wǎng)絡(luò)內(nèi)數(shù)據(jù)收發(fā)的編碼轉(zhuǎn)換以及多點(diǎn)通信過程中的識別判斷問題,可以進(jìn)行拓展,利用更多節(jié)點(diǎn)擴(kuò)大檢測范圍。系統(tǒng)將ZigBee無線網(wǎng)絡(luò)以及互聯(lián)網(wǎng)結(jié)合起來,在局域網(wǎng)內(nèi)利用ZigBee無線協(xié)議進(jìn)行傳輸,減小了采集布線對監(jiān)控環(huán)境本身的影響,增大了探測點(diǎn)設(shè)置的靈活性,而結(jié)合互聯(lián)網(wǎng),實(shí)現(xiàn)了遠(yuǎn)程監(jiān)控。最后,本系統(tǒng)實(shí)現(xiàn)具有數(shù)據(jù)的雙向流通,可實(shí)現(xiàn)對溫濕度查看以及遠(yuǎn)程報(bào)警的功能,增加了系統(tǒng)在監(jiān)控網(wǎng)絡(luò)中的實(shí)用性。

注:本文通訊作者為蔡志崗。

參考文獻(xiàn)

[1] AKYILDIZ I F. A survey on sensor network [J]. IEEE communications magazine, 2002, 40(8): 102?114.

[2] 王錦.無線網(wǎng)絡(luò)傳感器應(yīng)用綜述[J].中國科技縱橫,2013(9):45.

[3] 楊增汪,陳斯,顧明亮.基于XBee的無線振動信號檢測傳感器節(jié)點(diǎn)設(shè)計(jì)[J].煤炭技術(shù),2010,29(12):51?52.

[4] 王家兵,楊志群,吳洪明.Arduino高精度靜壓液位測量與控制系統(tǒng)[J].儀表技術(shù)與傳感器,2013(8):44?46.

[5] 何澤驊,劉國華.基于Arduino的數(shù)控穩(wěn)壓電源設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(20):63?65.

[6] SCHMIDT M. Arduino: a quick?start guide [M]. US: The Pragmatic Programmers, 2011.

[7] 朱志偉.XBee無線數(shù)傳模的應(yīng)用測試[J].電子制作,2014(3):42.

[8] TITUS J A.例說XBee無線模塊開發(fā)[M].北京:機(jī)械工業(yè)出版社,2014:3?8.

[9] 胡小俊,趙濟(jì)景.基于ZigBee?GPRS的土壤墑情檢測系統(tǒng)[J].現(xiàn)代電子技術(shù),2014,37(6):59?61.

[10] LEWIS W.思科網(wǎng)絡(luò)技術(shù)學(xué)院教程:網(wǎng)絡(luò)基礎(chǔ)知識[M].北京:人民郵電出版社,2009:57?58.

[11] 卞曉曉,方為建,李凡.基于Yeelink的遠(yuǎn)程室內(nèi)空氣檢測系統(tǒng)設(shè)計(jì)與開發(fā)[J].電腦編程技術(shù)與維護(hù),2015(10):26?27.

[12] 杜一騰,遲宗濤.基于Arduino與Yeelink平臺的實(shí)時環(huán)境監(jiān)測系統(tǒng)[J].技術(shù)縱橫,2014(10):27?28.

阿坝| 晋宁县| 门头沟区| 长丰县| 景宁| 个旧市| 林甸县| 新源县| 利川市| 奉贤区| 桐梓县| 凤城市| 郯城县| 察雅县| 科技| 铁力市| 榆树市| 项城市| 宁阳县| 缙云县| 黑河市| 大名县| 玉田县| 弥渡县| 丹寨县| 定安县| 沛县| 剑河县| 浙江省| 合作市| 浦县| 大庆市| 扶绥县| 房产| 寻乌县| 贺州市| 加查县| 阿合奇县| 来凤县| 内黄县| 鹿邑县|