Андрей Смирнов
Время чтения: ~17 мин.
Просмотров: 44

Как подключить реле к arduino

Шаг 5: Готово!

На изготовление одного модуля реле у меня ушло около 20 минут. Это быстро, недорого, а также экономит ваше время (при заказе онлайн доставка займёт минимум день, а поход в магазин занимает также больше 20 минут).

Подключить на прямую к Arduino мощную нагрузку, например лампу освещения или электронасос не получится. Микроконтроллер не обеспечивает необходимую мощность, для работы такой нагрузки. Ток, который может протекать через выходы Arduino, не превышает 10-15 мА. На помощь приходит реле, с помощью которого можно коммутировать большой ток. К тому же, если нагрузка питается от переменного тока, например 220v, то без реле ни как вообще не обойтись. Для подключения мощных нагрузок к Arduino через реле, обычно используют реле модули.

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

Свои, одно и четырёх канальные модули, я купил на Aliexpress, за $ 0,5 и $ 2.09 соответственно.

Устройство реле модуля для Arduino, на примере 4-х канального модуля HL-54S V1.0.

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

Принципиальная схема модуля
.

Для защиты выводов Ардуино от скачков напряжения в катушке реле, применяется транзистор J3Y и оптрон 817C

Обратите внимание, сигнал с пина In
подаётся на катод оптрона. Это значит, для того что бы реле замкнуло контакты, нужно подать на пин
In

логический (инвертированный сигнал).

Сфера применения и проекты с сетевыми шилдами

Ардуино – одна из самых дешевых основ для проекта умного дома. Кроме домашнего облака и доступа к файлам можно реализовать удаленное управление исполнительными механизмами любых типов.

К таким проектам можно отнести и другую автоматизацию, например, управление поливом, освещением и проветриванием в теплице.

Одно дело, когда вы находитесь в непосредственной близости к управляемой системе, но что делать, если ваша теплица находится на участке загородного дома?

Если есть интернет связь за городом – Ethernet технологии придут на помощь, на фото ниже вы видите окно HTML страницы, находящейся на сервере на базе W5500.

В таком виде представлено управление группой из 4-х реле с отслеживанием их активности, по нажатию кнопки refresh.

А подключается всё по такой схеме:

Это на примере модуля w5500. Схема не сложная, но функциональная – вы можете сделать вот такую мульти задачную реле-станцию.

Только использовать вместо MEGA младшие платы Ардуино.

Что касается мобильной передачи данных, то M590E предназначен для так называемых M2M приложений.

С Ардуино он может взаимодействовать и передавать как сообщения от неё в виде SMS, так и команды к микроконтроллеру после принятия сообщения от вас. Команды очень просты, например:

AT+CMGS=»+79123456789″;

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

Это незаменимо в проектировании охранных комплексов и устройств.

В современном мире нельзя недооценивать важность устройств автоматического управления домом, различными бытовыми сферами и охраной вашего имущества. Связь с окружающим миром нужна для наглядности в плане контроля и слежения за состоянием всех узлов вашей системы

Принципиальная и монтажная схемы

Шаг 4: Код

Когда все подключено, пришло время погрузиться в код. Библиотека для 7-сегментного дисплея находится здесь.

Гигрометры будут корродировать довольно быстро, если они будут постоянно подключены к 5V, поэтому их нужно питать током только когда нам действительно нужно измерить влажность. По этой причине они не подключены к шине питания.

const int hygrometer1 = A0;  //Hygrometer sensor at pin A0
const int hygrometer2 = A1;  //Hygrometer sensor at pin A
int Pump1_1 = 11;  // Pump 1, cable 1
int Pump1_2 = 2;  // Pump 1, cable 2
int Pump2_1 = 3;  // Pump 2, cable 1
int Pump2_2 = 4;  // Pump 2, cable 2
int Hygro1 = 9;  // VCC Hygrometer 1
int Hygro2 = 10  ;  // VCC Hygrometer 2
int value1;
int value2;
int runs1 = 0; // counts how many times the pumps have been turned on
int runs2 = 0;

