基于Arduino的水分测量警报系统
文件列表(压缩包大小 1.68K)
免费
概述
Arduino UNO
模拟土壤湿度传感器
旋转电位计10K
LCD1602显示屏
杜邦线
电阻221Ω
Arduino IDE
在本例程中你将学习如何创建一个系统来监视植物的土壤湿度水平,并告知用户何时灌溉植物。
在一些住宅中,通常会找到装有不同类型植物的花盆。随着日常活动的增多,人们往往会忘记给植物浇水,最终因缺水而死。为了避免这种问题,我们决定创建一个系统来通知主任何时没有水。这样,你将永远不会忘记灌溉你的植物,并且它会长期存活。接下来,我们将介绍该项目的整体流程。
我们用来检测植物中水量的方法之一是通过湿度参数。因此,我们植物罐子里的水越少,土壤湿度就越低。
因此,我们必须使用湿度传感器来分析花盆中的水分状态。
借助湿度传感器,我们在Arduino在面包板上安装了电路,以对仙人掌罐的低湿度进行监测和指示。并且通过显示LCD来通知我们的用户有关水分的信息,如下图所示。
Arduino的水分检测器电路
从上面的电路中,我们将把湿度测量探头插入我们要监视的花盆中。在我们的项目中,我们将探针插入一个小的仙人掌中,如下图所示。
仙人掌罐中装有湿度传感器的投影电路。
现在,我们将逐步了解如何进行工程设计,此后,还将学习如何创建控制代码。
最初,当我们不将传感器连接到广口瓶内时,设备在仙人掌广口瓶外的水分含量仅为2%。如图3所示。
从仙人掌罐的土壤中取出水分传感器。
这个低百分比值表示湿度低。现在,将传感器插入仙人掌罐的土壤中后,将显示36%的值,如下图所示。也就是说,我们的湿度很低,并且系统显示消息Low Moisture,因为该值较小未超过60%。
系统显示了仙人掌罐中水分的百分比值和水平。
下一步是灌溉仙人掌水罐的土壤,我们可以验证湿度值增加到69%。
系统显示了仙人掌罐中的百分比值和高水分含量。
了解了项目的工作原理之后,我们将介绍创建此监控系统的所有构造逻辑。让我们开始吧!
现在开始构建代码。
首先声明名为Display LCD变量的库,创建了一个对象LCD,其引脚与Arduino UNO相连。
#include <LiquidCrystal.h>
#define sensor A0
bool LCDControl = 0, LowUmid = 0, HighUmid = 0;
byte UmidityPercent = 0, moisture = 0, PreviousValue = 0;
int ValUmidade = 0, AnalogValue = 0;
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
此后,初始化设置功能和显示LCD 16x2,并将传感器的引脚配置为输入。
最后,我们对传感器进行了第一次读取,并用作变量PreviousValue的参考,如下所示。
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
pinMode(sensor, INPUT);
PreviousValue = analogRead(sensor);
}
使用创建的变量和void setup函数中的命令,我们将解释循环函数中的所有逻辑编程。
//Le o valor do pino A0 do sensor
AnalogValue = analogRead(sensor);
//Mostra o valor da porta analogica no serial monitor
Serial.print("Analog Port: ");
Serial.println(AnalogValue);
UmidityPercent = map(AnalogValue, 0, 1023, 0, 100);
moisture = 100 - UmidityPercent;
在循环功能中,读取模拟值,并将该值映射到0到100的范围内。该值表示土壤湿度的百分比。当湿度高时,该值接近0;如果湿度低,则该值接近100。
为了便于表示该值并防止用户阅读混乱,我们反转此逻辑,并表示0%为低湿度和100%为高湿度。这是通过映射后执行的计算来完成的。
moisture = 100 - UmidityPercent;
读取湿度值后,需要在液晶显示屏上显示水分值。下一步是根据以下条件,验证湿度值是否不同于其值加1或值减1。
if( (moisture > (PreviousValue)+1) || (moisture < (PreviousValue)- 1))
此条件用于防止系统在Display LCD中多次显示相同的值。但是,当条件为真时,系统将在LCD中显示该值,并验证该值是否大于或等于60%或小于60%。
如果该值大于或等于60%,则系统显示消息高水分,否则,显示消息低水分,如下所示。
if( (moisture > (PreviousValue)+1) || (moisture < (PreviousValue)- 1))
{
lcd.setCursor(1,0);
lcd.print("Moisture: ");
lcd.print(" ");
lcd.setCursor(11,0);
lcd.print(moisture);
lcd.print("%");
if(moisture < 60 && LowUmid == 0)
{
lcd.setCursor(1,1);
lcd.print(" ");
lcd.setCursor(1,1);
lcd.print("Low Moisture");
LowUmid = 1;
HighUmid = 0;
}
if(moisture >= 60 && HighUmid == 0)
{
lcd.setCursor(2,1);
lcd.print(" ");
lcd.setCursor(1,1);
lcd.print("High Moisture");
HighUmid = 1;
LowUmid = 0;
}
PreviousValue = moisture;
}
最后,系统将水分变量的值存储在PreviousValue变量中以实现其值。每次在显示屏中显示一个新值时,变量PreviousValue都会被更新以在其他代码处理周期中使用。
这个系统用于监控我们住宅中植物的水分并告知用户土壤水分水平。
所有需要的文件在下载区均可找到。
via:https://www.hackster.io/161937/moisture-measurement-system-with-alert-783c5c
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈
评论(0)