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.
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
| 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
- 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.
- Nạp chương trình và nghe/quan sát từng relay chuyển trạng thái theo thứ tự.
- Dùng đồng hồ kiểm tra COM–NO và COM–NC ở trạng thái ON/OFF.
- 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.
Xem thêm