#include "SevenSegmentTM1637.h" 
const byte PIN_CLK = 8;   // define CLK pin (any digital pin)
const byte PIN_DIO = 7;   // define DIO pin (any digital pin)
int inPin = 6; // input of the push button
int val = 0; 
int push_count = 0; // counts how many times the button was pushed
int buttonState = 0; // saves the state of the button, low or high
SevenSegmentTM1637    display(PIN_CLK, PIN_DIO);
unsigned long previousMillis = 0; // taken from the blink with delay example
const long interval = 1800000; // only measure every 30 minutes

void setup() {
  display.begin(); // init the display
  display.setBacklight(20);  // set the brightness of the display to 20 %
  Serial.begin(9600);
 
  // set all the pin modes accordingly
  pinMode(Pump1_1, OUTPUT); 
  pinMode(Pump1_2, OUTPUT);
  pinMode(Pump2_1, OUTPUT);
  pinMode(Pump2_2, OUTPUT);
  pinMode(Hygro1, OUTPUT);
  pinMode(Hygro2, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(inPin, INPUT);

  // set all the pins to their initial states
  digitalWrite(8, LOW);
  digitalWrite(Pump1_1, LOW);
  digitalWrite(Pump1_2, LOW);
  digitalWrite(Pump2_1, LOW);
  digitalWrite(Pump2_2, LOW);
  digitalWrite(Hygro1, LOW);
  digitalWrite(Hygro2, LOW);
  // display that the system is booting
  display.clear();
  display.print("INIT");      
  delay(2000);               
  display.clear();
 
}

void loop() {
  // we are counting how many milli seconds have passed since the system booted, if we completed a 30 min intervall, run measure(), else run buttons()
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval || previousMillis == 0) { // note the || previousMillis == 0, we also want to measure on bootup, it's easier to identify mistakes
    // save the last time we measured the moisture
    previousMillis = currentMillis;
    
  measure();
  }
  buttons();
}

void measure() {
  display.clear();
  display.print("read");
  digitalWrite(Hygro1, HIGH); // supply the hygrometer with voltage
  digitalWrite(Hygro2, HIGH); // supply the hygrometer with voltage
  delay(2000);
  value1 = analogRead(hygrometer1); // read the value (0-1023)
  value2 = analogRead(hygrometer2); // read the value (0-1023)
  delay(2000);  
  digitalWrite(Hygro1, LOW); // turn off the hygrometer
  digitalWrite(Hygro2, LOW); // turn off the hygrometer
  display.clear();
  
  if (value1 <= 550) // check if the plant is well watered (lower values mean well watered)
{
  display.clear();
  display.print("1 OK");
  delay(2000);
  display.clear();
}
else
{
  digitalWrite(Pump1_1, HIGH);
  digitalWrite(Pump1_2, HIGH);

  delay(20000); // time in ms how long the pump is turned on, 20 s here

  digitalWrite(Pump1_1, LOW);
  digitalWrite(Pump1_2, LOW);
  runs1++; // increment the number of times pump 1 has run
}

  if (value2 <= 450)
{
  display.clear();
  display.print("2 OK");
  delay(2000);
  display.clear();
}
else
{
  digitalWrite(Pump2_1, HIGH);
  digitalWrite(Pump2_2, HIGH);

  delay(20000); // time in ms how long the pump is turned on, 20 s here

  digitalWrite(Pump2_1, LOW);
  digitalWrite(Pump2_2, LOW);
  runs2++; // increment the number of times pump 2 has run
}  
  }

// the script to print the values and cycle through the display
void buttons() {
  val = digitalRead(inPin); // read state of the button
  if (val != buttonState && val == HIGH){ // make sure we detect a change from LOW to HIGH
    push_count++; // count that the button has been pushed
  }
      else {
      // do nothing
    }

  buttonState = val; // save the current state
  
  switch (push_count) {
    case 0:    
      display.clear();  
      display.print("sns1");
      delay(2000);
      display.clear();
      push_count++;
      break;              
    case 1:    
      display.print(value1);  
      break;
    case 2:   
      display.clear();  
      display.print("sns2");
      delay(2000);
      display.clear();
      push_count++;
      break;
    case 3:   
      display.print(value2);  
      break;
    case 4:   
      display.clear();  
      display.print("no 1");
      delay(2000);
      display.clear();
      push_count++;
      break;
    case 5:   
      display.print(runs1);  
      break;
    case 6:   
      display.clear();  
      display.print("no 2");
      delay(2000);
      display.clear();
      push_count++;
      break;
    case 7:   
      display.print(runs2);  
      break;      
    default:
      push_count=0;  
  }
}

