Модуль реле: подключение к ESP32 и Arduino

Реле для управления нагрузкой

Слабый сигнал контроллера включает мощную нагрузку: лампу, насос, обогреватель. Контакты реле гальванически отделены от схемы.

Как работает

Катушка реле берёт 70–80 мА — вывод контроллера столько не даст, поэтому на модуле стоит транзистор (и часто оптрон). Контроллер подаёт на IN слабый сигнал, транзистор включает катушку, контакты замыкают цепь нагрузки: COM — общий, NO — замкнут при включённом реле, NC — при выключенном.

Во многих модулях вход инверсный: реле срабатывает от LOW. Проверьте свой модуль: если реле щёлкает при digitalWrite(IN, LOW) — он такой.

Выводы

ВыводНазначение
COMобщий контакт реле
INуправляющий вход
NCнормально замкнутый: соединён с COM, пока реле выключено
NOнормально разомкнутый: замыкается с COM, когда реле включено
VCCпитание катушки
GNDобщий провод

Подключение к ESP32

Модуль релеESP32
INGPIO5
VCC3V3
GNDGND

Схема из примера «Реле по расписанию».

⚡ В примере «Модуль реле» питается от 3V3 — в симуляторе так проще, и модель это допускает. Настоящий модуль рассчитан на 5 В: подключайте VCC к VIN (5 В от USB) или к отдельному источнику 5 В с общей землёй.

Реле по расписанию

Открыть пример целиком
Код скетча
const int RELAY = 5;
const unsigned long ON_MS = 3000;
const unsigned long OFF_MS = 7000;

bool on = false;
unsigned long changed = 0;

void setup() {
  Serial.begin(115200);
  pinMode(RELAY, OUTPUT);
  digitalWrite(RELAY, LOW);
  changed = millis();
}

void loop() {
  unsigned long need = on ? ON_MS : OFF_MS;
  if (millis() - changed >= need) {
    on = !on;
    changed = millis();
    digitalWrite(RELAY, on);
    Serial.println(on ? "нагрузка включена" : "нагрузка выключена");
  }
}

Подключение к Arduino Uno

Модуль релеArduino Uno
COMdc-fuse fu1, вывод 2
IND7
NOdc-motor m1, вывод V+
VCC5V
GNDGND

Схема из примера «Arduino Uno: насос 12 В по кнопке».

Arduino Uno: насос 12 В по кнопке

Открыть пример целиком
Код скетча
// Насос 12 В по кнопке.
//
// Кнопка на D2 с подтяжкой: нажата — LOW. Насос работает RUN_MS и
// выключается сам; повторное нажатие во время работы продлевает полив.

const int BUTTON = 2, RELAY = 7;
const unsigned long RUN_MS = 5000;

unsigned long started = 0;
bool running = false;

void setup() {
  Serial.begin(9600);
  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(RELAY, OUTPUT);
  digitalWrite(RELAY, LOW);
}

void loop() {
  if (digitalRead(BUTTON) == LOW) {
    if (!running) Serial.println("насос включён");
    running = true;
    started = millis();
  }
  if (running && millis() - started >= RUN_MS) {
    running = false;
    Serial.println("насос выключен");
  }
  digitalWrite(RELAY, running ? HIGH : LOW);
  delay(20);
}

В железе

Модуль на 5 В от ESP32: катушку питают от VIN (5 В), а вход IN с 3,3 В срабатывает не у всех модулей. Надёжный вариант — модуль на 3,3 В или с оптроном и перемычкой JD-VCC. Сетевые 230 В на контактах требуют корпуса и защиты: дорожки дешёвых модулей не всегда выдерживают заявленные 10 А.

Частые ошибки

Другие детали