Hướng dẫn ESP32 điều khiển module relay 4 kênh an toàn

Hướng dẫn ESP32 điều khiển relay 4 kênh: chọn GPIO an toàn, cấp nguồn 5 V phù hợp, xác định active LOW và lưu ý khi đóng cắt tải.

ESP32 có thể điều khiển module relay 4 kênh để đóng cắt bốn tải độc lập. Trước khi đấu nối, cần xác nhận điện áp cuộn relay, mức logic đầu vào và trạng thái kích active LOW hay active HIGH của đúng module đang dùng.

ESP32 DevKit V1 dùng để điều khiển relay
Bo ESP32 DevKit V1.
Module relay 5 V bốn kênh
Module relay 5 V bốn kênh.

1. Cảnh báo an toàn

Chỉ thử nghiệm phần điều khiển ở điện áp thấp khi chưa có chuyên môn về điện lưới. Điện áp 110/220 V có thể gây điện giật, cháy và hư thiết bị. Việc chọn cầu chì, dây dẫn, khoảng cách cách điện, hộp bảo vệ và đấu COM/NO/NC cho tải điện lưới phải do người đủ chuyên môn thực hiện khi nguồn đã được cô lập.

Relay cơ khí không tự bảo vệ ESP32 khỏi xung do tải cảm hoặc hồ quang ở tiếp điểm. Với tải cảm DC, dùng diode flyback đúng cực hoặc mạch dập phù hợp. Với tải AC/điện lưới, dùng RC snubber hoặc MOV đúng điện áp, công suất và tiêu chuẩn; không dùng diode flyback đơn giản cho tải AC.

2. Chuẩn bị và kiểm tra module

  • ESP32 DevKit và cáp USB dữ liệu.
  • Module relay 4 kênh có đầu vào tương thích mức logic 3,3 V.
  • Nguồn 5 V đủ dòng cho cuộn relay; không mặc định cổng 3V3 của ESP32 có thể cấp cho cuộn relay 5 V.
  • Dây nối và tải thử điện áp thấp.

Một số module có chân VCC/JD-VCC và optocoupler. Cách tháo jumper, nối mass hay duy trì cách ly phụ thuộc sơ đồ cụ thể; không suy ra chỉ từ màu board. Nếu đầu vào bị kéo lên 5 V, phải kiểm tra dòng và điện áp tới GPIO ESP32 hoặc dùng tầng chuyển mức/driver phù hợp.

3. Đấu nối phần điều khiển

Đấu nối phần logic giữa module relay và ESP32
Module relay ESP32 Ghi chú
GND GND Nối mass chung nếu cấu hình module yêu cầu.
JD-VCC Nguồn cuộn relay Theo đúng điện áp định mức của cuộn relay, thường là 5 V.
VCC Nguồn phía logic Theo sơ đồ module; không mặc định là 5 V và không để GPIO ESP32 nhận mức logic 5 V.
IN1 GPIO18 Kênh relay 1.
IN2 GPIO19 Kênh relay 2.
IN3 GPIO21 Kênh relay 3; không dùng đồng thời làm SDA.
IN4 GPIO22 Kênh relay 4; không dùng đồng thời làm SCL.

Tránh các chân chỉ nhập và thận trọng với chân strapping/boot hoặc chân đang dùng cho flash, UART hay ngoại vi khác. Nếu thay GPIO, kiểm tra tài liệu của đúng module ESP32 và trạng thái chân trong lúc reset.

4. Chương trình Arduino mẫu

Ví dụ dưới đây giả định module active LOW. Dòng ghi mức OFF trước khi chuyển chân sang OUTPUT giúp giảm nguy cơ relay chớp trong lúc khởi tạo. Nếu module của bạn active HIGH, đảo hai hằng RELAY_ON và RELAY_OFF.

#include <Arduino.h>

constexpr uint8_t RELAY_PINS[] = {18, 19, 21, 22};
constexpr size_t RELAY_COUNT = sizeof(RELAY_PINS) / sizeof(RELAY_PINS[0]);
constexpr uint8_t RELAY_ON = LOW;
constexpr uint8_t RELAY_OFF = HIGH;

void setRelay(uint8_t channel, bool on) {
  if (channel >= RELAY_COUNT) return;
  digitalWrite(RELAY_PINS[channel], on ? RELAY_ON : RELAY_OFF);
}

void setup() {
  Serial.begin(115200);
  for (uint8_t pin : RELAY_PINS) {
    digitalWrite(pin, RELAY_OFF);
    pinMode(pin, OUTPUT);
  }
}

void loop() {
  for (uint8_t channel = 0; channel < RELAY_COUNT; ++channel) {
    setRelay(channel, true);
    delay(500);
    setRelay(channel, false);
    delay(500);
  }
}

5. Kiểm tra từng bước

  1. Chưa đấu tải, đo mức IN và xác nhận relay không kích ngoài ý muốn khi cấp nguồn/reset.
  2. Nạp chương trình và nghe/quan sát từng relay chuyển trạng thái theo thứ tự.
  3. Dùng đồng hồ kiểm tra COM–NO và COM–NC ở trạng thái ON/OFF.
  4. Thử với tải điện áp thấp, sau đó mới thiết kế phần công suất theo dòng khởi động, điện áp và loại tải.

