3 有用
2 下载

基于Arduino的水分测量警报系统

文件列表(压缩包大小 1.68K)

免费

概述

需要的元件

  • Arduino UNO

  • 模拟土壤湿度传感器

  • 旋转电位计10K

  • LCD1602显示屏

  • 杜邦线

  • 电阻221Ω

  • Arduino IDE

原理及流程

在本例程中你将学习如何创建一个系统来监视植物的土壤湿度水平,并告知用户何时灌溉植物。

介绍

在一些住宅中,通常会找到装有不同类型植物的花盆。随着日常活动的增多,人们往往会忘记给植物浇水,最终因缺水而死。为了避免这种问题,我们决定创建一个系统来通知主任何时没有水。这样,你将永远不会忘记灌溉你的植物,并且它会长期存活。接下来,我们将介绍该项目的整体流程。

项目发展

我们用来检测植物中水量的方法之一是通过湿度参数。因此,我们植物罐子里的水越少,土壤湿度就越低。

因此,我们必须使用湿度传感器来分析花盆中的水分状态。

借助湿度传感器,我们在Arduino面包板上安装了电路,以对仙人掌罐的低湿度进行监测和指示。并且通过显示LCD来通知我们的用户有关水分的信息,如下图所示。

moisture_circuit_detector_izLerrBssF

Arduino的水分检测器电路

从上面的电路中,我们将把湿度测量探头插入我们要监视的花盆中。在我们的项目中,我们将探针插入一个小的仙人掌中,如下图所示。

20190530_093623_gZR9f5pDWM

仙人掌罐中装有湿度传感器的投影电路。

现在,我们将逐步了解如何进行工程设计,此后,还将学习如何创建控制代码。

最初,当我们不将传感器连接到广口瓶内时,设备在仙人掌广口瓶外的水分含量仅为2%。如图3所示。

20190530_092714_SF3KcWpscy

从仙人掌罐的土壤中取出水分传感器。

这个低百分比值表示湿度低。现在,将传感器插入仙人掌罐的土壤中后,将显示36%的值,如下图所示。也就是说,我们的湿度很低,并且系统显示消息Low Moisture,因为该值较小未超过60%。

20190530_093112_ZZAiwhd3Et

系统显示了仙人掌罐中水分的百分比值和水平。

下一步是灌溉仙人掌水罐的土壤,我们可以验证湿度值增加到69%。

20190530_093830_Hj9krvkYG6

系统显示了仙人掌罐中的百分比值和高水分含量。

了解了项目的工作原理之后,我们将介绍创建此监控系统的所有构造逻辑。让我们开始吧!

代码

现在开始构建代码。

首先声明名为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)

0/250