华裕慧, 徐嘉宏, 李东泽, 谢兰桂, 樊中峰, 刘晓义
(东北林业大学机电工程学院,黑龙江 哈尔滨 150040)
在农业自动化灌溉方面,国外一些国家已有非常成熟的技术和产品。早在20世纪40年代,法国就发明出了水力自动阀门[1]。后来随着计算机技术和通信技术的发展,以色列、美国和日本等国逐渐发展出了利用电子集成电路和计算机程序来控制阀门开闭进而控制农业灌溉,以解放人力,推动农业智能化和自动化[2-5]。这既创造了庞大的经济收益,也提高了水资源利用率。如美国英特尔公司在俄勒冈州建造了世界上第一个应用无线通信和无线传感技术的葡萄园,整个葡萄园的管理和灌溉都是由分布在园内大量的无线传感器进行感应和控制节点进行经营的。我国和这些发达国家相比,在节水灌溉方面还有一定的差距。
一直以来,我国大部分地区都采用大水漫灌进行农业灌溉,水资源浪费严重。近些年国家已开始重视地面灌水技术,着力推广国外优秀的地面灌溉技术,一方面积极开发节水灌溉的方法,一方面着力研究节水灌溉装置,设计一个能够对土壤进行定时、定点、定量的灌溉控制系统具有重要的意义[6-12]。
为了使浇水灌溉机高效智能地运行,设计了一种基于zigbee技术和 WiFi 技术的互联网一体网络灌溉控制系统,可以多任务运行处理,使得稳定性和实用性大大提高。ZigBee技术和Wi-Fi技术是目前物联网的主流通信技术。研发方案如下:
(1)选择土壤湿度传感器型号,实时监测土壤湿度。
(2)在土壤缺水时,将检测数据发送到终端进行计算处理,发出信号控制继电器。通过控制继电器的启闭来控制水泵的开关,将土壤含水量控制在作物适合生长的区间内。
(3)对系统的传输方式进行选择,设计网关和无线传输节点,构成无线传感器网络,以实现信息的无线实时传输。
(4)对主控模块和外围模块进行选型及电路设计。
(5)编写传感器模块程序,实现土壤湿度的实时采集。编写执行终端自动控制的程序,调节土壤湿度,将土壤含水量控制在合理的区间内。编写ZigBee组网程序,协调器节点负责组建无线传感网络,终端节点加入网络,终端节点和协调器节点无线收发数据。
(6)实现Wi-Fi网络将ZigBee网络采集到的数据无线透传发送给云服务器,云服务器接收Wi-Fi网络传来的数据并将其储存在数据库中。
(7)编写云服务器与微信服务器的通信程序,使用户可以通过微信客户端实时查看土壤湿度值和水泵启闭状态。
3.1.1 传感器模块
确定土壤含水量是否能满足作物的生长发育主要通过检测土壤湿度来判断,传感器如图1所示。本系统使用的土壤湿度传感器是YL-69土壤湿度传感器,包括探针和电路两部分。探针是传感器感应土壤湿度的设备,材质为钢制探头,表面采用镀镍处理,可以有效防止氧化,解决了接触土壤容易生锈的问题,延长其使用寿命,还有足够宽的感应面积,可以有效提高导电的性能。土壤的湿度变化会引起电路中湿敏电阻的阻值变化,传感器可以输出不同的电压值,单片机的ADC模块通过一定的运算将电压值转化为湿度值,本系统需要得到准确的土壤湿度参数,因此使用输出准确的模拟信号。本系统使用传感器输出的模拟信号,用终端节点CC2530底板的P0.5引脚与传感器的AO引脚相连,DO引脚并未用到,悬空处理。
图1 YL-69传感器
3.1.2 执行模块
当系统通过传感器检测到土壤湿度低于设定值时,系统开始对土壤进行灌溉,直到土壤湿度到达上限为止,系统通过继电器SRD-03VDC-SL-C和直流水泵来实现该功能。SRD-03VDC-SL-C继电器是电磁式继电器,其有两个作用,一是提高单片机的驱动能力,单片机所能输出的电流很小,难以驱动需要大电流、大电压的直流水泵,使用继电器可以将执行电路分成由单片机和继电器组成的控制电路和由继电器、水泵、外接电源组成的被控制回路,这样单片机只要输出一个低电流、低电压的信号来控制继电器就可以间接控制直流水泵;另一个作用是根据控制信号的变化接通或断开控制电路,因此常用于自动控制电路中,在电路中起着自动调节、安全保护、转换电路等作用。继电器由电磁系统和触头系统构成,电磁系统的线圈部分有三个接口VCC、GND和IN,VCC与3.3V电源相连,GND与地相连,IN与单片机P0.7相连,负责接收单片机的控制信号。触头系统有三个接口常开端、常闭端和公共端,负责控制被控制回路的闭合和断开。
3.1.3 电源模块
节点的主控模块CC2530、土壤湿度传感器、Wi-Fi模块esp8266和执行模块继电器需要3.3 V电压,直流水泵需要5V电压。电源模块的设计如图2所示,J1为外接电源座,与外接5 V电源相连。SW-PWE为电源开关。R1为限流保护电阻保护电路,稳压管D4确保输出5 V电压。由于系统还需3.3 V电源,因此需要低压差稳压器,本系统选用正向低压差三端线性稳压器AMS1117电压转换芯片将5 V电压转换为3.3 V电压。AMS1117共有三个引脚,一个是GND,与地相连,一个是VIN电压输入引脚,与输入的5V电源相连,最后一个是VOUT电压输出引脚,输出3.3 V电压。在VIN、VOUT和地之间各放了一个旁路电容,来保护电路、稳定电压,另外水泵需2 A的电流,该电流单片机无法提供,因此直流水泵需要外接一个电源。
图2 电源模块电路连接
3.1.4 Wi-Fi模块
系统需要实现远程监控的功能,就要实现节点与外界的通讯。而ZigBee技术只适用于ZigBee节点之间的无线通讯,既不能用于ZigBee节点与其他微处理器的无线通讯,也不能用于ZigBee节点与云服务器之间的通信,无法完成远程通信的任务。为解决这一问题,设计了Wi-Fi模块作为ZigBee网络与云服务器通信的介质,实现ZigBee网络与云服务器之间的数据传输,ZigBee协调器节点和Wi-Fi模块通过串口进行通信,Wi-Fi模块和云服务器通过TCP/IP进行通信。本系统的Wi-Fi模块采用esp8266-12F芯片,封装如图3所示。
3.1.5 微处理器模块
选用TI公司的CC2530F256芯片,CC2530是用于IEEE802.15.4和ZigBee的片上系统解决方案,封装如图4所示,在硬件上结合了领先的RF收发器,增强型8051内核,256KBFlash以及8KBRAM,资源丰富,软件上使用了TI公司最新开发的ZigBee2007协议栈Z-Stack,能够以非常低的成本建立强大的网络节点,提供了完整的ZigBee解决方案,拥有低功耗、低成本、短时延等优点。CC2530F256在系统中的主要任务是数据处理和无线通信,对土壤湿度传感器采集的信息进行数据处理并实现自动控制,终端节点将信息发送给协调器节点,协调器接收信息并与Wi-Fi模块进行信息交互。
图3 esp8266-12F封装
图4 CC2530F256封装
3.1.6 ZigBee节点电路设计
为减小每个节点的占地面积,便于设备维护及扩展使用,每个节点电路板都采用核心板+底板的模式。核心板包括微处理器模块主控芯片和必要的外围电路,底板包括与其他外设的接口电路。核心板上的外围电路主要有射频电路、晶振电路电源去耦电路和I/O引脚外接扩展接口连接电路。ZigBee终端节点和ZigBee协调器节点的总体硬件设计如图5(a)和图5(b)所示。
图5 ZigBee节点电路设计
除微处理器模块外,ZigBee节点核心板电路还包括射频电路、晶振电路电源去耦电路和I/O引脚外接扩展接口连接电路构成的外围电路。
本系统外接的两个晶振,一个是32 MHz晶振,主要用于RF收发器,另一个是32768手表晶振,为系统需要的时间精度提供稳定的时钟信号。
射频CC2530有两个引脚用来连接无线射频电路,分别是无线射频输入引脚RF_N和无线输入引脚RF_P,是一对差分输入输出信号,右侧是一个50 Ω的单端输入天线,由于使用不平衡单极子天线,需要匹配电路来进行射频收发信号的匹配。本系统为降低成本,使用L2、L3两个电感元件和C9、C13两个电容元件构成了匹配电路,如图6所示。
图6 CC2530节点核心板电路
为便于节点底板扩展使用核心板上的I/O接口,设计了两个外接扩展模块将核心板的I/O接口引出,使用时直接将接口插到底板上的插槽上即可。
为满足系统功能,还设计了一些外围电路:RBIAS引脚即30引脚连接了一个56 kΩ的外部精密偏置电阻,为单片机提供基准电流;DCOUPL引脚即40引脚连接了一个退耦电容,去除芯片电源管脚上的噪声;模拟部分电源正极AVCC和数字部分电源正极DVCC与电源相连;1、2、3、4引脚接地。
ZigBee节点底板集成了电源接口、JTAG接口、按键、LED灯、tft屏接口、USB转串口电路、核心板插槽和外界模块接口等,可以根据需要插拔不同的扩展模块。
JTAG技术是一种技术标准,是为了在线测试需要而发展起来的针对芯片及线路板测试的接口技术。本系统采用双排10pin2.54mm间距通用插槽,以连接仿真器下载调试程序。
为便于调试和显示一些用户想要显示的内容,系统设计了tft屏幕接口,st7735s型tft屏幕是一种有源矩阵液晶显示器,拥有亮度好、对比度高、层次感强等优点。
为便于调试系统,设计了六个LED灯,其中有三个灯为组网指示灯,当终端节点成功加入协调器节点建立的网络后就会亮起,另配有一个串口收发指示灯。
系统设计了三个按键,其中包含一个复位按键,可对单片机进行复位,按下后对单片机复位引脚写进低电平,单片机复位,另外两个按键本系统中并未使用。
本系统选用CH340G芯片来完成USB通讯协议和标准UART串行通讯协议的转换。CH340G芯片是一款USB转串口芯片,内置时钟,使用方便。该USB接口有串口功能,除可以实现与PC之间的通讯外还可以对单片机供电。USB转串口电路中芯片VCC引脚与电源相连,XI和XO引脚与12 M外部晶振相连,并配有两个滤波电容,UD+和UD-引脚与USB的两个数据引脚相连,传递数据,TXD和RXD引脚与单片机P0.2/RX、P0.3/TX引脚相连。为使用核心板引出的引脚,系统设计了核心板的插槽,以便使用CC2530这24个引脚。为更加方便地根据所要实现的功能进行引脚连接,进行功能拓展,本系统设计了3个功能拓展模块,每个模块均有三个引脚,分别是电源引脚、接地引脚和控制引脚,用于与传感器模块、执行模块和Wi-Fi网关相连,使用时直接插拔即可。
3.1.7 PCB设计
电路原理图设计完成后将元件封装设计相应的PCB板。本设计电源线采用的是15mil,在PCB设计过程中,尽量将相同元件摆放在一起,防止信号干扰,减少走线距离、打孔数量和背面走线。CC2530底板和核心板的PCB设计分别如图7和图8所示。
图7 CC2530节点底板设计
图8 CC2530节点核心板设计
软件设计分为ZigBee网络设计、Wi-Fi网络设计和云服务器程序设计三部分,ZigBee网络设计包括协调器节点组网、终端节点入网、采集土壤湿度、自动调节土壤湿度、ZigBee节点之间通讯和协调器节点通过串口与Wi-Fi网络进行通信;Wi-Fi网络包括接收ZigBee节点信息、设置为云服务器的客户端和将数据无线透传给云服务器;云服务器程序设计包括接收并储存Wi-Fi网络传输来的数据、与微信服务器进行连接、根据微信服务器发来的信息访问数据库。系统软件设计功能框图如图9所示。ZigBee网络程序使用C语言进行编程,Wi-Fi网络程序使用AT语言和C语言进行编程,云服务器程序使用PHP语言进行编程。
图9 系统软件设计功能框图
3.2.1 ZigBee网络
ZigBee网络的功能由协调器节点和终端节点来实现,首先由协调器节点组建网络,终端节点扫描周围的网络然后加入协调器节点组建的网络,入网后开始实时采集土壤湿度,当土壤湿度低于设定的下阈值时打开水泵,当灌溉一定时间后到达上阈值时关闭水泵,终端节点在检测和控制水泵时不断将土壤湿度值和水泵启闭状态发送给协调器节点,协调器节点收到数据后将数据整合然后通过串口将整合之后的数据发送给esp8266Wi-Fi模块。
3.2.2 Wi-Fi网络
为了进行数据的远程传输,在系统中添加了Wi-Fi网关,充当ZigBee网络和云服务器通讯的媒介。使用Wi-Fi的无线透传功能进行数据传输,所谓无线透传,就是当ZigBee网络将数据传输给esp8266之后,esp8266对ZigBee网络传来的数据进行封装,然后通过Wi-Fi网络发送出去,通过Wi-Fi网络与云服务器进行数据交互时,把数据的封装解开,还原回ZigBee网络传送的数据原样。在这个过程中,虽然数据在Wi-Fi网络传输的过程中被封装了,但是离开Wi-Fi网络之后又回到了原来的结构,因此相当于Wi-Fi网络把数据原封不动地传输了出去,相当于Wi-Fi网络是透明的,因此叫做无线透传。本系统直接用串口助手给esp8266发送AT指令,并将其保存在esp8266的flash当中,这样esp8266每次上电就会自动配置为无线透传模式。Wi-Fi网络部分采用AT指令和C语言编程。
通过esp8266与云服务器进行通信采用的C/S(Client/Server)结构,此时esp8266充当客户端,而云服务器充当服务器,降低了系统的通讯开销,是应用系统的主流结构。数据通过esp8266客户端无线透传给云服务器,云服务器接收esp8266客户端发来的数据并进行相应的处理。
3.2.3 新浪云网络平台
在手机微信终端实现的所有功能都是依靠微信服务器进行的,但是微信服务器并不能直接和Wi-Fi网络或者ZigBee网络进行通讯,因此要给Wi-Fi网络和微信服务器之间再引进一个媒介,也就是云服务器,本系统选用的是新浪云。本系统中云服务器主要负责实现接收并存储Wi-Fi网络传递的数据、与微信服务器通讯两部分功能。
在新浪云计算服务器申请一个帐号,配置编程语言为php5.3,用SVN管理代码。申请一个微信公众平台接口测试帐号,接口信息包括URL和Token。URL是用来接收微信服务器数据的接口域名,在本系统就是申请的新浪云服务器。Token则是与云服务器进行通信的密码或者说信物,在云服务器部分同样需要设置一个token,二者相同即可通信。配置完接口信息后,微信服务器会马上给填写的URL也就是云服务器发送一个GET请求,这个GET请求含有signature、timestamp、nonce和echostr四个参数,其中signature中含有填写的token。在云服务器中用define函数定义一个常量TOKEN,常量的值为nefujzggkzxt,这个常量的值要和配置微信服务器接口信息时设置的token值相同,只有这样二者才能进行通信。系统在新浪云中新建了一个共享型MySQL数据库,数据库名app_nefujzggkzxt,并在数据库中建立一个表device用来存放土壤湿度值和水泵启闭状态。云服务器收到新的湿度值和水泵状态后就更新一次数据库,更新的过程分为连接数据库、选择数据库、更新数据库和关闭数据库四步。
本系统的实物主要是ZigBee的两个节点:协调器节点和终端节点。终端节点与屏幕、天线、YL-69土壤湿度传感器、SRD-03VDC-SL-C继电器相连,而继电器和直流水泵、外接电源相连构成执行被控制回路。协调器节点和屏幕、天线、esp8266网关相连。总体工作原理如图10所示。调试的时间节点通过SmartRF04EB仿真器和miniUSB线与PC相连,将程序下载到节点当中,观察屏幕和手机微信终端的反应。通过IARfor8051将ZigBee网络程序和Wi-Fi网络的C语言程序下载至节点当中,通过串口助手将Wi-Fi网络的AT指令发送到esp8266网关当中,云服务器程序从Notepad++上传至SAE当中。
图10 系统总体工作原理
经过测试,通过传感器采集的土壤湿度信息可以显示在协调器节点和终端节点的屏幕上,在土壤湿度过低时水泵打开,当湿度升高到上限值时水泵关闭,同时在手机终端可以通过文本、语音和菜单按键的形式查询实时湿度信息和水泵启闭状态,如图11所示。节点实物图如图12和图13所示。
图11 通过文本、语音和菜单按键查询湿度信息和水泵启闭状态
图12 终端节点硬件连接实物图
(1)精准灌溉控制系统首先在灌溉地点采用了ZigBee无线传感技术,保证了近距离、低功耗、低成本的双向无线通讯
(2)通过对土壤湿度的实时采集,编写执行模块自动控制的程序,调节土壤湿度,将土壤含水量控制在合理的区间内。
(3)用户可以通过手机微信服务器访问云服务器数据库,查看实时的土壤湿度和灌溉信息,实现了自动调节控制和实时远距离监测,相较于传统定时灌溉系统使用可靠性更高,利于维护。
(4)控制系统结构紧凑,体积小,使用户在水肥一体化灌溉上有更大的改进空间,大大节约了水资源。
(5)写云服务器程序,使其能够接收 Wi-Fi 网络传输来的数据并将其存储在数据库当中,当用户通过微信服务器发来数据请求时,从数据库中取出数据并将其发送给用户。
精准灌溉系统可以通过采用高精度湿度传感器,依据土壤墒情和作物特点实施精准灌溉,不仅能有效解决农业灌溉用水使用率低的问题,并且还能为大棚温室作物或者露天作物提供良好的生存环境。充分发挥现有节水设备的作用,优化调度,可配合水肥一体化控制系统提高效益,提高维护水平。同时应用物联网主流通讯技术实现了对土壤以及设备使用情况的远距离实时监测,节约了人力和财力。