基于Arduino 与Blinker 云平台的温室大棚环境监控及自动灌溉系统设计
2024-01-23黄业源李守晓
黄业源,李守晓
(天津农学院 计算机与信息工程学院,天津 300384)
0 引 言
随着嵌入式技术的更新换代,系统设计和可实现的功能越来越多,单一进行环境数据测量的大棚监测设计已经不能满足实际应用需求,需要考虑设计更多的系统功能,如能远程控制与上位机的展示和交互界面等[1-2]。近年来,随着云计算、云存储、物联网技术的发展,通过手机端进行农业苗情、墒情等数据展示与控制的优势日益凸显[3-6]。因此,本文设计了单片机+Blinker 云端+手机APP 的智能大棚环境监控及自动灌溉系统。
1 系统概述
本设计采用一块Arduino UNO R3 单片机作为主控单元,ESP8266 WiFi 模块作为数据传输单元,使用的传感器有GY-30 光照强度传感器、DHT11 空气温湿度传感器、土壤湿度传感器;外围设备有继电器、风扇和水泵。系统框图如图1 所示。
图1 系统整体框图
在用户端的手机APP 界面,有6 个数据展示控件,分别展示了空气温湿度、土壤湿度、光照强度、需水量和需肥量的实时数据;2 个按钮控件,分别控制水泵进行水肥抽取灌溉和控制风扇进行降温。
2 硬件设计
2.1 Arduino 单片机
Arduino UNO R3 是一款基于ATmega328P 的微控制器板[7]。它有14 个数字输入/输出引脚(其中6 个可用作PWM 输出),用于连接数字输入/输出设备,如LED、开关、传感器等;5 个电源引脚,用于连接电源,包括GND、5 V、3.3 V、Vin 和RESET;6 个模拟输入,用于连接模拟输入设备,如温度传感器、压力传感器等;1 个串口引脚,用于连接串口设备,如调试器等;2 个I2C 引脚,用于连接I2C 设备,如I2C LCD、I2C E2PROM 等;1 个SPI 引脚,用于连接SPI设备,如SD 卡模块等。Arduino UNO R3 还可以使用各种扩展板(如传感器板、通信模块等)来扩展其功能,可以通过连接扩展板方便地进行物联网、机器人和自动化等应用领域系统的开发。
2.2 ESP8266 WiFi 模块
本设计使用的是ESP826612-E NodeMCU Lua V3开发板作为传输核心模块,这是一种基于ESP8266 芯片的开发板,支持Lua 脚本语言,支持WiFi 连接,可以用于开发各种无线应用。另外它还支持多种常见的传感器,例如DHT11/DHT22 温湿度传感器、DS18B20 温度传感器等。ESP8266 NodeMCU Lua V3 开发板的主要参数如下:
(1) 处理器存储器:Tensilica L106 32 位RISC 处理器,处理器主频最高80 MHz,存储器4 MB 闪存;
(2)WiFi 模块:IEEE 802.11 b/g/n(2.4 GHz);
(3)GPIO 引脚:共17 个,其中GPIO6-11 为ESP8266的SDIO 接口,可用于连接相关SPI 设备;
(4)安全支持:WEP、WPA/WPA2 PSK/Enterprise;
(5)开发环境:支持Lua 脚本语言、Arduino IDE 等;
(6)ADC 输入:最多支持1 个通道(0 ~3.3 V 输入范围);
(7)USB 接口:用于串口调试和电源供应(5 V DC)。
与其他版本的ESP8266 相比,它具有以下特点:内置4 MB 闪存,共有17 个GPIO,其中GPIO 6 ~11 可用于连接SPI 设备,支持深度睡眠模式,可以实现低功耗应用;新增Reset 和FLASH 按钮,可方便地对开发板进行复位和烧录操作。ESP8266 各项参数见表1 所列。
表1 ESP8266 各项参数
2.3 DHT11 温湿度传感器
DHT11 数字温湿度传感器采用了数字模块采集技术和温湿度传感技术,是一种能够输出已经过校准的数字信号的温湿度复合传感器[8]。DHT11 各项参数见表2 所列。
表2 DHT11 参数
2.4 GY-30 光照强度传感器
GY-30 是一款内置ROHM-BH1750FLV 芯片的数字光照强度传感器模块,可以用于测量室内室外环境光照强度。它使用BH1750FVI 芯片作为光敏元件,采用SMD 封装,小巧轻便;其采用低功耗设计,适用于电池供电设备,具有高精度和快速响应等特点,广泛应用于环境监测等领域。GY-30测量范围在0 ~65 535 lx 之间,分辨率为1 lx,精度为±20%,工作温度为-40 ~85 ℃,通信接口使用I2C。
2.5 土壤湿度传感器
Moisture Sensor土壤湿度传感器是一种可用于检测土壤水分的传感器。传感器输出值随着土壤湿度减小而减小。该传感器的土壤探测头部分采用镀金处理,不仅可以延长使用寿命,还能获得更高的精度[9]。
2.6 水泵、继电器及风扇
水泵使用5 V 小功率潜水式水泵,型号JT-DC3W-3,驱动方式为继电器驱动,工作电压为DC 2.5 ~5.5 V,工作电流为120 mA,运行功率为0.36 W,扬程高度为0.35 m,水流量为80 L/h。
控制风扇的继电器使用松乐SRD-05VDC-SL-C;控制水泵的继电器使用宏发HF46F。风扇使用常见的直流小马达加上扇叶模拟。
3 软件设计
3.1 点灯Blinker 云平台设置
首先注册并进入点灯Blinker 手机APP,在主界面的右上角点击“+”号,选择要接入的设备,这里选择独立设备,在蓝牙接入和网络接入选项中选择网络接入。选择网络接入后,会出现一串密钥,将该密钥写入ESP8266 程序中即可。创建完成后,主界面会出现新的设备;点击后,即可添加文字、按键、数据等控件,开始搭建展示页面。其中需进行如下2 组设置,实现相应功能。
(1)4 个测量数据设置:以温度数据展示为例,点击数据控件:选择样式,填写组件名,与烧录到ESP8266 的程序值相对应,否则无法正确显示数据。显示文本填写空气温度,数据单位填写℃,最大值可根据需要设定,实数据勾选,完成温度数据展示。按照同样的操作继续设置空气湿度、土壤湿度、光照强度、需水量和需肥量的组件值后,完成界面展示。
(2)2 个按钮设置:以浇水控件为例,在控件列表中找到按钮控件,选择样式,填写组件键名,将按键类型设置为开关按键,填写显示文本。按照同样的步骤配置风扇开关按钮。
3.2 代码编写
3.2.1 Arduino 程序编写
软件编程环境选择Arduino IDE 1.8.16[10]。Arduino 单片机可以实现数据的采集并通过串口将数据发送到ESP8266,最终通过WiFi 模块传给云平台。温湿度采集的实现需要用到包含温湿度采集的库文件。库文件中包含了温湿度传感器相关的函数。其中VCC 接3.3 V,GND 接地,DATA 接在Arduino 数字端口。土壤湿度数据获取是通过Arduino 的模拟输入引脚读取数值。DATA 数据线接A3 口。光照强度数据需要通过Arduino 的I2C 通信接口获取,首先定义ADDR为寄存器的地址引脚,其接地时器件地址为0100011,SDA数据线接在A4 端口,SCL 时钟线接在A5 口。软件系统的总体流程如图2 所示。
图2 软件流程
3.2.2 ESP8266 Node MCU 程序编写
ESP8266 与Arduino 的串口通信容易实现并且通信较稳定。在Arduino IDE 环境下给ESP8266 WiFi 模块写入程序时,需根据实际使用的硬件在工具中选择对应开发板,同时要下载
图3 ESP8266 程序编写
接下来进行新建对象和组件的绑定,常用的有数据、按钮、滑动条、数字和文本控件等。根据APP 具体添加的组件,在程序中进行绑定,所有绑定的组件都需要回调,以按钮控件为例“Button.attach(button_callback)”,如绑定数据控件则需定义相应的“BlinkerNumber NUM(“NUM_name”)”,将数字的值赋给数据控件,即可完成数据展示。在本设计中绑定了“temp”“humi”“lig”和“soil”四个数字,分别存储温度、湿度、光照强度和土壤湿度数据并赋值给相应数据控件。绑定按钮按键程序为“BlinkerButton Button("key")”,其中“key”为APP 中按钮的键名。本设计绑定了两个按钮,通过继电器分别控制水泵和风扇。绑定并注册组件后,需要添加组件操作函数,具体如图4 所示。至此,ESP8266 WiFi模块的程序编写完成,可以实现与APP 相关数据通信和农业大棚实时远程控制。
图4 组件操作部分
4 软件设计
为测试系统的可靠性,在温室大棚内进行验证。将上述程序烧录进Arduino 控制板后,对大棚内的环境条件进行测量,如图5 所示。系统分为手动和自动模式。当温度超过设定阈值时,风扇自动打开,当土壤湿度低于设定值时,自动进行灌溉。同时,可以直接手动进行灌溉和开启风扇。经过多次实验测试与改进后,系统的可靠性有了一定保障,可以在APP 端远程查看大棚内部数据,同时可以远程操作控制相关的农业设备工作,基本能够满足温室大棚的需求。
图5 手机APP 主界面
5 结 语
本文将Arduino单片机与Blinker云平台相结合并应用于温室大棚远程监控,实现农业信息数据采集与无线传输,并通过手机端APP 对农业大棚作业现场进行远程控制;同时利用Blinker 云平台实现对数据的云存储。在科学技术助力乡村振兴背景下,为农业物联网的应用提供新的研究思路,具有一定的推广价值。