Аппаратная часть
Аппаратная часть состоит из платы Arduino (в данном случае Arduino Uno R3) и модуля датчика влажности почвы с проводами для подключения. Модуль построен на основе компаратора LM393, который выдает напряжение по принципу: влажная почва – низкий логический уровень, сухая почва – высокий логический уровень. Уровень определяется заранее заданным пороговым значением на модуле. Линия выходного сигнала компаратора подключается линии ввода/вывода D2 на плате Arduino. На основе этого сигнала сделаем так, чтобы на выводе D13 появлялся сигнал высокого логического уровня, когда почва становилась бы сухой.
Простая программа
Этот простой демонстрационный код управляет светодиодом, подключенным к линии 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 в данном случае не используется. Сам датчик состоит из двух штырей, на печатных платах которых имеются металлические полосы. При помещении датчика во влажную почву сопротивление между штырями мало, в сухой земле это сопротивление достаточно большое. С помощью потенциометра на модуле можно менять чувствительность датчика к тому или иному уровню сопротивления между штырями.
Использование аналогового сигнала
С помощью этого датчика также можно узнать конкретный уровень влажности. Для этого нужно подключить аналоговый выход модуля AO к одному из аналоговых входов, например A0, платы Arduino. Следующий тестовый код оповещает о влажности или сухости почвы с помощью двух светодиодов: зелёного и красного.
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);
}
Схема использования датчика влажности почвы без Arduino
Модуль можно применять и без подключения к Arduino или другим сложным вычислительным устройствам. Для его подключения к обычному реле, которое будет управлять насосом или другим механизмом, достаточно всего несколько внешних компонентов. Схема подключения датчика влажности почвы к реле представлена ниже.
Здесь транзистор 2N3906 управляет электромагнитным реле (RL1) для контроля мощной нагрузкой, например, двигателя водяного насоса.
|