Подключение модуля управления реле к плате Ардуино. Делаем свет по хлопку.

Рано или поздно каждый задумывается о реализации автоматизированного включения и выключения различных бытовых приборов окружающих нас в повседневной жизни. Такие нагрузки, да ещё и с переменным током (АС) мы ни как не можем подключать напрямую к плате Ардуино. Поэтому для решения такой задачи существует такое устройство, как электромагнитное реле. В данной статье мы будем рассматривать уже готовый с обвязкой модуль, на котором установлено реле, готовое к простому подключению к микроконтроллеру.

 Модуль реле

Модуль реле имеет на своей плате всего три пина для подключения. VCC - питание, GND - земля и IN - вывод для приема управляющего сигнала. Если на вашем модуле название выводов называются немного по-другому, думаю, догадаться что и где будет не трудно. Так же мы видим на плате два светодиода. Красный светодиод загорается, когда мы подключаем питание к модулю реле. Зеленый светодиод показывает режим срабатывания реле. Если зеленый светодиод загорелся, значит, реле замкнулось и наоборот, если потух зеленый, значит, реле разомкнулось. С другой стороны модуля мы видим клемы для подключения нагрузки.

Давай возьмем плату Ардуино. В данном случае я возьму плату Arduino Nano. Вы можете брать любую другую. И подключим обычную лампу накаливания, которая питается от сети 220V.

Подключение модуля управления реле к плате Ардуино.

Как мы видим, подключение модуля реле к плате Arduino довольно простое. Вывод VCC модуля реле соединяем с пином 5V платы Arduino, а вывод GND модуля реле соединяем с выводом GND платы Ардуино. Тем самым модуль реле мы обеспечили питанием. Пин управления IN подсоединяем к выводу D2 платы Ардуино. Нагрузка, идущая от сети 220V в виде нашей лампы, подключается к модулю реле в разрыв своей цепи одного из проводов. Просто разрезаем один из проводов и один конец заводим в общий контакт COM, который всегда находится на среднем выводе. А второй конец соединяем с нормально разомкнутым контактом NO, который обычно находится сверху, если смотреть на модуль "правильно", как на картинке сверху (чтобы все цифры и надписи на самом реле были не верх ногами).

Часто клемы могут быть не подписаны, либо подписаны как на рисунке выше в виде китайских иероглифов. Это не должно вас смущать. Просто переверните модуль реле и посмотрите на него с обратной стороны.

Модуль реле 

Мы видим, что у нас есть общий контакт, нормально замкнутый и нормально разомкнутый контакты. Рисунок схемы на плате, помогает понять какой контакт замкнутый, а какой разомкнутый. К замкнутому контакту на схеме наклонена линия, то есть, притянут общий контакт. Когда мы будем подавать слабое напряжение на модуль реле, общий контакт будет замыкаться с разомкнутым контактом. Поэтому подсоединяйте именно к NO - нормально разомкнутому контакту.

Управлять модулем реле довольно просто, то же самое, что и зажигать обычный светодиод.

const int rele = 2; // Пин Arduino к которому подключен вывод IN реле

void setup ()
  {
  pinMode(rele, OUTPUT); // устанавливаем цифровой пин 2 в режим выхода  
  }
   
void loop ()
  {
  digitalWrite(rele, HIGH); //включаем реле
  delay(3000); //пауза 3 секунды
  digitalWrite(rele, LOW); //выключаем реле
  delay(3000); //пауза 3 секунды
  }


Свет включается и выключается с паузой в 3 секунды. Всё это довольно скучно и хочется подключить какой-нибудь датчик для более интересного взаимодействия с электронным реле.

 

Свет по хлопку

Давайте сделаем так, чтобы наша лампа включалась и выключалась по хлопкам в ладоши. Для этого мы добавим в нашу схему датчик звука KY-037.

Подключение модуля управления реле к плате Ардуино. Делаем свет по хлопку.

