APP下载

基于物联网技术的远程温湿度监测系统

2014-12-25朱俊光戚海峰谢亚卓庄建军

实验技术与管理 2014年11期
关键词:温湿度串口网页

朱俊光,高 健,田 俊,赵 敏,戚海峰,谢亚卓,庄建军

(南京大学 电子科学与工程学院电工电子实验中心,江苏 南京 210023)

一切生命体赖以生存的环境中必不可少的元素除了合适的光照、水分、空气、养料,还有环境的温湿度。环境温湿度对农业、医药业、气象业、食品行业、工控行业等都有极其重要的影响。因此设计出一种温湿度实时监测的系统,并能方便地为人们所掌握显得尤其重要。另外,随着互联网的不断发展壮大,新一代的网络——物联网[1],即物物相连的互联网应运而生。物联网有着极大的发展潜力,可以给人类的生活环境带来更多的快捷,而且方便与智能[2-3]。

随着物联网技术最近几年的迅速发展,无线传感网技术进入应用阶段[4-7]。本文在充分研 究 ZStack协议栈、嵌入式开发以及网页设计的基础上进行了综合设计,即首先利用无线传感网中的ZigBee技术,在底层建立短距离无线传感网并实现采样数据传输,将底层数据传输至上层的嵌入式网关平台,对数据进行加工处理,通过驱动平台中的LCD屏幕来提供一个友好的UI界面,方便人们实时观察温湿度,并在嵌入式平台上搭建服务器,利用 WiFi来访问相应的动态数据网页,从而实现实时监测环境温湿度的变化。

1 系统体系结构介绍

按照由下至上的顺序将整个系统分为3个大模块,即底层数据采集模块、中间层数据传输模块和上层数据处理模块。

底层模块由温湿度传感器SHT11和TI公司的ZigBee芯片CC2530构成,由CC2530控制传感器检测环境温湿度,并作为无线传感网中的节点模块。中间层数据传输模块由两块CC2530构成,分别作为ZigBee网络中节点和协调器自动组网,无线传输温湿度数据,并在协调器一端将数据通过异步串口通信交由嵌入式网关平台处理。上层数据处理模块为整个嵌入式网关平台,所需用到资源有核心板(搭载ARM11架构的S3C6410微处理器、256MB Mobile DDR、128 MB NAND Flash)、DM9000A10/100MB网卡、真彩色宽屏LCD和USB无线网卡。最后还需搭建实验环境中的局域网,利用WiFi加入无线局域网,利用网内设备进行测试,其系统结构框图见图1示。

图1 系统结构框图

温湿度传感器SHT11为瑞士Sensirion公司设计的数字式温湿度传感器,具有全量程标定,两线数字输出;湿度测量范围0~100%RH,温度测量范围-40~+123.8℃,湿度测量精度±3.0%RH,温度测量精度±0.4℃[8]。作为ZigBee模块的CC2530具有射频收发器产品中的许多优良性能。

CC2530内部集成了一块具有增强型的8051处理器,一块可读写的Flash闪存,一定大小的内存块以及大量其他功能模块。为了简化开发,使用CC2530支持的Z-Stack网络协议栈,它是由TI开发的遵循Zig-Bee协议规范的网络协议栈[9]。

为了开发调试的需要,将宿主机的串口分别与嵌入式平台和CC2530相连接,实现将调试信息通过串口打印在宿主机上。另外,利用以太网接口将开发板与宿主机两端用网线互联,因为在使用NFS、TFTP服务或者其他一些网络服务时要用到。通过USB-A转Mini连接宿主机与ZigBee模块,用于向其下载调试程序。

2 模块的具体功能与实现

根据各个模块的具体实现功能的不同,按照由下至上的顺序分别予以设计。

2.1 温湿度数据采集模块

这部分工作主要是对ZigBee节点内部的单片机模块进行编程。首先考虑到CC2530有3个8位端口组成,端口1、2、3分别用P0,P1,P2来表示,其中,P0和P1是完全的8位端口,而P2仅有5位可用。所有的端口均可以通过SFR寄存器P0、P1和P2位寻址和字节寻址。传感器芯片只提供2个I/O端口:DATA和SCK,前者为数据输入输出端口,后者为只可输入的时钟信号端口。因此将P0_0与SCK相连以提供时钟序列,P0_1与DATA相连以读写温湿度数据。

在了解硬件连接基础上对数据采集模块进行软件设计,程序由3部分构成:

(1)主函数部分:首先调用函数初始化串口通信以及温湿度传感器,然后调用函数获取温湿度数据,最后将数据处理后调用串口控制函数,打印调试信息。

(2)温湿度传感器控制部分:具体实现初始化传感器函数,即设置P0端口的相关寄存器;实现获取温湿度数据的函数,根据传感器资料说明,端口按照一定时序发出特定的序列即可进行相应控制;实现将得到的数据进行计算修正的函数。

(3)串口打印控制部分:包括从串口获取PC键盘按键值、发送一个字符、发送一串字符等功能使主函数的打印信息能显示在串口通信软件界面上。

其主要部分的流程图见图2。

图2 温湿度采集模块流程图

2.2 温湿度数据传输模块

该模块分为两部分,一为基于Z-Stack协议栈开发使节点与协调器自动组网形成ZigBee网络,并通过该网络实现数据无线传输;二为使协调器与嵌入式核心板中ARM处理器进行串行异步通信,将数据最终交由嵌入式平台处理。

Z-Stack采用分布式寻址,兼容AODV路由协议,可以满足近程通信的要求,即使通信链路失效发生也可有效工作。为了区分Z-Stack协议栈中复杂的硬件驱动系统,又提供了OSAL层[10](类似于单片机上的操作系统,实则为根据所触发的事件选择调度相应任务),可调度APP层的任务。另外,Z-Stack提供了源码例程SampleApp。该例程实现的功能主要是协调器自启动(组网)和节点设备自动入网。在了解ZStack的工作流程后,程序的开发将在APP层对SampleApp.c进行改写完成。

这部分程序主要为利用OSAL层任务事件轮询调度机制,通过系统周期性定时广播数据到group1中去实现。当ZigBee节点加入网络后触发状态改变事件,系统开启定时器,定时时间一到就触发广播消息事件;系统为其创建相应的任务ID,调用广播消息函数;节点端的广播消息函数读取前一个模块得到的数据,利用AF_DataRequest()函数接口调用下层射频硬件驱动函数发送温湿度数据;触发协调器端的接收数据事件处理函数SampleApp_MessageMSGCB(),将捕获的温湿度数据处理后,以字符串的形式通过串口显示在宿主机的终端中,以方便调试和开发。另外,协调器通过异步串行接口将数据交由ARM处理器。

2.3 温湿度处理模块

为了后续拓展,为可处理多个节点温湿度数据,该模块设计采用服务器与客户端两进程间通信来实现[11]。将接收ZigBee协调器通过异步串行通信发送过来的数据作为服务器进程,并封装ZigBee功能提供相应应用接口。客户端进程则主要是用于同服务器端进行交互,解析获取温湿度数据,同时为实现UI图形界面提供封装好的接口,为此还需用Qt设计UI界面。其中双方是利用套接口(Socket)来使进程之间通信,但是由于Socket本身不支持同时等待和超时处理,所以它不能直接用来完成多进程之间的相互实时通信。本实验采用事件驱动库libev的方式构建服务器模型。

Libev是一种高性能事件循环/事件驱动库。需要循环探测事件是否产生,其循环体用ev_loop结构来表达,并用ev_loop()来启动。用户需要做的仅仅是在合适的时候,将某些ev_io从ev_loop加入或剔除。

服务器主要实现流程:首先开启一个Zigbee后台线程(底层)监听服务器调用信息,接着利用ev_io_start(loop,&ev_io_watcher)启动一个接收线程,专门用来接收客户端发送过来的命令数据帧;然后按照相应的协议进行解析,跳转到相应的接口,进一步调用底层Zigbee协调器并返回正确的信息给客户端。

客户端主要实现流程:首先调用GetConnect接口函数连接到服务器的端口,然后开启一个Zigbeetopo线程用来调用接口函数,发出获取ZigBee网络拓扑结构信息的数据帧,创建另一线程接收并解析服务器端返回的数据帧,同时已创建的UI界面设置定时器,动态刷新加载温湿度数据,绘制成温湿度曲线图。

服务器与客户端进程间通信模型如图3所示。

此外还需利用Qt对UI界面设计。首先利用Qtdesigner为整体界面布局,其中包括背景显示框、LCD数值显示框以及曲线图显示框,编译生成一个UI类;然后采用多继承的方法构造新类,并使用Qt中的信号与槽函数机制,使得接收到温湿度数据触发LCD数值显示和曲线图显示槽函数动作。设计流程见图4。

图3 服务器与客户端进程间通信模型

图4 LCD数值显示和曲线图显示槽函数设计流程

3 Web服务搭建

以上只是完成了温湿度的采集显示,还未真正发挥出物联网所实现的人与物相连,这部分就需要搭建Web服务来实现[12-13]。实现 Web服务需要移植嵌入式服务器,设计动态网页,并通过WiFi最终在已搭建好的局域网内实现手机、PC等可实时查看数据。

3.1 嵌入式服务器移植

