Привет! Продолжаем рассматривать различные датчики для Ардуино. Сегодня сделаем обзор на датчик влажности почвы для Ардуино. С его помощью мы сможем проверить количество воды в почве или просто уровень воды в какой-то емкости.
Содержание
В прошлый раз мы рассматривали Ethernet Shield для Ардуино. С его помощью мы сможем управлять Ардуино или проверять состояние подключенного к Ардуино оборудования через интернет. Это очень полезная штука, так что посмотрите предыдущий урок, если уже его забыли или пропустили.
Датчик влажности почвы состоит из двух частей. Это контактный щуп YL-69 и датчик YL-38. Они соединяются между собой парой проводков. Между электродами щупа есть небольшое напряжение. Если почва сухая, сопротивление больше и ток будет меньше. Если земля влажная, сопротивление меньше, а ток больше.
Датчик YL-38 имеет четыре контакта для подключения к Ардуино.
- Vcc – питание датчика
- GND – земля
- A0 — аналоговое значение
- D0 – цифровое значение уровня влажности
Технические характеристики
- Напряжение питания: 3.3-5 В
- Ток потребления 35 мА
- Выход: цифровой и аналоговый
Для того, чтобы выполнить этот урок нам понадобиться
- Ардуино UNO
- Макетная плата
- Перемычки
- Датчик влажности почвы
- Цветок в горшке
- 3 светодиода
- 3 резистора 220 Ом
- Кабель USB
Программа и схема
Соберем простую схему на макетной плате. И напишем небольшой скетч, чтобы определить состояние почвы в горшке с цветком и зажечь разные светодиоды в зависимости от влажности почвы.
Подключим аналоговый вывод с датчика к порту А0. И соединим контакты питания с соответствующими пинами Ардуино.
Теперь в программе нам нужно считать данные с аналогового порта. И зажечь соответствующий светодиод. На контакте мы получим значение от 0 до 1023. Следовательно 0 будет отвечать абсолютно сухой земле. 1023 будет означать, что датчик полностью погружен в воду. В этих случаях мы зажжем красную лампочку. А значения посередине будут отвечать умеренно влажной земле. Там будут желтая и зеленая лампочка.
Выведем результаты измерений в монитор порта, чтобы лучше контролировать показания программы и датчика. А с помощью встроенного в датчик переменного резистора мы сможем отрегулировать его.
Полный текст программы
int RED = 2;
int YELLOW = 3;
int GREEN = 4;
void setup(){
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
}
void loop(){
int mois = analogRead(A0);
Serial.print(mois);
Serial.print(" - ");
if(mois >= 1000) {
Serial.println("Сенсор не в земле или не подключен");
digitalWrite(RED,HIGH);
digitalWrite(YELLOW,LOW);
digitalWrite(GREEN,LOW);
}
if(mois < 1000 && mois >= 700) {
Serial.println("Земля очень сухая");
digitalWrite(RED,HIGH);
digitalWrite(YELLOW,LOW);
digitalWrite(GREEN,LOW);
}
if(mois < 700 && mois >= 500) {
Serial.println("Земля достаточно влажная");
digitalWrite(YELLOW,HIGH);
digitalWrite(RED,LOW);
digitalWrite(GREEN,LOW);
}
if(mois < 500 && mois >= 400) {
Serial.println("Идеально для растений");
digitalWrite(GREEN,HIGH);
digitalWrite(RED,LOW);
digitalWrite(YELLOW,LOW);
}
if(mois < 400 && mois >= 300) {
Serial.println("Земля слишком влажная");
digitalWrite(YELLOW,HIGH);
digitalWrite(RED,LOW);
digitalWrite(GREEN,LOW);
}
if(mois < 300) {
Serial.println("Датчик находится в воде");
digitalWrite(RED,HIGH);
digitalWrite(YELLOW,LOW);
digitalWrite(GREEN,LOW);
}
delay(5000);
}
Известные проблемы
Щуп датчика покрыт металлом. А при измерении сопротивления через металлические части датчика проходит ток. При взаимодействии металлических деталей с водой в почве и воздухе. А так же, под действием электричества, металл подвержен коррозии и датчик может быстро выйти из строя. Кроме того, при разложении металлические части попадают в почву и могут отравить ее и убить растения рядом.
Чтобы избежать таких проблем, лучше использовать Емкостный датчик влажности почвы. Обзор на него мы сделаем в ближайшее время.
Заключение
В этом обзоре мы рассмотрели датчик влажности почвы. Подключили его к Ардуино и собрали простую сигнальную схему измерения состояния земли для растения.