Arduino и датчик капель/дождя

В некоторых любительских проектах, связанных с мониторингом состояния погодных условий или, например, с выращиванием растений в открытых условиях, бывает полезным знать, идет ли в данный момент дождь или нет. Поскольку многие радиолюбители в качестве упраляющей платы используют плату Arduino, то для этих целей был разработан специальный датчик капель/дождя, без проблем подключаемый к Arduino. Представленный в данном материале простой Arduino-проект позволит включать звуковую сигнализацию при срабатывании датчика капель/дождя.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/293-arduino-i-datchik-kapel-dozhdya/images/arduino-i-datchik-kapel-dozhdya-1.png

Датчик дождя состоит из сенсорной пластины и платы с компаратором LM393. Помимо цифрового выхода, датчик имеет аналоговый выход, поэтому микроконтроллер Arduino может считывать аналоговые показания в диапазоне напряжений от 0 до 5 В или значение от 0 до 1023 после АЦП.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/293-arduino-i-datchik-kapel-dozhdya/images/arduino-i-datchik-kapel-dozhdya-2.png

Если сенсорная плата датчика находится в сухом состоянии, аналоговый выход модуля составляет 5 В. В случае, если на пластину попадают капли дождя, соединяющие проводники платы между собой, то аналоговый выход изменяется от 5 В до 0 В в зависимости от количества влаги на пластине. Таким способом датчик сообщает нам, сильный или слабый идёт дождь. Arduino включит сигнализацию после определенной интенсивности дождя и некоторой задержки, что будет определено в коде. Это позволит избежать ложных срабатываний. В данном случае порог срабатывания составляет 300, а задержка 30 секунд.

Ниже представлен скетч для Arduino, который позволяет включать сигнализацию, подключенную к цифровому порту 8, при регистрации датчиком дождя.

int rainSensePin= 0; // аналоговый вход 0 для сигнала датчика
int alertPin= 8; // цифровой выход 8 - для сигнализации
int curCounter= 0; // счётчик - инкрементируется на 1 каждую секунду после срабатывания датчика

void setup(){
   Serial.begin(9600);
   pinMode(alertPin, OUTPUT);
   pinMode(rainSensePin, INPUT);
}
void loop(){
   int rainSenseReading = analogRead(rainSensePin);
   Serial.println(rainSenseReading); // для мониторинга через последовательный порт
   delay(250); // короткая задержка
   if (curCounter >= 30){ // конец временной задержки
      digitalWrite(alertPin, HIGH);  // срабатывание сигнализации
   }

   // если дождя больше нет, сбрасываем счетчик
   if (rainSenseReading 300) { // если интенсивность дождя не превышает порога
      digitalWrite(alertPin, LOW); // не включаем сигнализацию
      curCounter = 0; // сбрасываем счетчик в 0
   }
   delay(1000);
}

Когда идет дождь (и Arduino обнаруживает его) выход D8 переходит в высокий логический уровень. Этот выход можно подключить к звуковой сигнализации (пьезозуммеру) или переключателю (электромагнитному реле). Схема подключения выхода показана ниже.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/293-arduino-i-datchik-kapel-dozhdya/images/arduino-i-datchik-kapel-dozhdya-3.png

В данном случае питание на Arduino подаётся от внешнего источника 9 В, схема активации зуммера/реле может питаться от 5-12 В. Источник напряжения питания Vcc должен подходить как по напряжению, так и по току для данной схемы.

Таким образом, создание проекта, в котором с помощью платы Arduino можно регистрировать наличие или отсутствие дождя или падающих капель от какого-либо источника жидкости, не является сложным занятием. Датчик капель/дождя для Arduino достаточно распространен, стоит недорого и прост в использовании. В конечном счете его можно сделать самому.