Как это работает

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

2 сек — ВКЛ, 1 сек — ВЫКЛ / 2 сек — ВКЛ, 1 сек — ВЫКЛ / 2 сек — ВКЛ, 1 сек — ВЫКЛ

Модуль датчика питается от Arduino. С помощью Optocoupler PC817 мы делаем схему для реле отделенную от Arduino UNO.

Реле питается от внешнего источника, в этом случае 3 батареи AA.

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

Управление светодиодом

Подключив светодиод к Ардуино, мы получаем очень  удобный инструмент для управления им.  Ведь нам не нужно ничего включать или выключать физически. Достаточно просто указать в программе нужные инструкции, чтобы сама плата подавала напряжение на нужные пины, включая или выключая наш светодиод. Единожды загрузив программу в память контроллера, мы заставим его выполнять нужный нам алгоритм каждый раз, когда будет подключено питание.

Включение и выключение светодиода в Ардуино

Включение светодиода произойдет в тот момент, когда мы подадим на пин, к которому он подключен, высокий уровень сигнала (напряжение). За это в Ардуино отвечает  функция digitalWrite со вторым параметром HIGH. Например, для светодиода, подключенного к пину 12 команда будет выглядеть так: digitalWrite (12, HIGH);

Чтобы выключить светодиод, мы используем ту же команду, но с параметром LOW: digitalWrite(12, LOW). Если мы вызовем первую команду, а потом чрез какой-то промежуток времени вторую, то у нас светодиод сначала загорится, а потом потухнет. Зациклив включение и выключение, мы получим постоянно включающийся и выключающийся мигающий маячок.

Бывают ситуации, когда светодиод горит не очень ярко и непонятно, что тут пошло не так. На самом деле нужно в первую очередь проверить, не забыли ли вы сконфигурировать пин в качестве выходного. Это делается добавлением функции pinMode (обычно в блоке setup()). Для нашего варианта функция будет выглядеть так: pinMode(12, OUTPUT);

Описание датчика движения ардуино

PIR-sensor конструктивно разделен на две половины

Это обусловлено тем, что для устройства сигнализации важно именно наличие движения в зоне чувствительности, а не сам уровень излучения. Поэтому части установлены таким способом, что при улавливании одной большего уровня излучения, на выход будет подаваться сигнал со значением high или low

Основными техническими характеристиками датчика движения Ардуино являются:

  • Зона обнаружения движущихся объектов составляет от 0 до 7 метров;
  • Диапазон угла слежения – 110°;
  • Напряжение питания – 4.5-6 В;
  • Рабочий ток – до 0.05 мА;
  • Температурный режим – от -20° до +50°С;
  • Регулируемое время задержки от 0.3 до 18 с.

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

Принцип работы датчика движения на Arduino следующий:

  • Когда устройство установлено в пустой комнате, доза излучения, получаемая каждым элементом постоянна, как и напряжение;
  • При появлении в комнате человека, он первым делом попадает в зону обозрения первого элемента, на котором появляется положительный электрический импульс;
  • Когда человек перемещается по комнате, вместе с ним перемещается и тепловое излучение, которое попадает уже на второй сенсор. Этот PIR-элемент генерирует уже отрицательный импульс;
  • Разнонаправленные импульсы регистрируются электронной схемой датчика, которая делает вывод, что в поле зрения Pir-sensor Arduino находится человек.

УРОК 13. ARDUINO И РЕЛЕ

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

На тот случай, если у вас в наборе идет не просто реле, а именно модуль, т.е уже собранная схема на печатной плате, Вам не нужно собирать схему (см. ниже), а нужно правильно подключить модуль к плате Arduino.

Реле и Электронный модуль Реле для Arduino на 5V.

VCC — питание +5 Вольт

GND — общий (земля) — минус.

IN1 — управление

NO — нормально разомкнутый (Normally Open)

NC — нормально замкнутый (Normally Closed)

COM — обший (Common)

К контактам NC и NO подключаются светодиоды, общий COM подключается к + питания (+5V), GND к земле (-), VCC к +5 Вольт, IN1 (управление, обозначение может быть другим) к порту ардуино Pin 2.

Когда реле выключено, общий контакт «COM» (common) будет подключен к нормально замкнутому контакту «NC» (Normally Closed). Когда же реле сработает «общий» контакт COM соединится с «нормально разомкнутым» контактом «NO» (Normally Open).

Принципиальная схема Arduino и Реле. Урок 13

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

Для этого опыта вам понадобится:

1. Arduino UNO — 1 шт.

2. Реле или «Электронный модуль Реле» — 1 шт.

3. Транзистор 2N222A — 1 шт.

4. Диод 1N4148 — 1 шт.

5. Резистор 330 Ом.

6. Светодиоды различных цветов — 2 шт.

7. Соединительные провода.

8. Макетная плата.

Далее идет схема электрических соединений к уроку 13.

Cхема электрических соединений макетной платы и Arduino. Уроку 13. Arduino и Реле

Скачать код к опыту 13. Скетч и подробное описание (Обязательно прочтите весь скетч!):

Набор для экспериментов ArduinoKit
Код программы для опыта №13: sketch 13

Вид созданного урока на макетной схеме:

Arduino и Реле. Урок 13

В результате проделанного опыта Вы должны увидеть…

Вы должны услышать щелчки переключающегося реле, а также увидеть два светодиода по переменно загорающимися с секундным интервалом. Если этого нет, — проверьте правильно ли вы собрали схему, и загружен ли код в Arduino.

Возможные трудности:

Светодиоды не светятся
Дважды проверьте правильность установки светодиодов, — длинный вывод является плюсовым контактом..

Не слышны щелчки реле
Проверьте правильность подключение реле и транзистора.

Срабатывает через раз
Проверьте надежность подключение реле, у реле, если это не электронный модуль очень короткие выводы, попробуйте слегка придавить его в макетную плату.

Всем удачи! Ждём ваши комментарии к ARDUINO УРОК 13 — ARDUINO УПРАВЛЯЕТ РЕЛЕ.

2018-09-19T15:18:27+03:00Arduino уроки|

Подключение к сетевому питанию

У реле есть три контакта, предназначенных для подключения к сетевому питанию:

  • COM (от «common») – это общий контакт.
  • NO (от «normally open») – это нормально разомкнутый контакт. Общий контакт и нормально разомкнутый контакт между собой не соединены. Но когда вы включаете реле, эти контакты соединяются друг с другом, и потребитель начинает получать питание.
  • NC (от «normally closed») – это нормально замкнутый контакт. Общий контакт и нормально замкнутый контакт соединены друг с другом, даже если реле выключено. Но когда вы включаете реле, цепь размыкается, и потребитель перестает получать питание.

Если вы хотите управлять, к примеру, лампой, то лучше использовать нормально разомкнутый контакт, потому что лампа не будет гореть всегда (но вы будете включать ее время от времени).

Элементы платы

Реле

Релейный модуль выполнен на основе электромеханическое реле TRU-5VDC, с контактами:

  • NC — нормально замкнутый;
  • NO — нормально разомкнутый;
  • COM — коммутируемый контакт.

Если на управляющей обмотке реле отсутствует напряжение, то между нормально замкнутым NC и коммутируемым COM контактами есть электрическая связь, а между нормально разомкнутым NO и коммутируемым COM — нет. При подаче напряжения на управляющую обмотку нормально разомкнутый NO контакт замыкается, а нормально замкнутый NC — размыкается.

Вся электронная обвязка необходимая для управления реле уже встроена в модуль. На модуле расположен светодиод, который подскажет — замкнуто реле или нет.

Клеммник нагрузки

Электрические приборы подключается к реле в разрыв одного из двух проводов питания. Для подключения используется клеммник под винт с шагом 5 мм между контактами.

