Arduino и датчик влажности почвы

Если вы разрабатываете свой собственный «Умный сад» с возможностью предупреждения о необходимости поливки растения или для автоматического включения насоса для подачи воды, то сочетание Arduino и датчика влажности почвы идеально подойдёт для этой задачи.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/289-arduino-i-datchik-vlazhnosti-pochvy/images/arduino-i-datchik-vlazhnosti-pochvy-1.png

Arduino сможет превратить ваши цветочные горшки в автоматическую систему полива, что защитит растения от высыхания, особенно если вы в отпуске.

Аппаратная часть

Аппаратная часть состоит из платы Arduino (в данном случае Arduino Uno R3) и модуля датчика влажности почвы с проводами для подключения. Модуль построен на основе компаратора LM393, который выдает напряжение по принципу: влажная почва – низкий логический уровень, сухая почва – высокий логический уровень. Уровень определяется заранее заданным пороговым значением на модуле. Линия выходного сигнала компаратора подключается линии ввода/вывода D2 на плате Arduino. На основе этого сигнала сделаем так, чтобы на выводе D13 появлялся сигнал высокого логического уровня, когда почва становилась бы сухой.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/289-arduino-i-datchik-vlazhnosti-pochvy/images/arduino-i-datchik-vlazhnosti-pochvy-2.jpg

Простая программа

Этот простой демонстрационный код управляет светодиодом, подключенным к линии D13, на основе данных линии D2. Вывод D13 также может быть использован для включения/выключения насоса для поливки растений.

#define IND_OP 13
#define SEN_IN 2
void setup() {
   pinMode(IND_OP, OUTPUT);
  pinMode(SEN_IN, INPUT);
}
void loop() {
  if(digitalRead(SEN_IN) == HIGH){
    digitalWrite(IND_OP, HIGH);
  } else {
    digitalWrite(IND_OP, LOW);
    delay(1000);
  }
}

Подключение

Линия питания модуля +5V (VCC) соединена с питанием 5V платы Arduino. Земля GND соединена с землей Arduino. Цифровой выходной сигнал модуля DO подключается к линии D2 платы Arduino. Аналоговый выход модуля AO в данном случае не используется. Сам датчик состоит из двух штырей, на печатных платах которых имеются металлические полосы. При помещении датчика во влажную почву сопротивление между штырями мало, в сухой земле это сопротивление достаточно большое. С помощью потенциометра на модуле можно менять чувствительность датчика к тому или иному уровню сопротивления между штырями.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/289-arduino-i-datchik-vlazhnosti-pochvy/images/arduino-i-datchik-vlazhnosti-pochvy-3.png

Использование аналогового сигнала

С помощью этого датчика также можно узнать конкретный уровень влажности. Для этого нужно подключить аналоговый выход модуля AO к одному из аналоговых входов, например A0, платы Arduino. Следующий тестовый код оповещает о влажности или сухости почвы с помощью двух светодиодов: зелёного и красного.

#define IND_OP 13
#define SEN_IN 2
void setup() {
   pinMode(IND_OP, OUTPUT);
  pinMode(SEN_IN, INPUT);
}
void loop() {
  if(digitalRead(SEN_IN) == HIGH){
    digitalWrite(IND_OP, HIGH);
  } else {
    digitalWrite(IND_OP, LOW);
    delay(1000);
  }
}
int GLED= 13; // мокрая почва D13
int RLED= 12; // сухая почва D12
int SENSE= 0; // аналоговый сигнал датчика влажности почвы A0
int value= 0;
void setup() {
   Serial.begin(9600);
   pinMode(GLED, OUTPUT);
   pinMode(RLED, OUTPUT);
   Serial.println("SOIL MOISTURE SENSOR");
   Serial.println("-----------------------------");
}
void loop() {
   value= analogRead(SENSE);
   value= value/10;
   Serial.println(value);
   if(value<50)
   {
      digitalWrite(GLED, HIGH);
   }
   else
   {
      digitalWrite(RLED,HIGH);
   }
   delay(1000);
   digitalWrite(GLED,LOW);
   digitalWrite(RLED, LOW);
}