在本篇文章中,我们将学习如何使用Arduino和ESP32制作基于物联网的土壤养分在线监测和分析系统。土壤是农业的基础,它提供促进作物生长的养分。土壤的一些化学和物理特性,例如其水分、温度、土壤氮、磷和钾含量严重影响作物的产量。这些属性可以被开源硬件感知,并且可以在现场使用。
在本文中,我们提出了一个土壤养分监测和分析系统,农民将能够监测土壤水分、土壤温度和土壤养分含量,如氮、磷和钾。同时还可以在手机上无线监控所有这些参数。
为了测量土壤水分,我们将使用电容式土壤湿度传感器。使用DS18B20防水温度传感器测量土壤温度。同样,为了测量土壤NPK值,我们将使用土壤NPK传感器。所有这些传感器都可以轻松地实现与Arduino的无缝连接。
我们使用Thingspeak服务器以图形和数字格式监控数据。本文使用NRF2401无线收发模块将数据从传感器节点发送到网关。来自发射器的数据可以从一公里外无线传输到接收器。接收器使用ESP32 WiFi模块构建,可访问WiFi网络。通过这个WiFi网络,数据可以上传到Thingspeak服务器。
所需的组件 ● Arduino Nano开发板 ● ESP-32S开发板 (ESP-WROOM-32) ● NRF24L01无线收发器模块 ● 土壤NPK传感器 ● 电容式土壤湿度传感器 ● DS18B20防水温度传感器 ● MAX485 Modbus模块 ● 9V - 12V直流电源 ● 连接跳线 ● 面包板
使用的传感器:土壤湿度、温度和NPK 基于物联网的土壤养分监测、分析和测试项目需要一些传感器,这些传感器将在下面详细说明。
电容式土壤湿度传感器 要测量土壤水分含量,我们需要一个土壤湿度传感器。对于此应用,首选电容式土壤湿度传感器(Capacitive Soil Moisture Sensor)。我们将使用模拟电容式土壤湿度传感器,通过电容式感应测量土壤湿度值。这意味着电容会根据土壤中的含水量而变化。测得的电容转换成电压,最大值为1.2V至3.0V。电容式土壤湿度传感器的优点是它们由耐腐蚀材料制成,使用寿命长。
电容式土壤湿度传感器工作在3.3V-5.5V,输出为模拟形式,最高可达3V。我们可以将输出电压转换为百分比值。
DS18B20防水温度传感器 这是DS18B20传感器的接线防水版本,用于测量潮湿条件下的物体。传感器可以测量-55 到125°C(-67°F 到 +257°F)之间的温度。电缆采用PVC护套。这些1线数字温度传感器相当精确,即在大部分范围内为 ±0.5°C。它们适用于使用单个数字引脚的任何微控制器。
NPK传感器 土壤氮磷钾传感器(NPK Sensor)适用于检测土壤中氮、磷、钾的含量。它有助于确定土壤的肥力。传感器可以长时间埋在土壤中。
该传感器不需要任何化学试剂,同时该传感器测量精度高、响应速度快、互换性好,可与任何单片机配合使用。要读取 NPK 数据,您需要Modbus模块,例如RS485/MAX485模块。 Modbus模块连接到微控制器和传感器。
传感器工作在9-24V下。传感器的精度高达2%以内。氮、磷和钾的测量分辨率高达 1mg/kg (mg/l)。
使用Arduino和ESP32进行基于物联网的土壤养分监测的硬件电路 现在,让我们来看看使用Arduino和ESP32进行基于物联网的土壤养分监测的硬件电路。需要制作两个电路。一个电路称为传感器节点,使用Arduino Nano开发板板和一些传感器以及NRF24L01收发器模块制成的。另一个电路时网关,我们使用了ESP32 WiFi模块和NRF24L01收发器模块。传感器节点将数据发送到网关,网关将数据上传到Thingspeak服务器。
传感器节点电路 传感器节点电路和连接图如下。传感器节点包括Arduino Nano开发板、NRF24L01收发器模块、土壤湿度传感器、DS18B20温度传感器和土壤氮磷钾传感器。
电容式土壤湿度传感器的模拟引脚连接到Arduino的A0。同样,DS18B20传感器连接到Arduino的D5。氮磷钾传感器通过Modbus引脚连接到Arduino的 2,3,7,8 引脚。NPK 传感器工作在9V-24V之间。因此,电路需要外接电源。其余所有组件均可通过Arduino的5V/3.3V 引脚供电。
网关电路 基于物联网的土壤养分含量分析和监测系统也涉及网关。该网关是使用ESP32 WiFi模块和NRF24L01无线收发器模块设计的。
按照上图进行连接,连接后的实物效果如下:
设置Thingspeak服务器 基于物联网的物联网土壤养分监测和分析在Thingspeak服务器上完成。因此,我们需要设置Thingspeak帐户。要设置Thingspeak,请按照以下步骤操作: 第1步:访问https://thingspeak.com/,注册一个帐户。 第2步:通过单击“频道”创建一个新频道并填写以下详细信息,如下图所示。
第3步:点击API Key,你会看到“Write API Key”。复制API密钥。这非常重要,在代码部分中将需要它。
第4步:您可以单击“私人视图”并根据需要自定义显示窗口。
向Arduino IDE添加必要的库 1. NRF24L01库:该库旨在最大限度地符合nRF24L01 2.4GHz 无线收发器模块的预期操作。本芯片采用SPI总线,外加两个芯片控制引脚。 2. RH24库:这是用于嵌入式微处理器的 RadioHead Packet Radio 库。它提供了一个完整的面向对象的库,用于通过各种通用数据无线电和一系列嵌入式微处理器上的其他传输方式发送和接收分组消息。 3. OneWire库:该库允许您访问 Maxim/Dallas 制造的1-wire器件,例如DS18B20 温度传感器。 OneWire 需要一个 4.7K 上拉电阻,连接在引脚和电源之间。 4. 达拉斯温度传感器库:这是 Maxim 温度集成电路的Arduino 库。该库支持DS18B20、DS1822、DS1820 和 MAX31820。 Dallas 1-Wire协议有些复杂,需要大量代码来解析通信。达拉斯温度传感器库可以发出简单的命令从传感器获取温度读数。
物联网土壤养分监测与分析的代码 物联网土壤养分监测、分析和测试部分的代码/程序包含两组代码。一种是需要将代码上传到Arduino的发射器/节点部分。另一部分是接收器网关部分,代码需要上传到ESP32开发板。
传感器节点/发射器代码 复制以下代码并将其上传到Arduino Nano开发板。
sensor node.rar
(1.23 KB, 下载次数: 15)
网关/接收器代码 代码需要上传到ESP32开发板。 但在上传代码之前,您需要从以下行更改WiFi SSID和密码。 - const char* ssid = "********************************";
- const char* password = "********************************";
复制代码同时还要将Thingspeak API密钥替换为您的API 密钥。 - String apiKey = "********************************";
复制代码更新 WiFi SSID 和密码后,您现在终于可以将代码上传到ESP32模块了。完整代码:
gateway.rar
(1.13 KB, 下载次数: 11)
基于物联网的土壤养分监测、测试和结果 成功将代码上传到Arduino和ESP32开发板后,您就可以开始测试设备了。因此,如下图所示,将所有传感器放入土壤中。
现在打开串口监视器以检查是否有数据传输。传感器节点上的串口监视器显示从传感器读取的数据,例如以百分比表示的土壤湿度值、以摄氏度为单位的温度、以 mg/Kg为单位的NPK含量。
数据以无线方式传输到接收器/网关部分。网关收集数据并将其上传到Thingspeak服务器。您可以访问Thingspeak仪表板的私人视图。
以上就是如何使用ESP32、Arduino和一些土壤传感器以及NRF24L01无线收发器模块制作一个简单的基于物联网的土壤养分监测和分析系统。如果有任何疑问,请随时在本帖下面回复。
|