基于ESP32 的多功能农业养殖系统设计
2023-05-29冯智锐杨俊锋吴浩基王文华
冯智锐,杨俊锋,吴浩基,王文华
(广东海洋大学 电子与信息工程学院,广东湛江,524088)
0 引言
现代产业趋于智能化,无论是产品生产还是日常生活,智能物联网监控控制系统都已经得到广泛应用。自动远程控制和数据处理能力越来越成为关键创新因素。智能制造产业对远程智能化控制工业设备的开发和应用不断加大力度,现有的单一的场景的控制系统只能满足部分场景的功能需求,相对于多功能养殖系统来说,该类系统的套件适配的范围窄,软件协同开发的难度也大,成本也高。基于物联网技术、嵌入式设备、传感器技术的发展、云平台的日益普及[1],本系统适配了多个农业应用场景,极大丰富了各类新功能的开发以及套件的适配使用。物联网技术可以通过传感器和通信网络实现对农情的监控,有效提升农业管理水平[2]。如水体环境质量是水产养殖业的重要基础指标,一旦水体质量出现恶化且处理不及时就会导致严重的后果[3]。本系统利用红外线发射接受原理,测出水体浑浊度,进而进一步进行排水与供氧,使水质清洁。
ESP32 将电源模块,WiFi 天线和蓝牙模块集成于一体,其集成性高,只需少量外设即可实现丰富功能。ESP32 在物联网领域的应用也越来越广泛。本设计以ESP32 为控制芯片开发了多功能的农业养殖系统,一个系统即可满足多个农业使用场景。
1 总体设计
主控芯片:ESP32 芯片具有高性能,集成度高,外设丰富等特点,其集成了WiFi 和低功耗的蓝牙,不需要外加通信拓展模块就可以完成了网络通信,在降低功耗的同时,也节约了成本。ESP32 作为控制系统的核心,通过向其输入代码文件,驱动外设同时连接云平台。
电源电路:ESP32 采用3.3V 供电。外设由于功率大的缘故,使用MOS 管进行5V 电压驱动。
功能模块:幻彩照明模块,鱼箱倾斜警告模块,雨滴检测与操纵杆模块,温湿度采集模块,ESP32 NUO 板,WiFi及蓝牙连接模块。其中使用到的ESP32 芯片集成了天线开关,蓝牙以及WiFi,使得其功耗性能都极为优越,还支持Arduino 开发,构建了完整的物联网应用开发平台[4]。
ESP32 芯片在对应代码指令的控制下,可以通过各功能控制模块进行系统控制。例如检测到雨滴降落,会操作操纵杆关闭开口。总体设计图如图1 所示。
图1 总体设计图
2 软件设计
本系统的的软件设计使用Arduino IDE 完成。ESP32支持Ardunio 生态,Ardunio 能提供丰富的库函数,也可以按照需求自己编写函数,后期功能的拓展性强。此外,ESP32 支持空中下载技术(OTA)[5],十分有利于后期系统的更新以及维护。软件部分主要由控制程序和终端程序组成,控制程序负责处理收集传感器数据,传递用户指令等,终端程序负责采集各主要功能模块的数据。包括云服务器,蓝牙传输,温湿度等环境信息。软件流程图如图2 所示。
图2 软件流程图
3 室内鱼箱养殖
3.1 幻彩照明
水族馆展览对灯光的要求较高。幻彩照明方面我们使用的是RGB-LED 传感器和七色LED 灯模块。七色LED 灯模块由于内置了IC 芯片,故并不需要代码控制,只需要通电即可看到七彩LED 灯闪烁。侧重的灯光调节是RGB-LED 传感器。图3 为照明模块电路原理图。单个RGB LED 包含了三个LED,而其他所有的混色都能通过三个原色组合产生。本系统中,我们采用PWM 调光技术来控制REB-LED 的宽度。PWM 中使用的通过数字信号的方式来控制模拟输出的技术能够被拓展应用于LED 的频率控制。通过ESP32 获得PWM 输出。PWM 代表“脉冲宽度调制”。ESP32PWM输出使用的是通道概念,其中一共含有16 个通道,依次为0~15。我们从ESP32 中生成PWM 信号,并通过改变连接到ESP32 的LED 亮度来演示PWM。因此,在频率为1Hz 时,占空比为50%的情况下,LED 灯会在500mm 内保持高电平,如果将频率提高到100Hz 则肉眼将看到LED 灯发出一半的亮度。
图3 照明模块电路原理图
3.2 鱼箱倾斜警告
倾斜传感器内部带有金属球的球形倾斜开关。它用于检测小角度的倾斜。在鱼缸发生倾斜前期,该传感器可触发报警,让用户及时得到信息做出防护。金属球以不同的倾斜角度移动从而触发电路。倾斜开关模块的结构为双向传导的球形倾斜开关。当它向任意一侧倾斜时,只要角度和力度满足条件,开关就会通电,从而输出低电平信号。倾斜开关输出端可以直接驱动驱动器模块,由此可以组成一个大功率的角度开关。表1,图4 分别为倾斜传感器的端口图,倾斜开关电路图。
表1 倾斜传感器端口图
图4 倾斜开关电路图
4 土地土壤养殖
4.1 光照强度检测
作物生长需要光照,需要检测养殖棚内的光强度来决定是否开启窗口,使阳光透入。
光敏电阻LDR 是光控可变电阻,图5 为光敏模块电路图。本模块通过装载电位器,可以使用电位器来调节灵敏度,将光敏电阻连接到ESP32 UNO 板的A5,继电器连接到引脚GP13。当数值达到甚至超过400时,表示此时光照强度过大,继电器的触电闭合,EUNO 板上的引脚11 的LED 将点亮,系统将关闭窗口,防止光照灼伤农产品。
图5 光敏模块电路图
4.2 雨滴传感器+PS2 操作杆
雨水的大量涌入会对土壤酸碱度造成极大影响。当监控到有雨滴落下时,雨滴传感器会发出信号传输到控制端,从而通过操纵杆关闭棚内的各个开口。
雨滴检测器是用于感应雨水的工具。它由两个模块组成,一个用于检测雨水的防雨板和一个控制模块。该模块比较模拟值并将其转化为数字值。控制模块一共有四个输出。VCC 连接到5V 电源,GND 引脚接地。DO 引脚连接到微控制器的数字引脚以进行相应的数字控制器的引脚以进行数字输出,另外可以使用模拟引脚代替。在本系统中,用雨滴传感器检测降雨量并转换控制器检测到的信号。然后根据这些信号决定何时开启排水阀以及何时关闭排水阀,避免因为下雨造成水位上升流出水池。其传感器模块包括一个电位计,LM393 比较器,LED,电容器和电阻器。雨板模块由铜轨组成,铜轨用作可变电阻器,它的阻力随雨板上面的湿度而变化。
在具体读数上,我们使用ADC 功能,读取雨滴传感器上面的模拟信号,ESP32 的ADC 功能为12 为分辨率,也就是我们可以检测0~3.3V 的模拟信号,对应的数值范围是0~4095。通过analogRead()读取pin 角模拟数值,得到返回值,其默认精度是12bit。后通过analogSetWidth(bits)函数设置采样分辨率,其返回值范围是0~511。雨滴检测器原理图如图6 所示。
图6 雨滴传感器原理图
PS2 操纵杆类似于游戏手柄中的模拟游戏杆。它是通过以90 度角安装两个电位计制成。电位计连接到以弹簧为中心的短杆上。当处于静止位置的时候,此模块将从X 和Y产生约2.5V 的输出。移动操纵杆则会使得输出在0~3V 之间变化,具体值取决于移动方向。在本系统中,我们将引脚X 和Y 连接到A/D 转换器的模拟输入端口,将模拟量转换为数字量,最后在ESP32 UNO 上编程以检测操纵杆的移动方向,使其正确开关开口。
4.3 土壤温湿度采集
DS18B20 温度传感器与ESP32 之间采用的是1-Wire单总线通讯方式,单总线通讯对总线的时延要求非常严苛,所以通常采用第三方库简化操作和提高通讯质量。本系统采用的是线OneWire 和DallasTemperture 操作库。DS18B20 温度传感器相当准确,能以-0.5℃的精度测量数据。用户可以将温度传感器的分辨率配置为9,10,11 或者12 位。
DHT11 数字湿度传感器是一款含有已校准数字信号输出的复合传感器。图7 为温湿度采集器电路图,其内部含有感湿元件和测温元件,抗干扰能力强[6]。DHT11温湿度传感器与ESP32 之间采用的也是单总线协议,此处引入的第三方库是DHT_sensor_library 操作库。具体到ard 代码上,首先要定义传感器类型和管脚,“DHT dht(DHTPIN,DHTTYPE)”,DHT 操 作 库 支 持DHT11,DHT21 和DHT22.然后是初始化dht 传感器,“dht.begin()”,最后就是通过read 函数读取当前的湿度值并在TFT 彩屏上面显示。
图7 温湿度采集器电路图
ESP32 控制板远程接收精准采集的含氧量、温度、pH值、图像等数据信息,将获取的数据经传感器技术把模拟信号转换成数字信号。
5 户外水池水质净化
目前户外养殖的最大问题就是水质的清洁。由于户外的影响因素大,水质极为容易遭受破坏,若不能及时处理,鱼类容易大量死亡。
水浑浊度是衡量水体环境的重要指标。浑浊度描述的是水中的固体介质的浓度[7]。有机悬浮物长时间不处理,会积沉在水池底部[8],严重破坏水质。检测原理如下:传感器发射端的光线穿过水体时,接收端接收到的光强度取决于水体浑浊程度。水体越浑浊,接收到的光线就越少,对应转换的电信号也越小。ESP32 模块可以根据接收到点信号大小来进一步控制电机排水和供氧功能的开启与否,从而及时清洁水质。该方法响应速度快,更能满足养殖需求。我们利用红外线检测水浑浊度,从而进一步通过控制电机清洁水质。电机控制电路图及控制转速代码分别如图8、9 所示。
图8 电机控制电路图
图9 电机转速控制代码
6 MQTT 协议WiFi 及蓝牙
本系统的所有数据都可以通过连接web 服务器读取。MQTT 是一种基于发布/订阅模型的通信协议[9]。连接方式分为蓝牙和WiFi 连接。首先是蓝牙连接,ESP32 支持两种蓝牙模式,在本系统中,我们使用ESP32 的经典模式下的蓝牙模式转串口数据和控制端之间的数据传输,然后可以通过服务器读取数据和控制器件。ESP32 Ardunio IDE 环境中提供了BluetoothSerial 类库,利用该库提供的功能函数可以帮助我们建立一个控制端连接到ESP32 的串口接口,从而实现蓝牙串口通讯。
再者是WiFi 连接。ESP32 自带WiFi,主板在连接网络后,创建HTML 构建网页。我们需要创建一个开关来接听传入的请求并发送HTML 文本用来做响应,图10 是服务器/客户端交互创建开关图。
图10 交互创建开关图
首先需要把需要用ESP32 ArdunioIDE 中提供的WiFi库来建立网络连接“#include
图11 WiFi 读取温湿度
7 结语
提出基于ESP32 的一体化的多功能的农业养殖系统。得益于ESP32 集成度高,自带WiFi 及蓝牙模块,性能优越的特点,保证本系统在实现多个功能的同时也能满足大功率需求和体积小的特点。鱼缸倾斜,雨滴检测关闭窗口等功能都是本系统针对指定使用场景开发的创新功能,既能满足养殖需求又具有创新性。综合分析,本系统一体化程度高,功能多样,应用范围广,市场应用前景高。