Цифровой вывод D0 датчика звука KY-037 соединяем с цифровым выводом D5 платы Ардуино. Вывод + датчика звука соединяем с выводом 5V платы Arduino Nano. Вывод G датчика звука подводим к выводу GND (земле) платы Ардуино. То есть питаем датчик звука с тех же выводов Ардуино, с которых питаем и модуль реле. В идеале конечно различные датчики и устройства надо питать отдельно от мозгов, но ардуинка вполне без сбоев тянет реле с датчиком звука. Поэтому обойдемся минимумом проводов в ходе этой статьи.

Работу с данным датчиком звука мы уже рассматривали подробно в статье Подключение и настройка датчика звука KY-037. Так что для большего понимания всего происходящего прочитайте обязательно эту статью. Там рассматриваются примеры кода для срабатывания датчика на включение и выключение света по одному хлопку. А так же рассматривается пример кода на включение света по двум хлопкам и выключению по одному хлопку. Здесь я выложу специально код на включение света по двум хлопкам и выключению света тоже по двум хлопкам, от части, для тех, кто не смог или не захотел немного изменить имеющийся код из предыдущей статьи.

Работа минимум в два обычных хлопка более надежна, так как случаи непредсказуемых срабатываний от побочных шумов при таком подходе практически приближаются к нулю. Каждая строчка кода прокомментирована, читайте внимательно, должно стать все ясно.

const int sensorD0 = 5;  // Пин Arduino к которому подключен выход D0 датчика
const int rele = 2; // Пин Arduino к которому подключено реле
int releState = LOW; // Статус реле "выключен"
long soundTime=0; // время первого хлопка
 
void setup ()
  {
  pinMode(rele, OUTPUT); // устанавливаем цифровой пин 2 в режим выхода  
  }
   
void loop ()
  {
  int sensorValue = digitalRead(sensorD0); // получаем сигнал с датчика
     
  if (sensorValue == 1 && releState == LOW) //если порог громкости достигнут и реле было ВЫКЛЮЧЕНО
    {
    long diodTime=millis(); // записываем текущее время

    //если текущее время хлопка больше времени последнего хлопка на 100 миллисекунд 
    //и хлопок произошел не позже чем через 1000 миллисекунд после предыдущего
    //считаем такой хлопок вторым УСПЕШНЫМ 
    if((millis()>soundTime) && ((diodTime-soundTime)>100) && ((diodTime-soundTime)<1000)) 
      {
      digitalWrite(rele, HIGH); // включаем реле
      releState = HIGH; // устанавливаем статус реле "включен"
      delay(100); // небольшая задержка для фильтрации помех
      }
    soundTime=millis(); //записываем время последнего хлопка
    }
  else // иначе
    {
    if (sensorValue == 1 && releState == HIGH) // если порог громкости достигнут и реле было ВКЛЮЧЕНО
      {
      long diodTime=millis(); // записываем текущее время
      
      if((millis()>soundTime) && ((diodTime-soundTime)>100) && ((diodTime-soundTime)<1000)) 
        {
        digitalWrite(rele, LOW); // выключаем реле
        releState = LOW; // устанавливаем статус реле "выключен"
        delay(100); // небольшая задержка для фильтрации помех
        }
      soundTime=millis(); //записываем время последнего хлопка  
      }
    }    
  }

Всё! Хлопаем в ладоши два раза, свет включается. Хлопаем еще два раза и свет выключается. Не забываем подстроить чувствительность датчика звука. Всё про настройку есть в статье Подключение и настройка датчика звука KY-037.

Обратите внимание, что манипулируя со строчкой if((millis()>soundTime) && ((diodTime-soundTime)>100) && ((diodTime-soundTime)<1000)), а именно цифрами 100 и 1000, можно добиваться срабатывание датчика на разную скорость хлопков. Например, данный пример позволяет срабатывать датчику звука на быстрые хлопки с паузой между каждым в 100 миллисекунд. Вторая цифра 1000, говорит о том, что второй хлопок не должен прийти позже, чем через 1000 миллисекунд (1 секунду). Если мы изменим, например цифру 100 на 500, то датчик будет реагировать на хлопки только с достаточной паузой между каждым. И такое решение для света по хлопку может лучше подходить в местах, где часто хлопают дверью или есть другие побочные резкие звуки, которые могут заставлять случайно срабатывать датчик звука.

 

 

 

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

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

шт.
Корзина пуста
Принимаем к оплате: