您当前的位置: 技术标准 > 技术动态

基于Internet网络架构的无线传感器网络系统

时间:2011-05-10 00:00:00  来源:互联网  编辑:互联网
引言

  随着微机电系统(Micro?Electro?Mechanism System, MEMS)、片上系统(System on Chip,SoC)、无线通信和低功耗嵌入式技术的飞速发展,无线传感器网络(Wireless Sensor Networks, WSN)也以其低功耗、低成本、分布式和自组织等特点带来了信息感知的一场变革。无线传感器网络由部署在监测区域内大量的低价微型传感器节点组成,通过无线通信方式形成一个多跳的自组织网络。

  无线传感器网络可连接众多类型的传感器,可探测包括地震波、电磁场、温度、湿度、噪声、光强度、压力、土壤成分、移动物体的大小和速度等。基于MEMS的微传感技术和无线互联网技术为无线传感器网络赋予了广阔的应用前景,在航空、反恐、防爆、救灾、环境、医疗、保健、家居、工业、商业等领域有广泛的应用。本文以无线温度传感器节点和无线数据终端MD600G为例,先容了基于MD600G的Internet无线传感器网络的设计,并给出了对温度数据的可视化处理等操作的实现。

  1 基于Internet的无线传感器网原理

  1.1 MD600G概况


  智能无线数据终端MD600G可以用于数据中心和被监控设备间,实现数据的远程透明传输。它有如下特点:
  ①基于ARM平台、8 MB数据缓存,内置Siemens MC35i GPRS无线模块;
  ②嵌入式Linux系统,包含TCP/IP协议栈以及ETCPTM协议,保证传输数据不丢失;
  ③提供独立RS232配置串口及标准RS232/485数据接口;
  ④符合电工电子产品低温GB/T2423.1、高温GB/T2423.2的要求,适于在气候条件恶劣的地区及户外使用;
  ⑤可以快速连接RTU、PLC、工控机等设备,实现数据透明传输,广泛应用于电力抄表、配电自动化、路灯监控、道路交通等行业。‘

  1.2 无线传感器网络

  用户设备是自行开发的温度传感器节点。传感器节点采样的数据通过RS232/485接口传送到智能无线数据终端MD600G,MD600G对接收到的数据通过GPRS与Internet连接并进行无线数据透明传送,服务器mSever端通过Internet网将接收到的数据生成实时数据库,同时将这些实时数据以WEB页的形式动态显示和跟踪。

  1.3 温度传感器节点

  温度传感器节点模块主要由温度传感器DS18B20组成,并将其输出的温度数据送往单片机,然后单片机将这些数据进行相关处理,最后再送往后续的通信设备,并将温度数据进行数码管或液晶屏显示。这里采用了实时时钟电路DS1302来实现该系统的实时性。

  2 App设计
  
  基于MD600G和Internet的无线传感器网的App包括温度传感器节点的App设计、MD600G与温度传感器节点的串口App设计、服务器mSever端与Internet网的数据通信App及mSever端温度数据可视化程序的设计等。

  2.1 mSever端温度数据可视化程序设计
  

  利用Visual C++强大的编译器以及网络与数据库的处理能力,开发出基于Windows平台的32位数据可视化应用程序。

  以下为可视化界面模块源码:
  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) { //接收数据端的程序
  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);
  }

  2.2 mSever端Web访问程序设计

  为了实现多个客户端可以同时访问数据中心服务器,规定客户端在打开服务器的Web页面时,首先提交客户端的

   IP地址,然后服务器端把客户端的IP地址收录入库,再将接收到的温度数据转发给指定的客户端。因此,当有多个客户端同时访问数据中心服务器时,服务器端只需要将各个客户端的IP地址收录入库,最后再循环不断地往各个客户端转发温度数据即可。
  当客户端断开与服务器端的连接时,将向服务器提交断开请求,从服务器端的IP地址库中释放掉该客户端的IP地址,从而实现了服务器端IP地址库的动态更新。

  2.3 节点温度采集App设计

  以下为温度传感器节点的温度采集部分代码:
  #include "Mini51B.h"//Mini51板头文件
  #include "LCD1602.h"//液晶模块头文件
  #include "ds18b20.h"//温度传感器头文件
  #include "stdio.h"//C标准函数库,系统集成
  #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];//字符缓冲区
  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为低电平触发方式
  TR1=1;//定时器T1开始计数
  ds18b20_init();//初始化温度传感器时钟测试
  Initial_DS1302;//初始化时钟时间设定,实行一次后删除该部分
  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,"<http://www.stuelab.cn/>");
  delay_ms(1000);
  while(1) {
  for(n=0;n<10;n++) { //10*0.5 s=5 s数据发送周期
  V=ReadTemperature()/100.0; //温度部分
  sprintf(str_buff,"%2.2f",V); //格式转换
  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 external
   0 interrupt 0{//外部中断0发送数据
  for(n=0;n<6;n++) {
  SBUF=a[n];
  while(!TI);
  TI=0;
  }
  delay_ms(1100);
  }
  void receving() interrupt 4 {//串口中断程序接收数据
  temp=SBUF;
  RI=0;
  }

  结语

  经过实际运行和测试证明,系统稳定可靠,系统误差达到了规定的要求。本系统虽然是以无线温度传感器节点为例,但同样也适合其他各种类型的无线传感器节点,因此可以推广到无线传感器网络的其他应用领域或行业,如电力抄表、配电自动化、路灯监控、道路交通等。
来顶一下
返回首页
返回首页


上一篇: 利用无线传感器的停车场监控系统的设计 下一篇:一种基于综合监管链的身份验证技术

相关文章
    无相关信息


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

推荐资讯
2016第八届安徽国际社会公共安全产品暨警用装备展览会成功举办
2016第八届安徽国际社
关于公布安徽省安全技术防范行业优秀安防企业、优秀安防工程、优秀安防产品评选结果的通知
关于公布安徽省安全技
智慧与安全大数据技术研讨会在肥召开“合肥模式”闪亮会场
智慧与安全大数据技术
RFID智能标签革命助力物联网的构建
RFID智能标签革命助力
热门资讯
最新资讯
XML 地图 | Sitemap 地图