Провод от источника напряжения подключается к выводу , а нагрузка — к контакту или , в зависимости от задачи которую должно выполнять реле. Чаще всего реле используется для замыкания внешней цепи при подаче напряжения на управляющую обмотку. При таком способе даже если напряжение на управляющей плате по какой-то причине пропадёт, управляемая нагрузка будет автоматически отключена.

Пример подключения нагрузки .

Клеммник управления

Реле подключается к управляющей электронике через клеммник под винт с шагом 2,54 мм между контактами.

  • Сигнальный (S) — управляющий контакт обмоткой реле. Подключите к цифровому или аналоговому пину микроконтроллера.
  • Питание (V) — соедините с рабочим напряжением микроконтроллера.
  • Земля (G) — соедините с пином GND микроконтроллера.

Светодиодная индикация

Светодиод показывает состояние реле:

  • Горит когда реле включено и между контактами и есть электрическая связь, а между и — нет.
  • Не горит когда реле выключено и между контактами и нет электрической связи, а между и — есть.

Шаг 3: Подключение реле и насосов

Плата реле состоит из 3 терминалов для каждого входа: NO, NC и COM. Уже есть привычка переключаться как на нейтраль, так и на фазу для каждого насоса, с конкретным источником питания, который был использован, было точное понимание какой провод куда идет. Это не всегда так, поскольку у вас может не быть защиты от полярности.

Отрезаем провода от источника питания и подключаем их к COM-портам. Затем подключаем разомкнутые клеммы к насосам. Когда реле включается, разомкнутое соединение закрывается и насос запускается. Чтобы иметь возможность использовать 1 блок питания для нескольких насосов, мы подключили закрытый порт к COM-порту следующего набора терминалов.

На всякий случай, для общего понимания, ниже пример того как подключить к Arduino Uno светодиод через модуль реле:

Когда насос 1 включен, терминалы 1 и 2 включаются, нейтраль и фаза соединены через клеммы «NO» и «COM», обычно закрытый терминал теперь открыт. Мы не включаем оба насоса одновременно, а включаем последовательно. Более подробное объяснение и пример того, как модули реле работают будет в следующих материалах.

Скетч: Управление лампочкой при помощи реле-модуля и датчика движения типа PIR

Ниже будет рассказываться, как сделать цепь с лампой, реагирующей на движение. После того, как датчик заметит движение, лампочка будет гореть в течение 10 секунд. Движение будет определяться при помощи датчика движения типа PIR. Более подробно о том, как использовать датчик типа PIR вместе с платой Arduino, читайте тут.

Техника безопасности

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

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

при неосторожности можно получить удар электрическим током. Это очень серьезно, и я не хочу, чтобы вы пострадали

Если вы не на 100% уверены в том, что делаете, ничего не трогайте. Попросите помочь того, кто хорошо в этом разбирается.

Это очень серьезно, и я не хочу, чтобы вы пострадали. Если вы не на 100% уверены в том, что делаете, ничего не трогайте. Попросите помочь того, кто хорошо в этом разбирается.

Код

Скопируйте код, показанный ниже, в IDE Arduino, а затем загрузите его на плату Arduino.

Внимание! Не загружайте код, когда Arduino подключена к реле.

 1 /*********
 2   Автор – Руи Сантос (Rui Santos)
 3   Более подробно о проекте на: http://randomnerdtutorials.com  
 4 *********/
 5 
 6 // реле управляется при помощи контакта D8 (фазный провод подключен
 7 // к нормально замкнутому и общему контактам):
 8 int relay = 8;
 9 volatile byte relayState = LOW;
