0 引言
上世纪80 年代发达国家率先提出智能化住宅概念,智能化住宅对家居智能系统的发展起很大促进作用,同时家居信息采集作为住宅智能化起核心作用的一部分,推动着智能化家居的发展。家居信息采集系统预定完成的目标是让使用家庭更方便、更舒适、更安全,同时也符合环境保护的标准。
上世纪90 年代我国首次提出家居信息采集设计思想,同时发展迅速。
小区智能化的定义为:利用计算机、通讯网络、自动化技术和射频卡技术,通过高效的信号传输网络,将多元化信息和管理服务、物业管理与安防技术集成,为小区的服务和管理提升到智能化阶段,以实现快速、方便的服务。
本设计中利用Zigbee数传技术和以太网技术实现了对远程家居信息的采集,同时利用以太网技术将采集到的数据信息通过以太网模块实现网络监控数据实时更新。
1 硬件电路及软件代码设计
本设计所完成的功能需要两块硬件电路:Zigbee无线模块和串口转以太网模块。
由于TI 公司在设计Zigbee 芯片时有较完善的Zigbee外围硬件电路设计方案,所以本文采用TI公司原始的设计方案并根据需要作适当的修改。串口转以太网模块是针对数据显示方面的具体应用,实现RS232 通信协议和以太网通信协议间的转换。
Zigbee无线模块功能是Zigbee数据采集节点采集到的温湿度数据和烟雾数据通过Zigbee 通信协议发送到Zigbee 协调器节点,然后通过RS232 串口通信协议传输到串口转以太网模块。
串口转以太网模块功能是当串口接收到Zigbee协调器节点传来的数据包时,通过微控制器移植的uIP协议栈进行处理,并将处理后的IP 数据包通过远程DMA 操作写入以太网控制芯片,并由以太网控制芯片处理发送。
采用的CC2530 Zigbee 无线模块是TI 公司基于CC2530芯片设计的一款Zigbee数传射频芯片。串口转以太网模块结构图如图1 所示。
图1 串口转以太网模块结构图
单片机选用STC公司的STC
与以太网的接口芯片采用RealTek公司的RTL8019 系列网络芯片。
设计中RTL8019 主要实现底层协议DLC、MAC并提供网络接口,51 内核单片机实现嵌入式的TCP/IP协议栈部分功能和具体应用,电源模块采用USB供电模块,通信电路采用RS232 串行接口,网络接口使用RJ45。
RTL8019 是
RTL8019 有三种工作方式,即跳线方式、免跳线方式、即插即用方式。
1.1 Zigbee模块传感器选择
温度传感器采用DS18B20,它采取单总线协议,经一个IO口进行读写操作以获取温度数据。湿度传感器采用湿敏电阻。但分立的采用两个传感器不利于资源整合和节能需求,因此设计中采用了温湿度一体的传感器芯片DHT11。
DHT11 传感器是一个专用的数字式温湿度传感器。其采用电阻元件感应湿度,获取湿度数据;利用一个NTC测温元件感知温度数据,温度测量范围为
设计中采用了MQ-2烟雾报警器,该报警器广泛应用在家庭和工厂的气体泄漏监测,适合丁烷、酒精、烟雾、一氧化碳等探测,具有灵敏度高、快速响应、稳定、寿命长和驱动电路简单等优点。
1.2 Zigbee 组网步骤
Z-Stack 协议栈支持三种种类型网络方式:树形、星形网络和网状网络。设计中,传感器节点和协调器节点组建成星型网络。
组网步骤如下:
(1)定义Zigbee 数传模块各个节点的属性。这样就需要使用到Zstack协议栈的zgDeviceLogicalType=ZG_DEVICETYPE_ENDDEVICE函数将传感器节点属性定义为终端节点,将与网关模块相连接的节点通过zgDeviceLogicalType=
ZG_DEVICETYPE_COORDINATOR 函数定义为协调器节点。
(2)为各Zigbee 数传模块节点分配64 位地址。用户可以自行定义64 位长地址,当用户定义错误时,系统会随机生成地址。
(3)给Zigbee无线模块上电后,协调器节点会自动选择通信质量好、空闲的信道组建Zigbee 网络,同时发布14 位PAN ID,并侦听有没有节点需要加入网络。
(4)当终端节点接入电源后,它会自动搜索附近存在的Zigbee 网络。如果有网络就发送加入网络请求,然后等待协调器节点响应,当协调器节点感知到请求并同意请求后终端节点加入网络。最终,终端节点和协调器节点建立起一个完整的Zigbee 星型网络。
1.3 uIP协议栈移植
uIP协议栈的代码采用用C语言编写,可以非常方便的移植到不同的操作系统结构中。其编译栈能够在很小容量的ROM或RAM中运行,并且有一个全局缓冲区,该区域里面能包括硬件处理层、协议栈层和应用层的缓存数据,不需要对数据进行拷贝处理,极大的节省存储空间,支持多个主动和被动连接并发。
协议栈结构图如图2 所示。
图2 uIP协议栈结构图
uIP 协议栈通过函数uip-input()和静态全局变量uip-buf、uip-len 实现与网络设备驱动的连接。数组uip-buf 指定的缓存区存放嵌入式系统接收和将要发送的数据包。为减少存储器的使用,接收和即将发送的数据包使用同一个缓存区存放。变量uip-len为接收发送缓存区的数据包长度,判断该变量数值大小来判断系统是否接收到新数据,或是否有数据需要发送到网络上[6]。网络设备驱动接收到一个数据包后,将其存放到uip-buf中,并将数据包长度写入uip-len,然后调用函数uip-input()。函数uip-input()是uIP协议栈的底层入口,由其处理收到的数据包。函数uip-input()返回后,若有新数据需要发送,则把数据存放到数组uip-buf指定的缓存区中,数据长度存放在变量uiplen中。系统判断uip-len 的值,若uip- len 等于0,则表示无数据包要发送;若uip- len大于0,则表示有新数据需要发送,调用网络设备驱动发送数据。
基于单片机的uIP协议栈的移植有以下九个步骤:
(1)建立KEILC工程文件,并建立src 目录存储源文件。
(2)将协议栈代码主函数文件放入src 源文件目录下。
(3)参考uIP协议栈源代码里面的tapdev.c文件和以太网驱动芯片资料编写网卡驱动程序。
(4)uIP 协议栈需要使用时钟为TCP 和ARP 提供定时器服务,因此触发定时器0 模式作为时钟,每隔20ms 让计数器变量time_cnt加1,time_cnt 加到25 即0.5s 后调用TCP 定时处理程序,在10s 后调用ARP 老化程序。
(5)在uIP 协议栈源代码中找到uip.c 和uip.h 文件,并将其复制到src文件夹中,若需要使用ARP协议,则将uip_arp.c和uip_arp.h 文件也放人src 下。
(6)找到uipopt.h 和uip-conf.h 文件,这两个文件对本地IP 地址、MAC 地址、侦听数、ARP 表大小等参数进行配置。
(7)编译代码找出错误并改正使其编译通过。
1.4 显示界面的编写
为了用户能够实对数据有直观掌握,设计一个网页用于实时了解家庭温度、湿度和烟雾情况的监控。采用HTML(Hyper Text Mark-up Language)超文本标记语言,其制作简单,功能强大,支持插入不同数据文件格式,具有简易性、可扩展性、平台无关性以及通用性等特点。uIP 协议栈在应用层设计有Web浏览器,能够通过Web浏览器读取HTML网页文件,同时用网页形式显示出来。
浏览器不会直接显示标签,而是通过标签内容解释相关网页。
超文本标记语言设计网页的整体框架如下:
<html>
<head>
<title>页面标题</title>
</head>
<body>
主体文件内容
</body>
</html>
2 系统测试
2.1 节点模块性能测试
家居信息采集系统采用星型网络方式组建,CC2530单片机在
图3 终端节点和协调器节点读取数据对比图
在调试过程中,首先读取终端Zigbee 数据采集节点采集到的数据,然后在读取协调器节点的数据,做出对比,刚开始打开串口的一段时间内没有数据接收,这是由于终端节点和协调器节点间在进行组网操作,大约30s 后能接收到数据,通过接收到的数据可判别通信的准确性,图3 为终端Zigbee 数据采集节点和协调器节点读取数据的对比图,从图中可以看出,左端串口助手读取的是终端节点采集到的数据,在数据格式中T&H&S分别代表了采集到的温度、湿度和烟雾浓度,接着的三组数据分别代表了温度、湿度和烟雾浓度的数值,右端的是协调器节点收到终端节点发送的数据然后用串口显示的结果。
2.2 串口转以太网模块性能测试
本设计在测试时选用了一款RS232 转RJ45 服务器测试软件,该软件能显示网关RJ45 接口接收到的从串口中传输来的数据,同时与串口发送的数据相比对,测试数据传输的准确性,测试结果如图4 所示
。
图4 RS232 转RJ45服务测试软件测试结果
2.3 整体性能测试测试
网页动态显示结果如图5 和6 所示,图5 和6 分别代表了两个时刻网页显示的数据。测试时通过人为的改变温湿度和烟雾传感器采集的数据来测试整体模块的性能,从图5和6 能够看出改变的数据来验证整体实现的功能。
图5 网页显示结果
图6 网页显示结果
3 结语
基于Zigbee数传模块和以太网的家居信息采集系统是将Zigbee数据采集、发送和网络信息相结合,用串口转以太网形式将Zigbee数据采集节点采集到的数据发送到网络中,并通过网络设备显示监控的数据。完成了硬件电路和软件设计调试,移植了uip协议栈实现了以太网的功能,尽可能地降低代码量,节约了成本,具有很高的应用价值。
原文地址:http://jlinkcn.blog.51cto.com/9948825/1622020