传感器开发平台
登录
直播中
衡辉
7年用户
222经验值
私信
关注
Internet无线传感器网络的原理是什么?
开启该帖子的消息推送
分布式
传感器
随着微机电系统(Micro?Electro?Mechanism System, MEMS)、片上系统(System on Chip,SoC)、无线
通信
和低功耗嵌入式技术的飞速发展,无线传感器网络(Wireless Sensor Networks, WSN)也以其低功耗、低成本、分布式和自组织等特点带来了信息感知的一场变革。无线传感器网络由部署在监测区域内大量的廉价微型传感器节点组成,通过无线通信方式形成一个多跳的自组织网络。
回帖
(2)
李云生
2019-11-4 14:50:20
无线传感器网络可连接众多类型的传感器,可探测包括地震波、电磁场、温度、湿度、噪声、光强度、压力、土壤成分、移动物体的大小和速度等。基于 MEMS的微传感技术和无线互联网技术为无线传感器网络赋予了广阔的应用前景,在航空、反恐、防爆、救灾、环境、医疗、保健、家居、工业、商业等领域有广泛的应用。本文以无线温度传感器节点和无线数据终端MD600G为例,介绍了基于MD600G的Internet无线传感器网络的设计,并给出了对温度数据的可视化处理等操作的实现。
1 基于Internet的无线传感器网原理
1.1 MD600G简介
智能无线数据终端MD600G可以用于数据中心和被监控设备间,实现数据的远程透明传输。MD600G的内部结构如图1所示,它有如下特点:
①基于ARM平台、8 MB数据缓存,内置Siemens MC35i GPRS无线模块;
②嵌入式Linux系统,包含TCP/IP协议栈以及ETCPTM协议,保证传输数据不丢失;
③提供独立RS232配置串口及标准RS232/485数据接口;
④符合电工电子产品低温GB/T2423.1、高温GB/T2423.2的要求,适于在气候条件恶劣的地区及户外使用;
⑤可以快速连接RTU、PLC、工控机等设备,实现数据透明传输,广泛应用于电力抄表、配电自动化、路灯监控、道路交通等行业。
图1 MD600G硬件结构图
1.2 无线传感器网络
由MD600G组成的基于Internet无线传感器网络原理图如图2所示。
图2 无线传感器网络结构原理图
图2中的用户设备是自行开发的温度传感器节点。传感器节点采样的数据通过RS232/485接口传送到智能无线数据终端 MD600G,MD600G对接收到的数据通过GPRS与Internet连接并进行无线数据透明传送,服务器mSever端通过Internet网将接收到的数据生成实时数据库,同时将这些实时数据以WEB页的形式动态显示和跟踪。
1.3 温度传感器节点
温度传感器节点模块主要由温度传感器DS18B20组成,并将其输出的温度数据送往单片机,然后单片机将这些数据进行相关处理,最后再送往后续的通信设备,并将温度数据进行数码管或液晶屏显示。这里采用了实时时钟威廉希尔官方网站 DS1302来实现该系统的实时性。
无线传感器网络可连接众多类型的传感器,可探测包括地震波、电磁场、温度、湿度、噪声、光强度、压力、土壤成分、移动物体的大小和速度等。基于 MEMS的微传感技术和无线互联网技术为无线传感器网络赋予了广阔的应用前景,在航空、反恐、防爆、救灾、环境、医疗、保健、家居、工业、商业等领域有广泛的应用。本文以无线温度传感器节点和无线数据终端MD600G为例,介绍了基于MD600G的Internet无线传感器网络的设计,并给出了对温度数据的可视化处理等操作的实现。
1 基于Internet的无线传感器网原理
1.1 MD600G简介
智能无线数据终端MD600G可以用于数据中心和被监控设备间,实现数据的远程透明传输。MD600G的内部结构如图1所示,它有如下特点:
①基于ARM平台、8 MB数据缓存,内置Siemens MC35i GPRS无线模块;
②嵌入式Linux系统,包含TCP/IP协议栈以及ETCPTM协议,保证传输数据不丢失;
③提供独立RS232配置串口及标准RS232/485数据接口;
④符合电工电子产品低温GB/T2423.1、高温GB/T2423.2的要求,适于在气候条件恶劣的地区及户外使用;
⑤可以快速连接RTU、PLC、工控机等设备,实现数据透明传输,广泛应用于电力抄表、配电自动化、路灯监控、道路交通等行业。
图1 MD600G硬件结构图
1.2 无线传感器网络
由MD600G组成的基于Internet无线传感器网络原理图如图2所示。
图2 无线传感器网络结构原理图
图2中的用户设备是自行开发的温度传感器节点。传感器节点采样的数据通过RS232/485接口传送到智能无线数据终端 MD600G,MD600G对接收到的数据通过GPRS与Internet连接并进行无线数据透明传送,服务器mSever端通过Internet网将接收到的数据生成实时数据库,同时将这些实时数据以WEB页的形式动态显示和跟踪。
1.3 温度传感器节点
温度传感器节点模块主要由温度传感器DS18B20组成,并将其输出的温度数据送往单片机,然后单片机将这些数据进行相关处理,最后再送往后续的通信设备,并将温度数据进行数码管或液晶屏显示。这里采用了实时时钟威廉希尔官方网站 DS1302来实现该系统的实时性。
举报
谭雪
2019-11-4 14:50:33
2 软件设计
基于MD600G和Internet的无线传感器网的软件包括温度传感器节点的软件设计、MD600G与温度传感器节点的串口软件设计、服务器mSever端与Internet网的数据通信软件及mSever端温度数据可视化程序的设计等。
2.1 mSever端温度数据可视化程序设计
利用Visual C++强大的编译器以及网络与数据库的处理能力,开发出基于Windows平台的32位数据可视化应用程序。图3是mSever端温度数据可视化程序设计的原理图。
图3 可视化界面的设计原理图
以下为可视化界面模块源码:
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);
}
图4是用Visual C++开发的mSever端温度数据可视化显示的界面,图中显示的是1个节点的温度变化实时曲线。
图4 服务器mSever端温度数据可视化显示界面
2.2 mSever端Web访问程序设计
为了实现多个客户端可以同时访问数据中心服务器,规定客户端在打开服务器的Web页面时,首先提交客户端的IP地址,然后服务器端把客户端的 IP地址收录入库,再将接收到的温度数据转发给指定的客户端。因此,当有多个客户端同时访问数据中心服务器时,服务器端只需要将各个客户端的IP地址收录入库,最后再循环不断地往各个客户端转发温度数据即可。
当客户端断开与服务器端的连接时,将向服务器提交断开请求,从服务器端的IP地址库中释放掉该客户端的IP地址,从而实现了服务器端IP地址库的动态更新。
2.3 节点温度采集软件设计
以下为温度传感器节点的温度采集部分代码:
#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,"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 external0() 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;
}
结语
经过实际运行和测试证明,系统稳定可靠,系统误差达到了规定的要求。本系统虽然是以无线温度传感器节点为例,但同样也适合其他各种类型的无线传感器节点,因此可以推广到无线传感器网络的其他应用领域或行业,如电力抄表、配电自动化、路灯监控、道路交通等。
参考文献
[1] 谢希仁.计算机网络[M].大连:大连理工大学出版社,2006:101132.
[2] 肖宏伟.Visual C++开发答疑[M].北京:人民邮电出版社,
2003:97107.
[3] 邱天爽,等.无线传感器网络协议与体系结构[M].北京:电子工业出版社,2007:3647.
[4] 王殊.无线传感器网络的理论及应用[M].北京:北京航空航天大学出版社,2007:89101.
洪家平(教授),主要研究方向为嵌入式系统应用、无线传感器网络技术与应用;汪自云(教授);丁辉,计算机科学与技术专业。
作者:洪家平, 汪自云, 丁辉 湖北师范学院
2 软件设计
基于MD600G和Internet的无线传感器网的软件包括温度传感器节点的软件设计、MD600G与温度传感器节点的串口软件设计、服务器mSever端与Internet网的数据通信软件及mSever端温度数据可视化程序的设计等。
2.1 mSever端温度数据可视化程序设计
利用Visual C++强大的编译器以及网络与数据库的处理能力,开发出基于Windows平台的32位数据可视化应用程序。图3是mSever端温度数据可视化程序设计的原理图。
图3 可视化界面的设计原理图
以下为可视化界面模块源码:
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);
}
图4是用Visual C++开发的mSever端温度数据可视化显示的界面,图中显示的是1个节点的温度变化实时曲线。
图4 服务器mSever端温度数据可视化显示界面
2.2 mSever端Web访问程序设计
为了实现多个客户端可以同时访问数据中心服务器,规定客户端在打开服务器的Web页面时,首先提交客户端的IP地址,然后服务器端把客户端的 IP地址收录入库,再将接收到的温度数据转发给指定的客户端。因此,当有多个客户端同时访问数据中心服务器时,服务器端只需要将各个客户端的IP地址收录入库,最后再循环不断地往各个客户端转发温度数据即可。
当客户端断开与服务器端的连接时,将向服务器提交断开请求,从服务器端的IP地址库中释放掉该客户端的IP地址,从而实现了服务器端IP地址库的动态更新。
2.3 节点温度采集软件设计
以下为温度传感器节点的温度采集部分代码:
#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,"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 external0() 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;
}
结语
经过实际运行和测试证明,系统稳定可靠,系统误差达到了规定的要求。本系统虽然是以无线温度传感器节点为例,但同样也适合其他各种类型的无线传感器节点,因此可以推广到无线传感器网络的其他应用领域或行业,如电力抄表、配电自动化、路灯监控、道路交通等。
参考文献
[1] 谢希仁.计算机网络[M].大连:大连理工大学出版社,2006:101132.
[2] 肖宏伟.Visual C++开发答疑[M].北京:人民邮电出版社,
2003:97107.
[3] 邱天爽,等.无线传感器网络协议与体系结构[M].北京:电子工业出版社,2007:3647.
[4] 王殊.无线传感器网络的理论及应用[M].北京:北京航空航天大学出版社,2007:89101.
洪家平(教授),主要研究方向为嵌入式系统应用、无线传感器网络技术与应用;汪自云(教授);丁辉,计算机科学与技术专业。
作者:洪家平, 汪自云, 丁辉 湖北师范学院
举报
更多回帖
rotate(-90deg);
回复
相关问答
分布式
传感器
无线
传感器
网络
是什么?
无线
传感器
网络
的显著特点是什么?
2021-05-24
1785
无线
传感器
网络
有哪些应用?
2020-03-10
2598
基于Linux的
传感器
网络
网关能实现什么功能?
2020-04-01
1490
超声波
传感器
如何适应您的
无线
传感器
网络
?
2021-05-18
1288
工业使用的
无线
传感器
网络
2020-04-23
2820
怎么实现
无线
传感器
网络
?
2021-05-13
1031
无线
传感器
网络
有什么难题?
2019-11-04
2595
怎么设计基于嵌入式
网络
的
无线
传感器
网络
平台?
2019-08-27
2046
无线
传感器
网络
监护系统的原理是什么?
2020-03-27
1828
如何构建基于TinyOS的
无线
传感器
网络
?
2021-06-01
1483
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分