Хотел бы поделиться с вами проектом датчика дождя на Arduino. После попадания капель дождя на сенсор, Arduino выжидает заданное время, а затем происходит звуковая сигнализация. У данного проекта может быть множество других применений. В качестве самого датчика дождя выступает готовый модуль для Ардуино, купленный в Китае (на Aliexpress).

Датчик дождя на Arduino

Модуль датчика дождя состоит из непосредственно сенсорного элемента, выполненного в виде печатной платы и платы с электронной начинкой. Электроника модуля выполнена на операционном усилителе LM393, который выдает аналоговое значение от 0 до 5 вольт в зависимости от влажности на самом сенсоре. При считывании этого напряжения, получаемые Ардуиной значения будут в диапазоне 0...1023. Напряжение питания модуля равно 5В и берется от самой платы.

Датчик влажности (дождя)

Модуль дождя также имеет цифровой выход (А1), уровень на котором соответствует дискретным состояниям "есть дождь"/"нет дождя". Данный уровень/чувствительность настраивается переменным резистором, который расположен на плате. Аналоговый выход (А0) имеет уровень 5В при отсутствии влаги, но по мере появления капель дождя, напряжение на данном выводе стремиться к 0В, т.е. получаемые данные на Arduino будут изменяться от 1023 до 0 по мере усиления дождя.

Используя данные с аналогового выхода (А0) можно оценивать силу дождя, в то время как считывая логическое состояние с цифрового выхода (А1) модуля можно понимать лишь дискретные состояния, есть дождь или нет.

Реализованная функция задержки позволяет защититься от ложных срабатываний, она составляет 30 секунд. Также выставляется порог, при котором микроконтроллер делает вывод, что идет дождь. Этот порог в приведенном ниже скетче для Ардуино имеет значение 300.

/*
* Author: T.K.Hareendran
* Source: electroschematics.com
*/
int rainSensePin= 0; // аналоговый пин 0 - вход для подключения аналогового выхода сенсора
int alertPin= 8; // цифровой пин 8 - выход для звуковой сигнализации
int curCounter= 0; // значение таймера для реализации задержки.
 
void setup(){
   Serial.begin(9600);  // Скорость ком-порта, можно изменить на другие допустимые значения, например 115200
   pinMode(alertPin, OUTPUT);
   pinMode(rainSensePin, INPUT);
}
void loop(){
  
   int rainSenseReading = analogRead(rainSensePin); // 1023 - если нет дождя, 0 - если ливень
   Serial.print("Rain sensor = ");
   Serial.println(rainSenseReading); // отправка по com-порту
   delay(250);

   if (curCounter >= 30){ // если датчик мокрый и есть превышения интервала ожидания
      digitalWrite(alertPin, HIGH);  //то срабатывает сирена, т.е. выставляется лог. "1"
   }
 

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

 Исполнительное устройство подключается к цифровому порту ввода-вывода D8 Ардуино, который выставляется в лог. "1" как только обнаружен дождь. Также устройство передает считываемые значения по com-порту, что удобно для отладки конструкции. Схема подключения сенсора дождя и звуковой пищалки к плате Arduino приведена ниже:

Схема подключения сенсора дождя к Arduino

Внешний вид готового проекта:

Датчик дождя на Arduino

Скачать скетч программы. Источник: electroschematics.com

 

Добавить комментарий


Защитный код
Обновить