Nếu ESP32 reset khi relay đóng, kiểm tra sụt áp nguồn, đường mass, nhiễu từ cuộn relay và cách đi dây. Nếu relay luôn bật, xác nhận lại active LOW/HIGH thay vì đảo logic một cách phỏng đoán. Trình tự phần mềm chỉ giảm nguy cơ chớp relay sau khi setup() bắt đầu; nếu trạng thái trong lúc reset phải được bảo đảm, cần thêm điện trở kéo hoặc tầng driver phần cứng phù hợp.

Xem thêm cách nạp file .bin vào ESP32 và kết nối OLED SSD1306 với ESP8266.


Tin tức liên quan

Tưới cây tự động với ESP32: cảm biến độ ẩm đất, relay và bơm mini, ngưỡng có trễ
Tưới cây tự động với ESP32: cảm biến độ ẩm đất, relay và bơm mini, ngưỡng có trễ

Làm hệ thống tưới cây tự động với ESP32: cảm biến độ ẩm đất điện dung, hiệu chỉnh khô ướt, relay điều khiển bơm mini, ngưỡng có trễ, giới hạn thời gian bơm và thí nghiệm STEM.

Đưa ESP32 và relay 4 kênh vào Home Assistant bằng MQTT discovery, không viết YAML
Đưa ESP32 và relay 4 kênh vào Home Assistant bằng MQTT discovery, không viết YAML

ESP32 tự gửi tin cấu hình MQTT discovery, Home Assistant tạo 4 công tắc relay và cảm biến Wi-Fi; Mosquitto, tài khoản, di chúc, retain và bảng xử lý lỗi.

ESP32 điều khiển động cơ bước NEMA 17 với A4988: vi bước, chỉnh dòng VREF, tăng tốc mượt
ESP32 điều khiển động cơ bước NEMA 17 với A4988: vi bước, chỉnh dòng VREF, tăng tốc mượt

Hướng dẫn điều khiển động cơ bước NEMA 17 bằng ESP32 qua driver A4988: nối dây, chỉnh dòng VREF, chọn vi bước 1/16, tăng tốc giảm tốc hình thang và thí nghiệm STEM.

Hướng dẫn dùng MQTT với ESP32: gửi dữ liệu và điều khiển relay bằng PubSubClient
Hướng dẫn dùng MQTT với ESP32: gửi dữ liệu và điều khiển relay bằng PubSubClient

Hướng dẫn dùng MQTT với ESP32 trên Arduino IDE: broker, topic, publish, subscribe, cài Mosquitto và PubSubClient, gửi dữ liệu và điều khiển module relay qua mạng nội bộ.

Hướng dẫn dùng Deep Sleep trên ESP32: tiết kiệm pin, đánh thức bằng timer và nút nhấn
Hướng dẫn dùng Deep Sleep trên ESP32: tiết kiệm pin, đánh thức bằng timer và nút nhấn

Hướng dẫn đưa ESP32 vào Deep Sleep trên Arduino IDE để tiết kiệm pin: các chế độ nguồn, đánh thức bằng timer và nút nhấn, giữ biến trong bộ nhớ RTC và ước tính thời lượng pin.

Điều khiển relay từ xa bằng ESP-NOW: remote ESP32 một nút nhấn có phản hồi trạng thái
Điều khiển relay từ xa bằng ESP-NOW: remote ESP32 một nút nhấn có phản hồi trạng thái

Hướng dẫn làm bộ điều khiển relay từ xa bằng hai mạch ESP32 và ESP-NOW hai chiều: remote gửi lệnh, mạch relay báo lại trạng thái, lọc theo địa chỉ MAC và bật mã hóa.

Phát hiện chuyển động bằng sóng Wi-Fi (CSI) trên ESP32: không cần cảm biến
Phát hiện chuyển động bằng sóng Wi-Fi (CSI) trên ESP32: không cần cảm biến

Giải thích Wi-Fi CSI và hướng dẫn dùng ESP32 phát hiện người di chuyển trong phòng chỉ bằng sóng Wi-Fi từ router: lấy dữ liệu CSI, tính điểm chuyển động, đặt ngưỡng và xem trên Serial Plotter.

Cấp nguồn cho ESP32 đúng cách: cổng USB, chân VIN, 3V3, pin 18650 và lỗi brownout khi bật Wi-Fi
Cấp nguồn cho ESP32 đúng cách: cổng USB, chân VIN, 3V3, pin 18650 và lỗi brownout khi bật Wi-Fi

Cấp nguồn cho ESP32 qua cổng USB, chân VIN, 3V3, từ adapter hay pin 18650; vì sao ESP32 tự khởi động lại khi bật Wi-Fi (brownout) và chương trình đo sụt áp nguồn.


Bình luận
Đã thêm vào giỏ hàng