基于ZigBee网络的蔬菜工厂监控系统
随着农业规模的不断扩大、自动化程度的不断提高,国内外兴起了对农作物生长过程实施远程监控的研究,其中无线通信技术的快速发展为实现实时监控农作物生长提供了可能。ZigBee技术具有高可靠性、低成本、低功耗、高安全性、低数据速率等特点,广泛应用于工业控制、智能家居、商业楼宇以及农业自动化等领域。本文基于ZigBee无线传感技术,实现了一套基于ZigBee网络的蔬菜工厂监控系统。
1 ZigBee无线传感技术
ZigBee是一种标准,该标准定义了短距离、低数据传输速率无线通信所需要的一系列通信协议。ZigBee协议标准采用分层结构,每一层为上层提供一系列特殊的服务:数据实体提供数据传输服务;管理实体提供所有其他的服务,所有的服务实体都通过服务接入点为上层提供接口,每个服务接入点都支持一定数量的服务原语来实现所需的功能。Zig Bee协议分为两个部分,IEEE802.15.4定义了物理层和媒体访问控制层,ZigBee联盟在此基础上定义了网络层和应用层架构,在应用层内提供了应用支持子层和ZigBee设备对象。ZigBee协议栈将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层API,供用户调用。
2 蔬菜工厂监控系统整体控制框架
蔬菜工厂监控系统整体控制框架如图1所示,由主控机、房间节点监控单元、培菜架节点监控单元3部分组成。在蔬菜工厂里有多个房间,每个房间里配置了一个房间节点监控单元,每个房间里有多个培菜架,每个培菜架上配置了一个培菜架节点监控单元,每个培菜架分为4层。
主控机的功能:1)作为服务器,接收各房间节点和培菜架节点的数据并存储,通过网络浏览器实现蔬菜工厂的整体监控;2)在获得相应权限后,给相关的房间节点和培菜架节点发送控制命令或数据采集命令。
房间节点监控单元(包括整体监控单元)的功能:1)房间节点监控单元负责每个房间的空调控制、二氧化碳浓度采集和电源管理;2)整体监控单元负责中央空调控制、二氧化碳发生器控制以及整个蔬菜工厂的电源管理。
培菜架节点监控单元的功能:1)接收到主控机的数据采集命令后,采集本培莱架的温度、湿度和图像数据,并将数据发送给主控机;2)接收到主控机的控制命令后,控制本培菜架的LED灯的亮暗、营养液循环泵和电磁阀的开关等。
蔬菜工厂监控系统采用如图2所示的人机交互界面,该交互界面采用网页浏览器实现,用户可以登录该浏览器来实现对蔬菜的生长环境及生长状况的实时监控。
3 无线传输网络模块
蔬菜工厂监控系统的无线传输网络模块如图3所示,在无线网络中,配置了一个协调器,一个路由器和多个终端节点。协调器通过RS232连接上位机,与其进行通信,路由器用于无线网络数据的路由转发,终端节点用于各房间和培菜架的数据和命令的收发。
3.1 CC2530单片机
CC2530单片机是一款完全兼容8051内核,同时支持IEEE 802.15.4协议的无线射频单片机,我们采用CC2530单片机来搭建无线传感器网络。
3.2 ZigBee网络中的设备
ZigBee网络中的设备分为3种:1)协调器,主要负责无线网络的建立与维护;2)路由器,主要负责无线网络数据的路由转发;3)终端节点,主要负责无线网络数据的采集。
ZigBee无线传感器网络中的三种设备类型是由ZigBee协议栈不同的编译选项来选择的,它们的硬件部分其实都是一样的,就是协调器多了一个串口,用于和上位机之间的通信。
3.2.1 协调器
协调器流程图如图4所示,协调器上电后,会按照编译时给定的参数,选择合适的信道、合适的网络号,建立ZigBee无线网络。然后,等待路由节点和终端节点加入网络后,上位机通过串口给协调器发送命令,协调器将接收到的命令发送给路由节点和终端节点后,等待和接收返回的数据,判断返回数据的类型并执行相应的操作,如果返回的是地址回复帧,则更新地址列表,如果返回的是确认帧或采集到的数据,则将其通过串口发送给上位机。
3.2.2 路由器
在ZigBee无线网络中,路由器是非常重要的节点设备,它不仅完成路由的功能,更重要的是,它在数据的的传输过程中起了“接力棒”的作用,大大地拓展了数据传输的距离。路由节点上电后,先进行硬件电路的初始化,然后搜索是否有ZigBee无线网络,如果有则自动加入,然后等待接收数据,接收到数据后对其进行转发。路由对于应用层来说是完全透明的。Z—Stack提供了比较完善的路由算法,应用程序只需将数据下发到协议栈中,协议栈会自己负责寻找路径,通过多跳的方式将数据传送到目的地址。
3.2.3 终端节点
终端节点流程图如图4所示。终端节点上电后,先进行硬件电路的初始化,然后搜索是否有ZigBee无线网络,如果有则自动加入,然后等待接收无线数据,解析接收到的无线数据后,向通过485总线连接的STC12LE5204AD单片机发送相应的命令,等待接收单片机采集的数据,接收到数据后将其发送给其父节点。另外,在蔬菜工厂监控系统中,利用每个培菜架节点的串口1连接的串口摄像头来采集图像数据,利用房间节点的串口1连接的二氧化碳传感器来采集二氧化碳浓度,采集到的数据经协调器发送到上位机。
3.2.4 节点之间的数据发送与接收
在发送数据前需要按照通信协议中定义的数据帧格式来构建数据帧,数据帧包括起始字节、帧控制、序列号、目的地址、数据长度、数据载荷以及校验和等信息。数据帧采用如下的结构体来定义:
对于数据帧DataFrame,起始字节start定义为0x55,保留字节reserred暂定义为0x00,为以后扩展所用,帧控制域frameControl用于表示数据包类型、帧类型以及帧属性,序列号serialNumber从0x0001开始,每发送一个数据包,序列号加1,目的地址dstSddr表示发送数据包的目的地址,数据长度dataLen表示整个数据包的长度,包括数据域和其他域,数据域data[500]用于存放有效载荷数据,校验和checkSum是将数据包除了checkSum外所有字节的数据相加,然后对256x256取余,校验和用于远距离通信中保证数据的准确性与完整性。
当需要进行节点之间的数据发送时,可以定义一个事件,在事件处理函数里实现数据的发送。
定义一个事件的方法如下:
#define SEND_DATA_EVENT 0x01;
然后在任务事件处理函数中对该事件作出响应,可以使用如下代码实现:
if(events&SEND_DATA_EVENT)
{
//在此添加相应的数据发送工作即可
returm(events'SEND_DATA_EVENT);
}
数据发送时,只需调用数据发送函数AF_DataRequest()即可,该函数会调用协议栈里与硬件相关的函数最终将数据通过天线发送出去,这里面涉及对射频模块的操作,比如打开发射机、调整发射机的发送功率等,这些协议栈已经实现了,不需要自己去写代码实现,只需知道AF_DataRequest()函数的使用方法即可,发送数据可以使用如下的代码实现(下面例子是以向协调器发送单播数据为例):
当接收到数据后,操作系统会将该数据封装成一个消息,然后放入消息队列中,每个消息都有自己的消息ID,标识接收到新数据的消息的ID是AF_INCOMING_MSG_CMD,在Zig Bee协议栈中AF_INCOMING_MSG_CMD宏的定义如下:
当路由器接收到协调器或终端节点发送来的数据后,首先使用osal_msg_receive函数从消息队列中接收一个消息,然后使用switch-case语句对消息类型进行判断(判断消息ID),如果消息ID是AF_INCOMING_MSG_CMD,调用处理函数GenericApp_MessageMSGCB(),在该函数中,对接收到的数据进行处理。
4 STC12LE5204AD单片机控制和数据采集模块
在蔬菜工厂监控系统中,采用STC12LE5204AD单片机作为控制和数据采集模块。单片机控制和数据采集模块为一485主从机模型,主机为培菜架上的ZigBee无线网络的终端节点,从机为STC12LE5204AD单片机,主机会依次给STC12LE5204AD单片机发送控制命令或数据采集命令,STC12LE5204AD单片机接收到命令后执行相应操作并返回数据给主机。在培菜架的每层配置一个STC12LE5204AD单片机,负责该层的数据采集和执行控制命令。
4.1 STC12LE5204AD单片机
STC12LE5204AD单片机采用增强型8051CPU,片上集成4K字节用户应用程序空间和256字节RAM、15个通用I/O口、4个16位定时器、2路PWM、高速A/D转换、通用全双工异步串行口等。
4.2 STC12LE5204AD单片机模块
在蔬菜工厂监控系统中,利用STC12LE5204AD单片机的P3_5和P3_7两路8位PWM来控制培菜架LED灯板的白灯和红灯的亮暗程度。通过P1_3口控制营养液循环泵的开关,来控制营养液循环系统。通过P1_2口控制电磁阀的开关,来控制排水系统。通过P1_6口连接的温湿度传感器来采集温湿度。
5 实验结果
将协调器、路由器、终端节点和培菜架依次上电,上位机通过串口调试软件向协调器发送控制LED灯命令,可以观察到培菜架上灯板的红灯和白灯的亮度发生变化,并且上位机收到一个确认帧“55 00 09 00 01 00 01 04 0C 00 70 00”。上位机通过串口调试软件向协调器发送采集温湿度命令,会收到采集到的温湿度数据“55 00 05 80 01 00 01 04 18 00 01 15 24 02 13 25 03 13 2E 04 12 2F F5 01”,“01 04”表示04号房间的培菜架1,“01 15 24”表示培菜架第一层的温湿度,“02 13 25"表示培菜架第二层的温湿度。通过串口调试软件定时每500ms发送一次采集温湿度命令,可以观察到数据传输过程中没有出现丢包现象,而且采集到的数据值准确。此外上位机还能发送相应命令来采集二氧化碳浓度、图片数据和控制二氧化碳发生器、营养液循环泵和电磁阀的开关。
6 结束语
蔬菜工厂监控系统基于ZigBee无线传感器网络,以CC2530单片机和STC12LE5204AD单片机为硬件平台,基于ZigBee 2007协议栈,在IAR开发环境下进行软件开发。实验结果表明该系统具有良好的可靠性和稳定性,能够实现对蔬菜生长环境的实时监控,达到了预期的设计要求。