10 
11 // датчик движения PIR подключен к контакту D2:
12 int PIRInterrupt = 2;
13 
14 // переменные для хранения данных о времени:
15 long lastDebounceTime = ;  
16 long debounceDelay = 10000;
17 
18 void setup() {
19   // контакт для реле выставляем в режим OUTPUT:
20   pinMode(relay, OUTPUT);
21   digitalWrite(relay, HIGH);
22   // контакт для датчика выставляем в режим INPUT:
23   pinMode(PIRInterrupt, INPUT);
24   // если датчик заметил движение, переводим функцию detectMotion()
25   // в режим RISING, тем самым включая реле:
26   attachInterrupt(digitalPinToInterrupt(PIRInterrupt), detectMotion, RISING);
27   // запускаем последовательную коммуникацию (в отладочных целях): 
28   Serial.begin(9600);
29 }
30 
31 void loop() {
32   // когда пройдут 10 секунд, выключаем реле:
33   if((millis() - lastDebounceTime) > debounceDelay && relayState == HIGH){
34     digitalWrite(relay, HIGH);
35     relayState = LOW;
36     Serial.println("OFF");  //  "Выключение лампы"
37   }
38   delay(50);
39 }
40 
41 void detectMotion() {
42   Serial.println("Motion");  //  "Движение"
43   if(relayState == LOW){
44     digitalWrite(relay, LOW);
45   }
46   relayState = HIGH;  
47   Serial.println("ON");  //  "Включение лампы"
48   lastDebounceTime = millis();
49 }

Схема

Соедините компоненты как показано на картинке ниже:

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

Демонстрация

Вот так проект выглядит в действии. Определив движение, датчик передает сообщение об этом на плату Arduino, а та зажигает лампочку.

Скетч для Ардуино

Ниже вы можете скопировать и загрузить код в свою Ардуино Уно.

#include "DHT.h" 
#include "LiquidCrystal.h"
LiquidCrystal lcd(7, 8, 9, 10, 11 ,12);
#define DHTPIN 6 
#define DHTTYPE DHT22  
DHT sensor(DHTPIN, DHTTYPE); 
int relay_pin = 9;

void setup() { 
lcd.begin(16,2); 
sensor.begin(); 
pinMode(relay_pin, OUTPUT);
digitalWrite(relay_pin, HIGH);
}
void loop() { 
lcd.clear();
float t = sensor.readTemperature(); //считывание температуры с датчика
// Проверка, посылает ли датчик значения или нет
if (isnan(t)) {
lcd.print("Failed");
delay(1000);
return;
}
lcd.setCursor(0,0); 
lcd.print("Temp: ");
lcd.print(t);
lcd.print(" C");
if (t > 35){
  digitalWrite(relay_pin, LOW);
  lcd.setCursor(0,1); 
  lcd.print("Fan is ON "); 
  delay(10);
}
else{
  digitalWrite(relay_pin, HIGH);
  lcd.setCursor(0,1); 
  lcd.print("Fan is OFF "); 
}
delay(2000);
}

Объяснение кода

Прежде всего, мы включили библиотеки для датчика DHT22 и для ЖК-дисплея. Библиотеки помогут сделать код более простым.

Скачать все необходимые библиотеки для своих проектов вы можете на нашем сайте в разделе — Библиотеки.

#include "DHT.h"
#include "LiquidCrystal.h"

Затем мы инициализировали контакты к которым мы подключили ЖК-дисплей и датчик DHT22. После этого мы определили тип датчика DHT, который используется

Существует множество других типов датчиков DHT, таких как DHT11, поэтому здесь важно определить тип

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

#define DHTPIN 8

#define DHTTYPE DHT22
DHT sensor(DHTPIN, DHTTYPE);

В функции настройки мы дали команду DHT22 и LCD, чтобы начать общение с Arduino. Затем мы объявили контакт реле как выходной вывод, потому что мы дадим напряжение от Ардуино к реле для активации реле. Реле работает обратно (High означает Low для реле).

lcd.begin(16,2);
sensor.begin();

pinMode(relay_pin, OUTPUT);
digitalWrite(relay_pin, HIGH);

В функции цикла мы очищаем ЖК-экран, а затем считываем значение температуры от датчика.

lcd.clear();
float t = sensor.readTemperature();

if (isnan(t)) {
lcd.print("Failed");
delay(1000);
return;
}

Затем мы печатаем значение температуры на ЖК-дисплее, и если значение температуры будет больше 35, тогда реле будет активировано, и вентилятор начнет вращаться.

lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(t);
lcd.print(" C");

if (t > 35){
digitalWrite(relay_pin, LOW);
lcd.setCursor(0,1);
lcd.print("Fan is ON ");
delay(10);
}

На этом всё. Хороших вам проектов!

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации