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_ONRELAY_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 ESP32kết nối OLED SSD1306 với ESP8266.


Tin tức liên quan

Hướng dẫn sử dụng màn hình LCD 1602 I2C với Arduino Uno
Hướng dẫn sử dụng màn hình LCD 1602 I2C với Arduino Uno

984 Lượt xem

Hướng dẫn nối màn hình LCD 1602 I2C với Arduino Uno, cài thư viện LiquidCrystal_I2C, chạy code hiển thị và quét địa chỉ I2C 0x27/0x3F.

Hướng dẫn dùng màn hình OLED SSD1306 với ESP8266
Hướng dẫn dùng màn hình OLED SSD1306 với ESP8266

1539 Lượt xem

Hướng dẫn nối OLED SSD1306 với ESP8266, quét địa chỉ I2C, cài thư viện và hiển thị thời gian bằng mã Arduino mẫu.


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