基于ZigBee的自来水监测网络系统设计与实现
2015-03-28彭连滔冯锡炜冯瑶
彭连滔,冯锡炜,冯瑶
(辽宁石油化工大学计算机与通信工程学院,辽宁抚顺113001)
随着我国经济的高速发展,水质的污染和破坏问题日趋严重,着眼于社会所需,我们研究了基于ZigBee的水质监测系统,为水质保驾护航。
水质污染问题刻不容缓,城市饮水主要是通过自来水,其中的安全隐患不容忽视,所以需要一种能随时监测水质变化的设备系统。论文探讨构建基于ZigBee技术的自来水监测网络物理结构,重点是ZigBee网关转wifi和转USB的协议转换。上位机监控功能中,实现了数据实时接收、显示以及历史数据查询,对超阈值数据,报警提示。
1 物联网ZigBee技术简介
ZigBee技术具有自组网,低功耗,延时小,多跳的特点,适用于长时间组网监测。在ZigBee网络中有3种设备,协调器(Co_ordinator)为全功能节点(FFD),负责建立网络,一个ZigBee网络只能有一个协调器,相当于蜂群结构中的蜂后,当网路建立完成后,协调器的功能相当于普通路由器(Router)。路由器负责数据的路由跳转,能够将消息发给其他j节点设备。终端节点(End device)负责数据的采集与发送。以上3种设备可以分为全功能节点(FFD)和半功能节点(RFD)[1]。
每个节点具有两个地址:
1)IEEE MAC地址
这是一种64位的地址,这个地址由IEEE组织进行分配,用于唯一的标识设备,全球没有任何两个设备具有相同的MAC地址。在ZigBee网络中,有时也叫MAC地址为扩展地址。
2)16位短地址
16位短地址用于在本地网络中标识设备,和在网络中发送数据,所以如果是处于不同的网络中有可能具有相同的短地址。当一个节点加入网络的时候将由它的父节点给它分配短地址,协调器的短地址是0。
ZigBee网路的拓扑结构主要为星状(star),树状(Cluster_tree),网格(mesh),其中星状网络不支持ZigBee路由器。不同的网络拓扑结构适用用于不同的使用环境。
2 系统体系结构
基于ZigBee的水质监测系统可以对水质进行实时的监控,整个系统由下位机监测网和上位机软件组成,下位机监测网负责数据的采集,和数据在ZigBee网络上的传输。上位机软件负责对来自监测网数据的存储,数理统计,水质参数超标实时报警,和设备运行状况的检查。系统结构如图1所示。
3 水质监测网的下位机
下位机部分由一个ZigBee转WiFi网关或一个ZigBee转USB基站,2个PH采集节点,一个温度采集节点组成。
图1 系统体系结构Fig.1 The architecture of the system
所有节点内嵌ZigBee通讯模块,在节点的通讯模块中,烧写了ZigBee协议栈的移植版,所有节点上电即进行自组网,进行数据的采集和传输。通过AT命令来指定协调器,路由器,和终端节点,以及节点的相关参数。当掉电时,能进行参数的保存。其下位采集器采用STM32,该款CPU采用的是ARM的cortex-M3内核。其具有出色的实时性能、优越的功效、高级的创新型的外设、最大的集成性。CPU工作频率最高达到72 MHz。AD采集精度为12位,充分保证了采集传感器的精度。
ZigBee通信具有通信稳定的优点[2]。增加的无线功率放大器PA可以一定意义上克服ZigBee通信距离短的问题,使得节点通信距离可以达到几千米,最大限度的保证了通信的稳定可靠和通信距离。图2和图3分别描述了ZigBee节点接收和发送数据的流程图。
图3 ZigBee节点发送数据Fig.3 ZigBee nodes send data
在下位机与PC机的衔接部分,笔记本可以用WiFi网关或ZigBee转USB基站来接收数据,对于台式机可以直接用ZigBee转USB基站来接收。
4 水质监测网的上位机
上位机界面采用C#编程,开发工具为vs2012,数据库为SQL Server。
4.1 W IFI网关接收模式
当启用WIFI网关[3-4]接受模式时,网络协议采用TCP,相比UDP稳定[5],用socket套接字来连接PC机与WIFI网关。
当上位机软件启动时,上位机首先创线thwatchport=new Thread(listening);用来监视,WiFi网关是否与PC机相连,若没有,则继续监听。当连接完成时,软件创建另一线程threcive=new Thread(autorecive),用于接收WiFi网关发来的数据,并随时将数据存入数据库中。
由于第一个线程不断循环查询,当WiFi网关断开,能保证WiFi网关重连时的成功,而不必重启软件。保证了系统的容错率和健壮性。
伪代码描叙如下:
Begin:IPEndPoint ipendpoint=new IPEndPoint(ip,port);
welcomesocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
welcomesocket.Bind(ipendpoint);//绑定IP
welcomesocket.Listen(16);
thwatchport=new Thread(listening);//创建监听线程
thwatchport.Start();
listening()//监听函数
{try
{Do while(true)
reciveSocket=welcomesocket.Accept();//连接
threcive=new Thread(autorecive);//创建接收线程
threcive.Start();
endwhile
}
catch(ex){print(ex.toString();}
}
void autorecive()//接收函数
{StringBuilder strRecive=new StringBuilder();
String strtemp="";
Byte[]byterecieve=new Byte[1024*1024];ncount=0;
sqloperate=new ServerSQL();
do while(true)
{try{
if(reciveSocket==null)break;
ncount=reciveSocket.Receive(byterecieve);//接收数据到缓存
strtemp=Encoding.Default.GetString(byterecieve,0,ncount);
strRecive.Append(strtemp);
{//解析接收到的数据包
//判断设备状态,以及水质参数是否超标,如有异常,立即报警//数据存入数据库
}
}
}catch(ex)//捕获异常
{ncounterror++;
if ncounterror==5
print("请检查网络连接,网络已断开");threcive.Abort();
endif
}
}endwhile
}
End
运行结果图:
4.2 ZigBee转USB模式
对于台式PC机,用WiFi网关接收模式固然可行,对于ZigBee网关与上位机物理距离较短时,还有另一种接收模式——ZigBee转USB模模式。只要将USB一端插入台式机的USB口,当上位机软开启时便可以接收数据。
USB接受方式的编程实现,采用的是serialPort控件[6],直接采用事件触发的方式。
伪代码描叙如下:
Begin:
serialPortAccess.DataReceived+=new System.IO.Ports.SerialDataReceivedEventHandler(autorecive);//将事件委托函数处理
autorecive(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
sqloperate=new ServerSQL();
String readdata="";
StringBuilder strRecive=new StringBuilder();
try
{
图4 无线网络接收方式监控界面Fig.4 Wireless network receiving modemonitoring interface
readdata=serialPortAccess.ReadExisting();//接收数据
strRecive.Append(readdata);
{
//解析接收到的数据包
//判断设备状态,以及水质参数是否超标,如有异常,立即报警
//数据存入数据库
}
}
catch(Exception ex)print(ex.ToString());
}
End
运行结果图:
图5 串口接收方式监控界面Fig.5 Serialport receiving modemonitoring interface
线程和事件触发方式,和定时器定时接收方式相比,能保证数据的随到随收,无数据包遗漏现象。
对于数据的处理,可以按时间查询,并将查询到的数据进行普通的数理统计,如计算平均数,超标次数,并且能将数据查询统计结果导出生成Excel文件,方便用户进一步分析调研。
此外,上位机软件具有良好的用户界面,与异常处理,方便用户操作与使用,接收界面使用动态GIF图片制作,如图2,第一个苹果表示等待连接,第二个苹果表示已连接成功,正在接收数据,当WIFI网关掉线时,第二个苹果停止动态显示,方便用户动态感觉数据接收正在进行,当数值超标时,或设备电压不足时,软件亦能及时弹出报警窗口。
5结论
基于ZigBee的自来水监测网能有效对自来水水质进行实时监测,设计实现了系统的网络结构,完成了传感器数据采集、传输、查询显示以及报警等系统功能。通过网络传输传感器的数据采用两种方式:WiFi网关的socket方式和ZigBee转USB的serialPort方式。两种方式都能实现数据的实时传输的实时接收,基于线程的socket,使用了线程轮转循环的方式,能有效防止WiFi网关掉线,并提醒用户。此时接收线程threcieve终止,监听线程thwatchport依旧循环,等待WiFi网关重新连接。
下一阶段工作的重点,围绕完善系统功能和扩展系统应用展开:
对于下位机网络,采集节点数目不够多,参数种类也不够丰富。在PANID,信道,和数据包一致的情况下,可以不断加入新的节点,增加下位机网络的功能。
对于数据传输,利用GPRS网[7],通过GPRS短信直接通知水质超标等情况,亦可以将ZigBee网络转为3G或4G网络[8],使数据传输的方式变得灵活多样。
在上位机功能部分,丰富数据查询统计方式,添加系统日志管理,改进异常情况的友好提示等。丰富客户端的操作平台,延伸至Web方式,以及基于移动终端的App应用。对于已经采集的数据,可以进行数据挖掘,和大数据运算,研究当地经济,生活的状态。
[1] 姜仲,刘但.ZigBee技术与实训教程——基于CC2530的无线传感网技术[M].北京:清华大学出版社,2014.
[2] 张海涛,廖经文,纪春龙,等.ZigBee无线通讯聊天室的设计与实现[J].东莞理工学院学报,2014,21(3):12-16.ZHANG Hai-tao,LIAO Jing-wen,JI Chun-long,et al.Design and implementation of ZigBee wireless communication chat room[J].Journal of Dongguan University of Technology,2014,21(3):12-16.
[3] 胥嘉佳,许鸣.基于网关的ZigBee和WiFi互通设计[J].电子科技,2014,27(6):22-25.XU Jia-jia,XU Ming.An interconnection design for Zigbee and WiFi based on gateway[J].Electronic Science and Technology,2014,27(6):22-25.
[4] 周坤,傅德胜.基Windows Socket的网络数据传输及其安全[J].计算机工程与设,2007,28(26):5383-5386.ZHOU Kun,FU De-sheng.Data transmission and security on net based on windows socket[J].Compmer Engineering and Design,2007,28(26):5383-5386.
[5] 明日科技,王小科,赵会东,等.典型模块与项目实战大全[M].北京:电子工业出版社,2014.
[6] 李江全,邓红涛,刘巧,等.Visual C#.NET串口通信及测控应用典型实例[M].北京:电子工业出版社,2012.
[7] 孙学宏,车进,张成.基于GPRS的水利数据采集及远程监控系统研究[J].安徽农业科学,2009,37(36):18057-18059.SUN Xue-hong,CHE Jin,ZHANG Cheng.Research on the water conservancy data-collecting and remote n onitor system based on GPRS[J].Journal ofAnhui Agri.Sci,2009,37(36):18057-18059.
[8] 孙宏志,王学成,刘一萌,等.基于3G无线传输的测震台站监控设备的研制[J].地震工程学报,2014,36(2):387-392 SUN Hong-zhi,WANG Xue-cheng,LIU Yi-meng,et al.The design and realization of a type of monitoring equipm ent for seismic stations based on 3G wireless data transmission[J].China Earthquake Engineering Journal,2014,36(2):387-392.