由于嵌入式设备资源一般都比较有限,并且也不需要同时处理多用户的请求,因此不能使用Linux下最常用的如Apache等服务器,而需要使用一些专门为嵌入式设备设计的Web服务器。常见的嵌入式Web服务器主要有:lighttpd、thttpd、shttpd和BOA等。本文选择移植BOA作为嵌入式服务器。BOA是一个非常小巧的Web服务器,可执行代码只有约60KB,它是一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求,但BOA支持CGI,能够为CGI程序fork出一个进程来执行。

对BOA服务器的配置主要是在/etc/boa目录下创建一个boa.conf文件,此文件包括服务器将使用主机的端口号、运行服务器的身份、错误信息记录的指定文件、存放html文件的目录、默认首页文件等相关信息,此外还需根据配置信息在相应的一些目录下创建文件。

3.2 网页设计及动态显示

网页设计则是利用html制作静态页面,并结合JavaScript实现动态显示。JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言,同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript脚本可以独立成文件,也可以内联到HTML文档之中。

另外,利用AJAX实时刷新网页数据。AJAX:异步JavaScript和XML,它是一种在无需重新加载整个网页的情况下,就能更新部分网页的技术[14]。它通过在后台与服务器进行少量的数据交换,便可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分元素进行更新。由于温湿度数据放入数据缓冲区,是利用fopen、fread、fwrite以及fseek函数将数据缓冲区内数据写入XML文本适当位置中,要想读取XML文档中的数据并将它显示在Web页面上,需将XML文件转化为XMLDOM(XML文档对象模型),然后再利用JavaScript来解析并实时它。

3.3 WIFI模块搭建

通过搭建WIFI模块,使得用户可以通过支持WIFI的设备比如手机等更加便捷地查看温湿度数据。WIFI是一个无线网络通信技术的品牌,WIFI的运作至少需要1个AP和1个或1个以上的client。AP由路由器搭建的局域网充当,将插上无线网卡的嵌入式开发板看作一个client,然后就可以与其他client进行通信。要使无线网卡能正常工作,首先需加载驱动,然后对其进行一系列设置,使之加入到局域网中。由于开发板上配置有服务器,因此设置好合适IP以后,在手机等浏览器中输入IP,就能查看温湿度数据。

最终实现的效果如图5和图6所示。

图5 显示在LCD上的温湿度曲线

图6 手机和PC访问温湿度数据网页

4 结束语

通过以上综合设计实现的温湿度系统,既可以在LCD屏幕上看到实时动态曲线,又可以用手机查看实时更新的数据网页,实现了物联网所提出的人物相连的概念,使通信交流不仅局限于人与人之间进行。

[1]彭扬,蒋长兵.物联网技术与应用基础[M].北京:中国物资出版社,2011.

[2]车辚辚,孔英会,赵建立,等.基于物联网的智慧实验室设计[J].实验技术与管理,2013,30(10):212-215.

[3]黄峥,古鹏.物联网实验室建设研究与探讨[J].实验技术与管理,2012,29(2):191-195.

[4]彭程.基于物联网技术的智慧农业发展策略研究[J].西安邮电学院学报,2012,17(2):94-98.

[5]周建国,周勇,丁立人,等.物联网技术在大型仪器共享中的应用研究[J].物联网技术,2012(8):74-77.

[6]马荣飞.基于物联网技术网络自适应移动节点资源监测研究[J].计算机工程与设计,2012,33(5):1725-1728.

[7]饶绪黎,张美平,马现虎.基于物联网技术的实验设备运行监控管理系统设计[J].山东大学学报:理学版,2012,47(11):74-77.

[8]冯显英,葛荣雨.基于数字温湿度传感器SHT11的温湿度测控系统[J].自动化仪表,2006,27(1):59-61.

[9]童英华.基于Z-Stack的无线温湿度采集系统[J].现代电子技术,2012,35(23):115-117.

[10]曾宝国.Z-STACK协议栈应用开发分析[J].物联网技术,2011,1(3):71-73.

[11]曾宝国,曾妍.基于 WSN的开放性实验室电源管理系统[J].物联网技术,2012(6):56-58.

[12]马骥,乔双,李丹.基于Web的嵌入式DSP测控系统设计[J].东北师大学报:自然科学版,2007,39(1):41-45.

[13]刘佳,刘柏全,宋铁成,等.一种物联网教学实验系统的设计与实现[J].电气电子教学学报,2010,32(6):89-92.

[14]刘西杰,柳林.HTML、CSS、JavaScript网页制作从入门到精通[M].北京:人民邮电出版社,2013.

猜你喜欢

温湿度串口网页
温湿度控制器在回收砂冷却系统中的应用
浅谈AB PLC串口跟RFID传感器的通讯应用
基于DSP的多路温湿度监测系统
基于温湿度控制的天气预测装置
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
蒸发冷却温湿度独立控制空调系统的应用
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索