Distributed Wireless Sensor Networks Based on MD600G and Internet
Hong Jiaping, Wang Ziyun, Ding Hui
(College of Computer Science and Technology,Hubei Normal University,Huangshi 435002,China)
Abstract: A distributed wireless sensor nodes network system based on MD600G and internet architecture is generated. The realtime data tracking and realtime database generation of distance nodes processoriented behavior are realized. It not only has lowpower, lowcost, distributed and selforganizing characteristics, but also achieves transparent transmission of communication information, Internetbased visualization of dynamic data and other functions.
Key words: distributed; wireless sensor networks; visualization
引言
隨著微機電系統(tǒng)(MicroElectroMechanism System, MEMS)、片上系統(tǒng)(System on Chip,SoC)、無線通信和低功耗嵌入式技術(shù)的飛速發(fā)展,傳感器" title="傳感器">傳感器">無線傳感器" title="無線傳感器">無線傳感器網(wǎng)絡(luò)" title="網(wǎng)絡(luò)">網(wǎng)絡(luò)(Wireless Sensor Networks, WSN)也以其低功耗、低成本、分布式和自組織等特點帶來了信息感知的一場變革。無線傳感器網(wǎng)絡(luò)由部署在監(jiān)測區(qū)域內(nèi)大量的廉價微型傳感器節(jié)點組成,通過無線通信方式形成一個多跳的自組織網(wǎng)絡(luò)。
無線傳感器網(wǎng)絡(luò)可連接眾多類型的傳感器,可探測包括地震波、電磁場、溫度、濕度、噪聲、光強度、壓力、土壤成分、移動物體的大小和速度等。基于MEMS的微傳感技術(shù)和無線互聯(lián)網(wǎng)技術(shù)為無線傳感器網(wǎng)絡(luò)賦予了廣闊的應(yīng)用前景,在航空、反恐、防爆、救災、環(huán)境、醫(yī)療、保健、家居、工業(yè)、商業(yè)等領(lǐng)域有廣泛的應(yīng)用。本文以無線溫度傳感器節(jié)點和無線數(shù)據(jù)終端MD600G為例,介紹了基于MD600G的Internet無線傳感器網(wǎng)絡(luò)的設(shè)計,并給出了對溫度數(shù)據(jù)的可視化處理等操作的實現(xiàn)。
1 基于Internet的無線傳感器網(wǎng)原理
1.1 MD600G簡介
智能無線數(shù)據(jù)終端MD600G可以用于數(shù)據(jù)中心和被監(jiān)控設(shè)備間,實現(xiàn)數(shù)據(jù)的遠程透明傳輸。MD600G的內(nèi)部結(jié)構(gòu)如圖1所示,它有如下特點:
①基于ARM平臺、8 MB數(shù)據(jù)緩存,內(nèi)置Siemens MC35i GPRS無線模塊;
②嵌入式Linux系統(tǒng),包含TCP/IP協(xié)議棧以及ETCPTM協(xié)議,保證傳輸數(shù)據(jù)不丟失;
③提供獨立RS232配置串口及標準RS232/485數(shù)據(jù)接口;
④符合電工電子產(chǎn)品低溫GB/T2423.1、高溫GB/T2423.2的要求,適于在氣候條件惡劣的地區(qū)及戶外使用;
⑤可以快速連接RTU、PLC、工控機等設(shè)備,實現(xiàn)數(shù)據(jù)透明傳輸,廣泛應(yīng)用于電力抄表、配電自動化、路燈監(jiān)控、道路交通等行業(yè)。
圖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é)點。傳感器節(jié)點采樣的數(shù)據(jù)通過RS232/485接口傳送到智能無線數(shù)據(jù)終端MD600G,MD600G對接收到的數(shù)據(jù)通過GPRS與Internet連接并進行無線數(shù)據(jù)透明傳送,服務(wù)器mSever端通過Internet網(wǎng)將接收到的數(shù)據(jù)生成實時數(shù)據(jù)庫,同時將這些實時數(shù)據(jù)以WEB頁的形式動態(tài)顯示和跟蹤。
1.3 溫度傳感器節(jié)點
溫度傳感器節(jié)點模塊主要由溫度傳感器DS18B20組成,并將其輸出的溫度數(shù)據(jù)送往單片機,然后單片機將這些數(shù)據(jù)進行相關(guān)處理,最后再送往后續(xù)的通信設(shè)備,并將溫度數(shù)據(jù)進行數(shù)碼管或液晶屏顯示。這里采用了實時時鐘電路DS1302來實現(xiàn)該系統(tǒng)的實時性。
2 軟件設(shè)計
基于MD600G和Internet的無線傳感器網(wǎng)的軟件包括溫度傳感器節(jié)點的軟件設(shè)計、MD600G與溫度傳感器節(jié)點的串口軟件設(shè)計、服務(wù)器mSever端與Internet網(wǎng)的數(shù)據(jù)通信軟件及mSever端溫度數(shù)據(jù)可視化程序的設(shè)計等。
2.1 mSever端溫度數(shù)據(jù)可視化程序設(shè)計
利用Visual C++強大的編譯器以及網(wǎng)絡(luò)與數(shù)據(jù)庫的處理能力,開發(fā)出基于Windows平臺的32位數(shù)據(jù)可視化應(yīng)用程序。圖3是mSever端溫度數(shù)據(jù)可視化程序設(shè)計的原理圖。
圖3 可視化界面的設(shè)計原理圖
以下為可視化界面模塊源碼:
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);//背景刷新時間
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個節(jié)點的溫度變化實時曲線。
圖4 服務(wù)器mSever端溫度數(shù)據(jù)可視化顯示界面
2.2 mSever端Web訪問程序設(shè)計
為了實現(xiàn)多個客戶端可以同時訪問數(shù)據(jù)中心服務(wù)器,規(guī)定客戶端在打開服務(wù)器的Web頁面時,首先提交客戶端的IP地址,然后服務(wù)器端把客戶端的IP地址收錄入庫,再將接收到的溫度數(shù)據(jù)轉(zhuǎn)發(fā)給指定的客戶端。因此,當有多個客戶端同時訪問數(shù)據(jù)中心服務(wù)器時,服務(wù)器端只需要將各個客戶端的IP地址收錄入庫,最后再循環(huán)不斷地往各個客戶端轉(zhuǎn)發(fā)溫度數(shù)據(jù)即可。
當客戶端斷開與服務(wù)器端的連接時,將向服務(wù)器提交斷開請求,從服務(wù)器端的IP地址庫中釋放掉該客戶端的IP地址,從而實現(xiàn)了服務(wù)器端IP地址庫的動態(tài)更新。
2.3 節(jié)點溫度采集" title="采集">采集軟件設(shè)計
以下為溫度傳感器節(jié)點的溫度采集部分代碼:
#include "Mini51B.h"//Mini51板頭文件
#include "LCD1602.h"//液晶模塊頭文件
#include "ds18b20.h"//溫度傳感器頭文件
#include "stdio.h"//C標準函數(shù)庫,系統(tǒng)集成
#include "DS1302.h"
#define uchar unsigned char
uchar n,temp;
uchar a[6]="000000"; //串口字符串
SYSTEMTIME RTC;
void main(void) {
float V; //記錄溫度浮點型
uchar str_buff[20];//字符緩沖區(qū)
SCON=0x50;//串口工作在方式1,波特率9600,//晶振為22.1184 MHz
PCON=0;
TMOD=0x20;//定時器1工作在方式2
TH1=0xfa;
TL1=0xfa;
IE=0x91;//1001 0001,EA=1,ES=1,EX0=1
IT0=1;//外部中斷0為低電平觸發(fā)方式
TR1=1;//定時器T1開始計數(shù)
ds18b20_init();//初始化溫度傳感器時鐘測試
Initial_DS1302();//初始化時鐘時間設(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;n<10;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);//時間部分
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;n<6;n++) {
SBUF=a[n];
while(!TI);
TI=0;
}
}
}
void external0() interrupt 0{//外部中斷0發(fā)送數(shù)據(jù)
for(n=0;n<6;n++) {
SBUF=a[n];
while(!TI);
TI=0;
}
delay_ms(1100);
}
void receving() interrupt 4 {//串口中斷程序接收數(shù)據(jù)
temp=SBUF;
RI=0;
}
結(jié)語
經(jīng)過實際運行和測試證明,系統(tǒng)穩(wěn)定可靠,系統(tǒng)誤差達到了規(guī)定的要求。本系統(tǒng)雖然是以無線溫度傳感器節(jié)點為例,但同樣也適合其他各種類型的無線傳感器節(jié)點,因此可以推廣到無線傳感器網(wǎng)絡(luò)的其他應(yīng)用領(lǐng)域或行業(yè),如電力抄表、配電自動化、路燈監(jiān)控、道路交通等。