• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于WebSocket協(xié)議的智能溫室測(cè)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

      2017-03-31 15:44:06盛平丁波
      軟件導(dǎo)刊 2016年8期
      關(guān)鍵詞:物聯(lián)網(wǎng)嵌入式

      盛平+丁波

      摘 要:針對(duì)智能溫室發(fā)展現(xiàn)狀,引入了跨平臺(tái)、易擴(kuò)展的思想,將WebSocket通信協(xié)議應(yīng)用到嵌入式設(shè)備通信中,結(jié)合嵌入式、Zigbee無(wú)線傳輸、傳感器采集等技術(shù),設(shè)計(jì)了一套基于WebSocket協(xié)議的智能溫室測(cè)控系統(tǒng)。一方面能夠簡(jiǎn)化系統(tǒng)開(kāi)發(fā)、克服傳統(tǒng)B/S架構(gòu)不能提供長(zhǎng)連接的TCP雙向通信和C/S架構(gòu)開(kāi)發(fā)周期長(zhǎng)、無(wú)法跨平臺(tái)等缺點(diǎn);另一方面,用戶可以實(shí)時(shí)查看溫室環(huán)境、設(shè)備運(yùn)行狀況以及實(shí)時(shí)控制情況等,并且能夠獲得實(shí)時(shí)溫室預(yù)警等推送。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)運(yùn)行穩(wěn)定、使用便捷,很好地滿足了溫室實(shí)時(shí)測(cè)控的功能需求。

      關(guān)鍵詞關(guān)鍵詞:智能溫室;物聯(lián)網(wǎng);WebSocket;嵌入式;實(shí)時(shí)測(cè)控

      DOIDOI:10.11907/rjdk.161620

      中圖分類號(hào):TP319

      文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2016)008-0065-04

      0 引言

      隨著物聯(lián)網(wǎng)技術(shù)的日益普及,各式物聯(lián)網(wǎng)產(chǎn)品應(yīng)用于衣食住行等各個(gè)領(lǐng)域,為人們的日常生活提供了極大便利。同樣,在智能農(nóng)業(yè)領(lǐng)域也廣泛地應(yīng)用了物聯(lián)網(wǎng)技術(shù),這些應(yīng)用使農(nóng)業(yè)種植變得更加簡(jiǎn)便、高效和科學(xué)。但目前這些應(yīng)用系統(tǒng)的整體通信架構(gòu)一般是基于C/S架構(gòu)或傳統(tǒng)B/S架構(gòu)設(shè)計(jì)的,基于C/S架構(gòu)的應(yīng)用系統(tǒng)具有系統(tǒng)設(shè)計(jì)復(fù)雜、開(kāi)發(fā)周期長(zhǎng)、無(wú)法跨平臺(tái)等缺陷;基于傳統(tǒng)B/S架構(gòu)的應(yīng)用系統(tǒng)雖然能夠跨平臺(tái),但它是基于HTTP協(xié)議進(jìn)行通信的,并不能提供一個(gè)長(zhǎng)連接的TCP雙向通信機(jī)制。而WebSocket作為HTML5的一種新協(xié)議日趨標(biāo)準(zhǔn)化,它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信,在生活中得到了廣泛應(yīng)用,如新浪微博的評(píng)論、私信通知和騰訊的WebQQ等。本文將該協(xié)議應(yīng)用到嵌入式應(yīng)用系統(tǒng)中,使嵌入式設(shè)備與服務(wù)器之間能夠基于WebSocket協(xié)議進(jìn)行通信,以克服傳統(tǒng)通信架構(gòu)的缺陷[1]。

      1 系統(tǒng)整體設(shè)計(jì)

      本文設(shè)計(jì)了一個(gè)基于WebSocket協(xié)議的智能溫室控制系統(tǒng),該智能溫室測(cè)控系統(tǒng)通過(guò)綜合管理系統(tǒng)實(shí)現(xiàn)溫室大棚的自動(dòng)監(jiān)測(cè),其中包括溫室內(nèi)溫濕度、光照度、溫室通風(fēng)換氣系統(tǒng)等。如圖1所示,該系統(tǒng)總體分為環(huán)境感知層、物理控制層和應(yīng)用層3部分。

      (1) 在環(huán)境感知層,依靠一系列傳感器精準(zhǔn)采集溫室內(nèi)部和室外的環(huán)境數(shù)據(jù),通過(guò)Zigbee網(wǎng)絡(luò)傳輸給Zigbee中繼節(jié)點(diǎn),中繼節(jié)點(diǎn)再通過(guò)RS232/485接口傳輸給嵌入式計(jì)算機(jī)。

      (2) 在物理控制層,光耦繼電器通過(guò)RS232/485接口與嵌入式計(jì)算機(jī)連接,接收基于MODEBUS-RTU協(xié)議的控制指令,控制溫室設(shè)備控制柜內(nèi)的交流接觸器,進(jìn)而控制各個(gè)溫室設(shè)備(如濕簾風(fēng)機(jī)、水泵、遮陽(yáng)簾、環(huán)流風(fēng)機(jī)等)。

      (3) 在應(yīng)用層,主要分為嵌入式端應(yīng)用模塊、Web管理系統(tǒng)和服務(wù)器端應(yīng)用模塊。嵌入式端應(yīng)用模塊實(shí)現(xiàn)了基于WebSocket協(xié)議與服務(wù)器的通信、解析控制協(xié)議、上傳環(huán)境數(shù)據(jù)、自動(dòng)運(yùn)行等功能;Web管理系統(tǒng)實(shí)現(xiàn)了用戶通過(guò)瀏覽器實(shí)時(shí)管理溫室的功能;服務(wù)器端應(yīng)用模塊實(shí)現(xiàn)了WebSocket客戶端的連接請(qǐng)求、客戶端之間的通信以及數(shù)據(jù)的解析、存儲(chǔ)等。

      通過(guò)以上幾部分的相互協(xié)作實(shí)現(xiàn)了一個(gè)完整的智能溫室測(cè)控系統(tǒng),用戶可以通過(guò)手機(jī)、PC、Pad等設(shè)備的Web瀏覽器實(shí)時(shí)查看溫室的環(huán)境數(shù)據(jù)、設(shè)備運(yùn)行狀況和設(shè)置溫室運(yùn)行參數(shù)等。

      2 系統(tǒng)感知層

      系統(tǒng)感知層是整個(gè)系統(tǒng)的基礎(chǔ),其作用相當(dāng)于人的五官,主要包括兩部分:溫室內(nèi)部三合一傳感器和室外氣象站。系統(tǒng)感知層可通過(guò)兩部分的傳感器獲取更加精準(zhǔn)的溫室內(nèi)外環(huán)境狀況,以達(dá)到更有效地控制操作和進(jìn)行溫室種植研究的目的。

      另外,從簡(jiǎn)化安裝、便于維護(hù)等方面考慮,本系統(tǒng)采用Zigbee無(wú)線技術(shù),將采集的環(huán)境數(shù)據(jù)集中傳輸?shù)角度胧接?jì)算機(jī)中。

      2.1 傳感器采集模塊

      該系統(tǒng)中的傳感器模塊[2,3]統(tǒng)一采用MODBUS-RTU通信協(xié)議[4],設(shè)備操作和回復(fù)都為16進(jìn)制數(shù)據(jù),默認(rèn)通信波特率為:9600,8,n,1,基本通信格式為:

      【設(shè)備地址】【功能碼】【起始地址:2字節(jié)】【數(shù)據(jù)長(zhǎng)度:2字節(jié)】【CRC16校驗(yàn)】

      傳感器讀取、解析和發(fā)送的實(shí)現(xiàn)流程如圖2所示。首先,創(chuàng)建一個(gè)線程,打開(kāi)指定串口(傳感器通過(guò)485網(wǎng)絡(luò)總線形式連接到串口)并監(jiān)聽(tīng)該串口,程序每隔60秒發(fā)送傳感器查詢指令,對(duì)監(jiān)聽(tīng)串口接收的傳感器反饋數(shù)據(jù)進(jìn)行數(shù)據(jù)解析;接下來(lái)判斷解析數(shù)據(jù)是否正常,如果不正常則丟棄,如果正常則存儲(chǔ)下來(lái)進(jìn)行CRC校驗(yàn);最后將CRC校驗(yàn)[5]后的數(shù)據(jù)發(fā)送到LED顯示器上進(jìn)行顯示。具體代碼實(shí)現(xiàn)如下:

      int pthread_create(&threadSensor,NULL,WriteSensor,NULL); //創(chuàng)建線程,并綁定傳感器讀取函數(shù)

      void *WriteSensor(); //傳感器讀取函數(shù),間隔60秒查詢傳感器

      int optOpen(int fd,int port); //打開(kāi)指定串口

      int optSet(int fd,int nSpeed,int nBits,char nEvent,int nStop); //設(shè)置串口的相應(yīng)參數(shù),如串口文件描述符、串口波特率、數(shù)據(jù)流控制、數(shù)據(jù)位、停止位和校驗(yàn)類型等

      int SelectRead(int fd,char rev[50],int length); //利用I/O select模型進(jìn)行串口讀取,將接收到的數(shù)據(jù)進(jìn)行解析,判斷數(shù)據(jù)是否正常[6]

      unsigned short CRC16(unsigned char *pushMsg,unsigned short usDataLen); //根據(jù)CRC16校驗(yàn)算法進(jìn)行CRC校驗(yàn)

      2.2 Zigbee通信模塊

      Zigbee節(jié)點(diǎn)數(shù)據(jù)采集系統(tǒng)主要由兩部分組成[7,8],分別為數(shù)據(jù)中心和數(shù)據(jù)采集設(shè)備。其數(shù)據(jù)中心為中心主站,連接用戶PC或嵌入式系統(tǒng),用于接收數(shù)據(jù);數(shù)據(jù)采集設(shè)備用于數(shù)據(jù)采集。如圖3所示,該系統(tǒng)中的Zigbee節(jié)點(diǎn)采用星型網(wǎng)組網(wǎng)形式,其數(shù)據(jù)通訊流程為:電腦(或嵌入式系統(tǒng))發(fā)送IO控制命令→中心主站→中繼路由→目標(biāo)采集設(shè)備→IO狀態(tài)響應(yīng)→中繼路由→中心主站→電腦(或嵌入式系統(tǒng))。

      3 系統(tǒng)控制層

      控制層模塊主要使用16路無(wú)源光耦繼電器,通過(guò)RS232/485串口與嵌入式計(jì)算機(jī)進(jìn)行通信。通信協(xié)議是標(biāo)準(zhǔn)的MODBUS-RTU協(xié)議。該繼電器工作模式為本機(jī)非鎖聯(lián)動(dòng)模式,在該模式下,輸入光耦與繼電器直接聯(lián)動(dòng),即:光耦輸入信號(hào)生效→對(duì)應(yīng)繼電器吸合;光耦輸入信號(hào)取消→對(duì)應(yīng)繼電器斷開(kāi)。通過(guò)該模式,確保了溫室設(shè)備的準(zhǔn)確運(yùn)行,并能獲取設(shè)備的實(shí)時(shí)運(yùn)行狀況。

      4 系統(tǒng)應(yīng)用層

      該系統(tǒng)軟件模塊主要分為3部分:嵌入式應(yīng)用模塊、Web管理系統(tǒng)和服務(wù)器端應(yīng)用模塊。

      4.1 嵌入式應(yīng)用模塊

      嵌入式應(yīng)用模塊主要實(shí)現(xiàn)基于WebSocket協(xié)議建立通信、指令解析和數(shù)據(jù)封裝、自動(dòng)運(yùn)行等功能,如圖4所示。

      為了實(shí)現(xiàn)嵌入式客戶端與服務(wù)器進(jìn)行WebSocket通信,該系統(tǒng)引用了開(kāi)源項(xiàng)目libwebsockets。libwebsockets是一個(gè)輕量級(jí)的純C庫(kù)建成的項(xiàng)目。通過(guò)libwebsockets提供的API與服務(wù)器進(jìn)行通信,并完成對(duì)接收數(shù)據(jù)的解析和上傳數(shù)據(jù)的封裝,具體實(shí)現(xiàn)代碼如下:

      struct lws* lws_client_connnect_via_info(struct lws_client_connect_info *i)

      //通過(guò)該函數(shù)創(chuàng)建一個(gè)到目的服務(wù)器的連接,形參i是指向結(jié)構(gòu)體lws_client_connect_info的指針

      callbackRecv(struct lws *wsi, enum lws_callback_reasons reason,void *user,void *in,size_t len); //通過(guò)自定義的回調(diào)函數(shù)接收來(lái)自服務(wù)器的消息

      4.2 Web管理系統(tǒng)

      由于本系統(tǒng)需要通過(guò)Web瀏覽器查看溫室的實(shí)時(shí)運(yùn)行狀況,比如當(dāng)前的光、溫、濕等環(huán)境數(shù)據(jù)、溫室內(nèi)設(shè)備的運(yùn)轉(zhuǎn)情況,并控制溫室內(nèi)相關(guān)設(shè)備等,對(duì)于該功能模塊的實(shí)現(xiàn),系統(tǒng)采用JavaScript[9]提供的WebSocket API完成與服務(wù)器的實(shí)時(shí)通信。首次訪問(wèn)該視圖時(shí)觸發(fā)JavaScript的onload函數(shù),判斷當(dāng)前瀏覽器是否支持WebSocket協(xié)議并創(chuàng)建WebSocket對(duì)象;當(dāng)WebSocket連接上后觸發(fā)調(diào)用onopen事件處理程序,從Seesion中獲取用戶名等信息并發(fā)送到WebSocket服務(wù)器進(jìn)行注冊(cè);接下來(lái)通過(guò)方法send和事件處理程序onmessage即可實(shí)現(xiàn)[10]雙通道通信。具體代碼實(shí)現(xiàn)如下:

      var ws=new WebSocket(“ws://xxx.xxx.xxx.xxx:9001”); //創(chuàng)建一個(gè)WebSocket實(shí)例

      ws.onpen=function(evt){ ws.send(); }; //為該實(shí)例綁定onopen事件

      ws.onerror = function(evt) { }; //為該實(shí)例綁定onerror事件

      ws.onmessage = function(evt) { }; //為該實(shí)例綁定onmessage事件,處理數(shù)據(jù)接收

      ws.onclose = function(evt) { }; //當(dāng)瀏覽器接收到服務(wù)器端發(fā)送的關(guān)閉連接請(qǐng)求時(shí),觸發(fā)onclose事件

      4.3 服務(wù)器端應(yīng)用模塊

      服務(wù)器端應(yīng)用模塊是基于.NET4.5 Freamwork[11,12],并引用SuperWebSocket開(kāi)源框架實(shí)現(xiàn)的,主要功能是接收WebSocket客戶端的連接,處理WebSocket客戶端之間的通信以及相關(guān)數(shù)據(jù)的存儲(chǔ),用于建立WebSocket監(jiān)聽(tīng)端口,以及客戶端連接、斷開(kāi)、信息接收等觸發(fā)事件,具體實(shí)現(xiàn)如下:

      protected override void Onstart(string[]args)

      {

      var ip=ConfigurationManager.AppSettings[“APWebSocketIP”];

      var port=ConfigurationManager.AppSettings[“APWebSocketPort”];

      server=new WebSocket(); //創(chuàng)建WebSocket對(duì)象

      if(!server.SetUp(ip,int.Parse(port))) //設(shè)置監(jiān)聽(tīng)端口,并啟動(dòng)服務(wù)器應(yīng)用

      return;

      server.NewSessionConnected+=server_NewSessionConnected; //新的會(huì)話連接

      server.SessionClosed+=server_SessionClosed; //會(huì)話斷開(kāi)

      server.NewMessageReceived+=server_NewMessageReceived; //接收到新信息

      }

      4.4 系統(tǒng)測(cè)試

      本系統(tǒng)測(cè)試主要是通過(guò)手機(jī)/Pad/PC瀏覽器查看溫室的實(shí)時(shí)運(yùn)行狀況,以及能否正??刂茰厥以O(shè)備并設(shè)置設(shè)備溫室運(yùn)行參數(shù)等。如圖5所示,通過(guò)手機(jī)瀏覽器登錄溫室Web管理系統(tǒng)進(jìn)行實(shí)時(shí)控制和查看。經(jīng)測(cè)試,本系統(tǒng)功能完備、運(yùn)行穩(wěn)定。

      5 結(jié)語(yǔ)

      本文通過(guò)分析傳統(tǒng)B/S和C/S應(yīng)用架構(gòu)的不足,并詳細(xì)研究了WebSocket協(xié)議的特性,設(shè)計(jì)了一套基于WebSocket協(xié)議的智能溫室測(cè)控系統(tǒng)。該系統(tǒng)將WebSocket協(xié)議應(yīng)用到嵌入式開(kāi)發(fā)中,實(shí)現(xiàn)了嵌入式設(shè)備與服務(wù)器的實(shí)時(shí)通信。用戶只需利用App/PC/Pad等設(shè)備的Web瀏覽器即能實(shí)時(shí)查看溫室設(shè)備狀況、控制溫室設(shè)備運(yùn)行并設(shè)定運(yùn)行參數(shù)等,達(dá)到了很好的跨平臺(tái)運(yùn)行效果,具有較高的應(yīng)用參考價(jià)值。

      參考文獻(xiàn):

      [1]李代立,陳榕.WebSocket在Web實(shí)時(shí)通信領(lǐng)域的研究[J].電腦知識(shí)與技術(shù),2010(10):7923-7925,7935.

      [2]趙秀珍,王乃釗,毛文華.光照度、空氣溫/濕度傳感器的研究和實(shí)驗(yàn)[J].中國(guó)儀器儀表,2002(1):29-31,36.

      [3]廖澤鑫.溫度傳感器的設(shè)計(jì)與研究[D].上海:復(fù)旦大學(xué),2012.

      [4]舒凱.基于MODBUS-RTU協(xié)議的PLC多路數(shù)據(jù)采集系統(tǒng)[J].水電自動(dòng)化與大壩監(jiān)測(cè),2008(2):66-69.

      [5]常曉明,潘衛(wèi)華,王建東.CRC校驗(yàn)及其軟件實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,1995(6):14-23.

      [6]陳文武.分布式鎖技術(shù)研究[D].廣州:華南理工大學(xué),2013.

      [7]王朝霞.ZigBee無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)硬件與組網(wǎng)協(xié)議設(shè)計(jì)[D].呼和浩特:內(nèi)蒙古大學(xué),2011.

      [8]穆嘉松.基于節(jié)點(diǎn)移動(dòng)性的ZigBee網(wǎng)絡(luò)自適應(yīng)路由策略研究[D].天津:天津大學(xué),2012.

      [9]鄭強(qiáng).Web服務(wù)器推送技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2013.

      [10]楊小嬌.輕量級(jí)高并發(fā)Web服務(wù)器的研究與實(shí)現(xiàn)[D].南京:南京郵電大學(xué),2014.

      [11]史建江,李世銀,黃興,等.基于ASP.NET的信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008(6):32-33,54.

      [12]余建華,蔡瑞英,方壽海.使用C#中線程同步、事件及異步委托機(jī)制實(shí)現(xiàn)定單模式[J].計(jì)算機(jī)應(yīng)用與軟件,2006(7):142-144.

      (責(zé)任編輯:黃 健)

      猜你喜歡
      物聯(lián)網(wǎng)嵌入式
      TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
      電子制作(2019年7期)2019-04-25 13:17:14
      嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
      電子制作(2018年18期)2018-11-14 01:48:16
      搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      基于物聯(lián)網(wǎng)的煤礦智能倉(cāng)儲(chǔ)與物流運(yùn)輸管理系統(tǒng)設(shè)計(jì)與應(yīng)用
      基于高職院校物聯(lián)網(wǎng)技術(shù)應(yīng)用人才培養(yǎng)的思考分析
      基于LABVIEW的溫室管理系統(tǒng)的研究與設(shè)計(jì)
      論智能油田的發(fā)展趨勢(shì)及必要性
      中國(guó)或成“物聯(lián)網(wǎng)”領(lǐng)軍者
      Altera加入嵌入式視覺(jué)聯(lián)盟
      祁连县| 淄博市| 乌拉特前旗| 内江市| 陇西县| 阜平县| 东光县| 盘山县| 天长市| 卫辉市| 陈巴尔虎旗| 台东市| 连南| 都匀市| 岳池县| 左贡县| 璧山县| 自贡市| 尉氏县| 铁岭市| 南投市| 师宗县| 孝昌县| 郯城县| 常州市| 乌鲁木齐县| 丁青县| 临汾市| 文山县| 齐齐哈尔市| 舒兰市| 荣昌县| 湖南省| 平谷区| 鄂尔多斯市| 铜川市| 静安区| 土默特右旗| 富阳市| 温州市| 右玉县|