张 萍,胡应坤
(广东工贸职业技术学院,广东 广州 510510)
我国虽是农业大国,但并非农业强国,农业信息化水平有待进一步提高。传统农业多为粗放种植,生产效率低下,考虑利用信息化手段对传统农业进行改造。文中按照物联网三层体系结构构建了智能农业温控系统[1],该系统可对农田进行实时监控、精细管理,提高农业生产率。
智能农业温控系统由四部分组成,即手机APP,OneNET云平台上的虚拟设备[2],智能农业温控系统网关,ZigBee子系统。ZigBee子系统由协调器和终端组成,采用ZigBee无线通信,也可与智能农业温控系统网关通过串口通信。智能农业温控系统结构如图1所示。
图1 智能农业温控系统结构
数据流分为两类,即采集到的传感器数据(上行数据)及用户通过手机APP发出的控制指令(下行数据)。智能农业温控数据流程如图2所示。
图2 智能农业温控数据流程
上行数据流:ZigBee采集终端接温湿度传感器,采集温湿度数据,通过ZigBee无线通信方式发送给ZigBee协调器,协调器通过串口发送给网关,网关再经OneNET云平台发送给手机APP,手机APP展示实时温湿度数据。
下行数据流:手机APP发出设备控制指令,经OneNET云平台发送至网关,由网关通过串口发送给协调器,协调器借助ZigBee无线通信方式将命令发送至ZigBee控制终端,ZigBee控制终端通过继电器外接设备控制设备运行。
手机APP以Android Studio作为开发平台,设计了登录、日志、温湿度显示、温湿度控制4个UI,手机APP借助EDP协议与云平台通信。手机APP工作流程如图3所示。
手机APP、智能农业温控系统网关采用EDP协议与中国移动通信集团的物联网开放云平台OneNET通信,借助云平台实现手机APP和智能农业温控系统网关的点对点通信。OneNET云平台上虚拟设备显示界面如图4所示。
图3 手机APP工作流程
图4 OneNET云平台上虚拟设备显示界面
云平台上建有2个虚拟设备STM32网关、手机客户端,分别对应智能农业温控系统网关和手机APP。网关和手机APP登录云平台时,需发送APIKey和设备ID[3]至云平台。相同的APIKey即表示设备需要关联到同一个应用,平台接收到设备ID即表示真实设备上线。以EDP协议进行数据传输时,需在EDP协议中填入目的设备ID,云平台根据目的设备ID转发,实现点对点通信。
智能农业温控系统网关包括硬件和软件两部分。
3.3.1 硬件部分
硬件主要包括五大模块:无线通信(WiFi)模块、ZigBee协调器模块、微处理器(主控)模块、SD卡读取(存储)模块、供电模块,如图5所示。
图5 智能农业温控系统硬件模块
微处理器模块采用STM32F103ZET6作为MCU,其具有64 KB SRAM、512 KB FLASH、2个基本定时器、4个通用定时器、2个高级定时器、5个串口、1个 USB以及112个通用I/O口等,能满足现有需求和后续功能拓展需求。
无线通信模块采用ALIENTEK推出的高性能UARTWiFi模块ATK-ESP8266。微处理器模块只需进行简单的串口配置,即可通过ATK-ESP8266板载的TCP/IP协议栈传输数据。
微处理器模块通过串口外接ZigBee协调器,通过SDIO口读取SD卡数据。在ZigBee子系统内部,采集终端和控制终端通过协调器与微处理器模块通信。
3.3.2 软件部分
基于STM32库函数开发网关程序,使用中断和轮询实现多任务并行。程序有3个串口中断,功能如下:
(1)串口1是调试接口,可通过串口1打印调试信息,在实际使用时可关闭;
(2)串口2连接ZigBee协调器,负责接收采集终端的数据及发送控制信息至控制终端;
(3)串口3连接ATK-ESP8266,负责发送数据给云平台,并接收云平台反馈的信息。
主流程采用轮询方式,定时检查串口2是否有新的温湿度数据,串口3是否有云平台发送的指令,若有新指令则将解析出来的结果通过串口2发送给ZigBee协调器。
SD卡存储关键配置信息,如设备ID、目的设备ID、APIKey、接入热点名、接入热点密码、云服务器IP地址、云服务器端口等。
智能农业温控系统网关流程如图6所示。
ZigBee子系统[4]包含协调器、终端和外接模块。协调器和终端的主控芯片为CC2530单片机,内置Z-Stack协议栈,可实现ZigBee无线通信。外接模块包括DHT11温湿度数字传感器和风扇控制电路。
协调器不但负责组建和维护ZigBee通信网络,同时还负责与外部通信,将采集终端采集的数据转发至外部,或从外部接收指令转发给相应的控制终端。终端使用不同GPIO口外接DHT11温湿度采集模块和风扇控制电路,具有数据采集和控制设备功能。
文中使用DHT11[5]作为温湿度传感器。DHT11是一款能够采集温湿度数据的数字传感器,与单片机等微处理器进行简单的电路连接就能够实时采集本地湿度和温度数据。DHT11与单片机之间可采用单总线通信,仅仅需要一个I/O口即可。采集一次,共产生40 bit的温湿度数据,通过单总线一次性传给单片机,数据采用校验和方式进行校验,有效保证了数据传输的准确性。模块功耗较低,采用5 V电源电压时,模块最大平均工作电流为0.5 mA。终端和DHT11接线如图7所示。
图6 智能农业温控系统网关流程
图7 ZigBee终端与DHT11接线图
采用继电器控制风扇开关接线如图8所示,智能农业温控系统通信流程如图9所示。
智能农业温控系统中,手机APP、网关和OneNET云平台通信,底层采用EDP协议,在EDP数据部分使用JSON数据格式,在JSON上承载自定义协议1。网关和协调器之间使用自定义协议2。在ZigBee子系统内部,ZigBee协议之上承载自定义协议2。EDP、JSON、ZigBee都是目前使用较为广泛的协议或数据格式,下面详细介绍自定义的两种协议。
图8 利用继电器控制风扇开关接线图
图9 智能农业温控系统通信流程
自定义协义1用于终端和云平台通信,定义EDP协议中的消息体格式,主要支持三种功能。
(1)手机APP登录内容格式如图10所示。
图10 手机APP登录内容格式
(2)手机APP下发控制命令格式如图11所示。
图11 控制命令内容格式
(3)网关上传温湿度数据格式如图12所示。
图12 温湿度数据格式
自定义协义2用于网关和ZigBee子系统内部通信。
(1)控制终端的命令,即从网关→协调器→终端。命令格式如图13所示。
图13 命令格式
校验(1 B)按字节进行异或操作得到,用于校验数据在传输过程中是否发生变化。目前功能码只支持2个值,后期添加新功能后,可设定新的功能码,如图14所示。
图14 功能码
当功能码确定之后,数据字段表示具体操作,如功能码为0x0a,数字字段1表示关风扇,0表示开风扇。
(2)具体某个终端响应,即从终端→协调器→网关,格式如图15所示。
图15 终端格式
终端地址即该终端的地址,功能码与数据均来自接收到的命令。比如开启地址为0001的风扇:
命令(协调器→终端)为3A 00 01 0A 00 31 23
响应(终端→协调器)为3A 00 01 0A 00 31 23
(3)查询传感器数据,即网关→协调器→终端。比如命令为3A 00 FF 01 C4 23,其中3A为起始码,00FF表示所有传感器,协调器会将该命令发给网络中所有节点,01表示查询功能,无数据字段,C4为校验码,23为结束码。
(4)传感器数据响应,终端→协调器→网关。比如数据:3A 00 FF 01 1E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 92 23,其中3A为起始码,00FF来自收到命令中的地址字段,01为功能码,表示查询所有传感器数据,92为校验码,23为结束符。考虑到功能拓展,设计协议时有一定冗余,16个字节表示数据来自4个终端节点,每4个字节表示每个终端节点外接4种不同的传感器,目前只实现了每个终端节点外接温湿度传感器,因此只有1个字节的数据是有效的,其他均为0。
通过智能农业温控系统网关串口1输出调试信息。采集温湿度数据界面如图16所示,接收控制命令界面如图17所示。
图16 采集温湿度数据界面
图17 接收控制命令界面
本文基于物联网云平台构建的智能农业温控系统,可利用手机实时监控农作物周边环境温度,远程控制降温设备(比如风扇)的开启、关闭。设计时考虑到后续功能的拓展,可以外接传感器采集环境数据,或外接控制设备进行环境调控,扩展性好。