色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于MD600G的Internet無線傳感器網(wǎng)絡(luò)設(shè)計(jì)

          基于MD600G的Internet無線傳感器網(wǎng)絡(luò)設(shè)計(jì)

          作者: 時(shí)間:2010-12-18 來源:網(wǎng)絡(luò) 收藏

            引言

            隨著微機(jī)電系統(tǒng)(MicroElectroMechanism System, MEMS)、片上系統(tǒng)(System on Chip,SoC)、無線通信和低功耗嵌入式技術(shù)的飛速發(fā)展,(Wireless Sensor Networks, WSN)也以其低功耗、低成本、分布式和自組織等特點(diǎn)帶來了信息感知的一場(chǎng)變革。由部署在監(jiān)測(cè)區(qū)域內(nèi)大量的廉價(jià)微型傳感器節(jié)點(diǎn)組成,通過無線通信方式形成一個(gè)多跳的自組織網(wǎng)絡(luò)。

            可連接眾多類型的傳感器,可探測(cè)包括地震波、電磁場(chǎng)、溫度、濕度、噪聲、光強(qiáng)度、壓力、土壤成分、移動(dòng)物體的大小和速度等?;?MEMS的微傳感技術(shù)和無線互聯(lián)網(wǎng)技術(shù)為無線傳感器網(wǎng)絡(luò)賦予了廣闊的應(yīng)用前景,在航空、反恐、防爆、救災(zāi)、環(huán)境、醫(yī)療、保健、家居、工業(yè)、商業(yè)等領(lǐng)域有廣泛的應(yīng)用。本文以無線和無線數(shù)據(jù)終端為例,介紹了基于的Internet無線傳感器網(wǎng)絡(luò)的設(shè)計(jì),并給出了對(duì)溫度數(shù)據(jù)的可視化處理等操作的實(shí)現(xiàn)。

            1 基于Internet的無線傳感器網(wǎng)原理

            1.1 簡(jiǎn)介

            智能無線數(shù)據(jù)終端MD600G可以用于數(shù)據(jù)中心和被監(jiān)控設(shè)備間,實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程透明傳輸。MD600G的內(nèi)部結(jié)構(gòu)如圖1所示,它有如下特點(diǎn):

          ①基于ARM平臺(tái)、8 MB數(shù)據(jù)緩存,內(nèi)置Siemens MC35i GPRS無線模塊;
          ②嵌入式Linux系統(tǒng),包含TCP/IP協(xié)議棧以及ETCPTM協(xié)議,保證傳輸數(shù)據(jù)不丟失;
          ③提供獨(dú)立RS232配置串口及標(biāo)準(zhǔn)RS232/485數(shù)據(jù)接口;
          ④符合電工電子產(chǎn)品低溫GB/T2423.1、高溫GB/T2423.2的要求,適于在氣候條件惡劣的地區(qū)及戶外使用;
          ⑤可以快速連接RTU、PLC、工控機(jī)等設(shè)備,實(shí)現(xiàn)數(shù)據(jù)透明傳輸,廣泛應(yīng)用于電力抄表、配電自動(dòng)化、路燈監(jiān)控、道路交通等行業(yè)。

          MD600G硬件結(jié)構(gòu)圖
          圖1 MD600G硬件結(jié)構(gòu)圖

            1.2 無線傳感器網(wǎng)絡(luò)

            由MD600G組成的基于Internet無線傳感器網(wǎng)絡(luò)原理圖如圖2所示。


          圖2 無線傳感器網(wǎng)絡(luò)結(jié)構(gòu)原理圖

            圖2中的用戶設(shè)備是自行開發(fā)的。傳感器節(jié)點(diǎn)采樣的數(shù)據(jù)通過RS232/485接口傳送到智能無線數(shù)據(jù)終端 MD600G,MD600G對(duì)接收到的數(shù)據(jù)通過GPRS與Internet連接并進(jìn)行無線數(shù)據(jù)透明傳送,服務(wù)器mSever端通過Internet網(wǎng)將接收到的數(shù)據(jù)生成實(shí)時(shí)數(shù)據(jù)庫(kù),同時(shí)將這些實(shí)時(shí)數(shù)據(jù)以WEB頁(yè)的形式動(dòng)態(tài)顯示和跟蹤。

            1.3

            溫度傳感器節(jié)點(diǎn)模塊主要由溫度傳感器DS18B20組成,并將其輸出的溫度數(shù)據(jù)送往單片機(jī),然后單片機(jī)將這些數(shù)據(jù)進(jìn)行相關(guān)處理,最后再送往后續(xù)的通信設(shè)備,并將溫度數(shù)據(jù)進(jìn)行數(shù)碼管或液晶屏顯示。這里采用了實(shí)時(shí)時(shí)鐘電路DS1302來實(shí)現(xiàn)該系統(tǒng)的實(shí)時(shí)性。

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

            基于MD600G和Internet的無線傳感器網(wǎng)的軟件包括溫度傳感器節(jié)點(diǎn)的軟件設(shè)計(jì)、MD600G與溫度傳感器節(jié)點(diǎn)的串口軟件設(shè)計(jì)、服務(wù)器mSever端與Internet網(wǎng)的數(shù)據(jù)通信軟件及mSever端溫度數(shù)據(jù)可視化程序的設(shè)計(jì)等。

            2.1 mSever端溫度數(shù)據(jù)可視化程序設(shè)計(jì)

            利用Visual C++強(qiáng)大的編譯器以及網(wǎng)絡(luò)與數(shù)據(jù)庫(kù)的處理能力,開發(fā)出基于Windows平臺(tái)的32位數(shù)據(jù)可視化應(yīng)用程序。圖3是mSever端溫度數(shù)據(jù)可視化程序設(shè)計(jì)的原理圖。

          可視化界面的設(shè)計(jì)原理圖
          圖3 可視化界面的設(shè)計(jì)原理圖

            以下為可視化界面模塊源碼:

          void CDemoView::OnInitialUpdate() {
          CView::OnInitialUpdate();
          CRect Rect;
          GetClientRect(Rect);
          m_Plot.Create(WS_CHILD|WS_VISIBLE,Rect,this,12000);
          m_Plot.SetSerie(0, PS_SOLID, RGB(255,0,0), 0.0, 40.0, "Temperature");//窗口
          m_Plot.SetLegend(0, PS_SOLID, RGB(255,0,0), "Temperature");//背景方框
          m_Plot.m_bAutoScrollX=TRUE;
          SetTimer(1,1000,NULL);//背景刷新時(shí)間
          canSize=TRUE;
          }

          void CDemoView::OnTimer(UINT nIDEvent) {
          static BOOL pros={FALSE};
          if(!pros) {
          pros=TRUE;
          CDemoDoc* pDoc="GetDocument"();
          ASSERT_VALID(pDoc);
          y=pDoc->p.buffer;
          m_Plot.AddPoint(0,CTime::GetCurrentTime(),y);
          Invalidate();
          pros=FALSE;
          }
          CView::OnTimer(nIDEvent);
          }
          void CDemoView::OnSize(UINT nType, int cx, int cy) {
          CView::OnSize(nType, cx, cy);
          if(canSize) {
          CRect Rect;
          GetClientRect(Rect);
          m_Plot.MoveWindow(Rect);
          }
          }
          void CDASocket::OnReceive(int nErrorCode) { //接收數(shù)據(jù)端的程序
          char buff[64];
          int ret="0";
          ret=Receive(buff,64);//AfxMessageBox("OK");
          if(ret==ERROR)
          {TRACE("ERROR!");}
          else
          m_pDoc->Presscessding(buff);
          CAsyncSocket::OnReceive(nErrorCode);
          }

            圖4是用Visual C++開發(fā)的mSever端溫度數(shù)據(jù)可視化顯示的界面,圖中顯示的是1個(gè)節(jié)點(diǎn)的溫度變化實(shí)時(shí)曲線。

          服務(wù)器mSever端溫度數(shù)據(jù)可視化顯示界面

          圖4 服務(wù)器mSever端溫度數(shù)據(jù)可視化顯示界面

            2.2 mSever端Web訪問程序設(shè)計(jì)

            為了實(shí)現(xiàn)多個(gè)客戶端可以同時(shí)訪問數(shù)據(jù)中心服務(wù)器,規(guī)定客戶端在打開服務(wù)器的Web頁(yè)面時(shí),首先提交客戶端的IP地址,然后服務(wù)器端把客戶端的 IP地址收錄入庫(kù),再將接收到的溫度數(shù)據(jù)轉(zhuǎn)發(fā)給指定的客戶端。因此,當(dāng)有多個(gè)客戶端同時(shí)訪問數(shù)據(jù)中心服務(wù)器時(shí),服務(wù)器端只需要將各個(gè)客戶端的IP地址收錄入庫(kù),最后再循環(huán)不斷地往各個(gè)客戶端轉(zhuǎn)發(fā)溫度數(shù)據(jù)即可。

            當(dāng)客戶端斷開與服務(wù)器端的連接時(shí),將向服務(wù)器提交斷開請(qǐng)求,從服務(wù)器端的IP地址庫(kù)中釋放掉該客戶端的IP地址,從而實(shí)現(xiàn)了服務(wù)器端IP地址庫(kù)的動(dòng)態(tài)更新。

            2.3 節(jié)點(diǎn)溫度采集軟件設(shè)計(jì)

            以下為溫度傳感器節(jié)點(diǎn)的溫度采集部分代碼:

          #include "Mini51B.h"http://Mini51板頭文件
          #include "LCD1602.h"http://液晶模塊頭文件
          #include "ds18b20.h"http://溫度傳感器頭文件
          #include "stdio.h"http://C標(biāo)準(zhǔn)函數(shù)庫(kù),系統(tǒng)集成
          #include "DS1302.h"
          #define uchar unsigned char
          uchar n,temp;
          uchar a[6]="000000"; //串口字符串
          SYSTEMTIME RTC;
          void main(void) {
          float V; //記錄溫度浮點(diǎn)型
          uchar str_buff[20];//字符緩沖區(qū)
          SCON=0x50;//串口工作在方式1,波特率9600,//晶振為22.1184 MHz
          PCON=0;
          TMOD=0x20;//定時(shí)器1工作在方式2
          TH1=0xfa;
          TL1=0xfa;
          IE=0x91;//1001 0001,EA=1,ES=1,EX0=1
          IT0=1;//外部中斷0為低電平觸發(fā)方式
          TR1=1;//定時(shí)器T1開始計(jì)數(shù)
          ds18b20_init();//初始化溫度傳感器時(shí)鐘測(cè)試
          Initial_DS1302();//初始化時(shí)鐘時(shí)間設(shè)定,執(zhí)行一次后刪除該部分
          Write1302(DS1302_MINUTE, 0x11);
          Write1302(DS1302_HOUR,0x08);
          Write1302(DS1302_DAY,0x15);
          Write1302(DS1302_MONTH,0x04);
          Write1302(DS1302_YEAR,0x08);
          lcd1602_init();
          lcd_put_xyns(2,1,14,"www.stuelab.cn");
          delay_ms(1000);
          while(1) {
          for(n=0;n10;n++) { //10*0.5 s="5" s數(shù)據(jù)發(fā)送周期
          V=ReadTemperature()/100.0; //溫度部分
          sprintf(str_buff,"%2.2f",V); //格式轉(zhuǎn)換
          lcd_put_xyns(1,1,11,"Temperatur=");
          lcd_put_xyns(12,1,5,str_buff);
          seg7_disp(V*100);
          sprintf(a,"%2.2f",V);//送串口字符串
          DS1302_GetTime(RTC);//時(shí)間部分
          DateToStr(RTC);
          TimeToStr(RTC);

          lcd_put_xyns(1,2,8,RTC.DateString);
          lcd_put_xyns(9,2,8,RTC.TimeString);
          delay_ms(500);
          }
          for(n=0;n6;n++) {
          SBUF=a[n];
          while(!TI);
          TI=0;
          }
          }
          }
          void external0() interrupt 0{//外部中斷0發(fā)送數(shù)據(jù)
          for(n=0;n6;n++) {
          SBUF=a[n];
          while(!TI);
          TI=0;
          }
          delay_ms(1100);
          }
          void receving() interrupt 4 {//串口中斷程序接收數(shù)據(jù)
          temp=SBUF;
          RI=0;
          }

            結(jié)語(yǔ)

            經(jīng)過實(shí)際運(yùn)行和測(cè)試證明,系統(tǒng)穩(wěn)定可靠,系統(tǒng)誤差達(dá)到了規(guī)定的要求。本系統(tǒng)雖然是以無線溫度傳感器節(jié)點(diǎn)為例,但同樣也適合其他各種類型的無線傳感器節(jié)點(diǎn),因此可以推廣到無線傳感器網(wǎng)絡(luò)的其他應(yīng)用領(lǐng)域或行業(yè),如電力抄表、配電自動(dòng)化、路燈監(jiān)控、道路交通等。

          c++相關(guān)文章:c++教程


          傳感器相關(guān)文章:傳感器工作原理




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