美章网 资料文库 远程温湿度监测系统物联网技术论文范文

远程温湿度监测系统物联网技术论文范文

本站小编为你精心准备了远程温湿度监测系统物联网技术论文参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

远程温湿度监测系统物联网技术论文

1模块的具体功能与实现

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

1.1温湿度数据采集模块这部分工作主要是对ZigBee节点内部的单片机模块进行编程。首先考虑到CC2530有3个8位端口组成,端口1、2、3分别用P0,P1,P2来表示,其中,P0和P1是完全的8位端口,而P2仅有5位可用。所有的端口均可以通过SFR寄存器P0、P1和P2位寻址和字节寻址。传感器芯片只提供2个I/O端口:DA-TA和SCK,前者为数据输入输出端口,后者为只可输入的时钟信号端口。因此将P0_0与SCK相连以提供时钟序列,P0_1与DATA相连以读写温湿度数据。在了解硬件连接基础上对数据采集模块进行软件设计,程序由3部分构成:(1)主函数部分:首先调用函数初始化串口通信以及温湿度传感器,然后调用函数获取温湿度数据,最后将数据处理后调用串口控制函数,打印调试信息。(2)温湿度传感器控制部分:具体实现初始化传感器函数,即设置P0端口的相关寄存器;实现获取温湿度数据的函数,根据传感器资料说明,端口按照一定时序发出特定的序列即可进行相应控制;实现将得到的数据进行计算修正的函数。(3)串口打印控制部分:包括从串口获取PC键盘按键值、发送一个字符、发送一串字符等功能使主函数的打印信息能显示在串口通信软件界面上。其主要部分的流程图见图2。

1.2温湿度数据传输模块该模块分为两部分,一为基于Z-Stack协议栈开发使节点与协调器自动组网形成ZigBee网络,并通过该网络实现数据无线传输;二为使协调器与嵌入式核心板中ARM处理器进行串行异步通信,将数据最终交由嵌入式平台处理。Z-Stack采用分布式寻址,兼容AODV路由协议,可以满足近程通信的要求,即使通信链路失效发生也可有效工作。为了区分Z-Stack协议栈中复杂的硬件驱动系统,又提供了OSAL层[10](类似于单片机上的操作系统,实则为根据所触发的事件选择调度相应任务),可调度APP层的任务。另外,Z-Stack提供了源码例程SampleApp。该例程实现的功能主要是协调器自启动(组网)和节点设备自动入网。在了解Z-Stack的工作流程后,程序的开发将在APP层对Sam-pleApp.c进行改写完成。这部分程序主要为利用OSAL层任务事件轮询调度机制,通过系统周期性定时广播数据到group1中去实现。当ZigBee节点加入网络后触发状态改变事件,系统开启定时器,定时时间一到就触发广播消息事件;系统为其创建相应的任务ID,调用广播消息函数;节点端的广播消息函数读取前一个模块得到的数据,利用AF_DataRequest()函数接口调用下层射频硬件驱动函数发送温湿度数据;触发协调器端的接收数据事件处理函数SampleApp_MessageMSGCB(),将捕获的温湿度数据处理后,以字符串的形式通过串口显示在宿主机的终端中,以方便调试和开发。另外,协调器通过异步串行接口将数据交由ARM处理器。

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

2Web服务搭建

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

2.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文件的目录、默认首页文件等相关信息,此外还需根据配置信息在相应的一些目录下创建文件。

2.2网页设计及动态显示网页设计则是利用html制作静态页面,并结合JavaScript实现动态显示。JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言,同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript脚本可以独立成文件,也可以内联到HTML文档之中。另外,利用AJAX实时刷新网页数据。AJAX:异步JavaScript和XML,它是一种在无需重新加载整个网页的情况下,就能更新部分网页的技术[14]。它通过在后台与服务器进行少量的数据交换,便可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分元素进行更新。由于温湿度数据放入数据缓冲区,是利用fopen、fread、fwrite以及fseek函数将数据缓冲区内数据写入XML文本适当位置中,要想读取XML文档中的数据并将它显示在Web页面上,需将XML文件转化为XMLDOM(XML文档对象模型),然后再利用JavaScript来解析并实时它。

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

3结束语

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

作者:朱俊光高健田俊赵敏戚海峰谢亚卓庄建军单位:南京大学电子科学与工程学院电工电子实验中心