Relay Wiring - Tiếng click quyền lực

AI Hunter

Member
Relay thực chất là một cái công tắc cơ học. Bên trong nó có một nam châm điện.
Khi ESP32 cấp điện -> Nam châm hút miếng sắt -> Công tắc đóng lại -> "Tạch!".
Khi ngắt điện -> Lò xo kéo miếng sắt về -> Công tắc mở ra -> "Tạch!".

Relay Wiring - Tiếng click quyền lực.jpg

1. Giải phẫu Module Relay​


Cầm module Relay trên tay, bạn sẽ thấy 2 phía:

Phía bên trái (3 chân kim) - Nối với ESP32:
  • VCC (+): Chân nguồn dương (5V).
  • GND (-): Chân nguồn âm (0V).
  • IN (Signal): Chân nhận tín hiệu điều khiển.

Phía bên phải (3 cổng vặn ốc) - Nối với thiết bị 220V (Khoan hãy nối):
  • COM (Common): Chân chung (Luôn nối dây nóng vào đây).
  • NO (Normally Open): Thường mở. (Mặc định ngắt điện, khi Relay nhảy mới có điện). -> Dùng cổng này.
  • NC (Normally Closed): Thường đóng. (Mặc định có điện, khi Relay nhảy mới ngắt). -> Ít dùng.

2. Sơ đồ đi dây (Wiring)​


CẢNH BÁO: CHƯA cắm điện 220V. Chúng ta chỉ nối dây tín hiệu điện thấp (Low Voltage) thôi.

Hãy dùng dây Jumper (Cái-Đực hoặc Cái-Cái) để nối như sau:

Chân RelayChân ESP32 (DevKit V1)Ghi chú
VCCVIN (hoặc 5V)Lấy nguồn 5V trực tiếp từ cổng USB.
GNDGNDNối đất chung.
IND23 (GPIO 23)Hoặc bất kỳ chân D nào (trừ D34-D39 chỉ nhận input).

*Lưu ý:* Nếu cắm vào VIN mà Relay không sáng đèn nguồn, có thể chân VIN của mạch bạn không nối với USB. Hãy thử tìm chân ghi 5V.

3. Cập nhật Code (src/main.cpp)​


Chúng ta sửa lại code bài trước một chút. Thay vì điều khiển đèn LED (GPIO 2), ta điều khiển Relay (GPIO 23).

Lưu ý quan trọng về Logic:
Đa số Relay trên thị trường là Kích mức thấp (Active Low). Nghĩa là:
  • Gửi tín hiệu LOW (0V) -> Relay BẬT (Hút).
  • Gửi tín hiệu HIGH (3.3V) -> Relay TẮT (Nhả).
(Nó ngược với đèn LED thông thường).

Copy đoạn code sau đè lên file src/main.cpp:

C++:
#include <Arduino.h>
#include <WiFi.h>
#include <PubSubClient.h>

// --- CẤU HÌNH ---
const char* ssid = "TEN_WIFI_NHA_BAN";
const char* password = "MAT_KHAU_WIFI";
const char* mqtt_server = "192.168.1.X"; // IP máy tính
const int mqtt_port = 1883;

WiFiClient espClient;
PubSubClient client(espClient);

// ĐỊNH NGHĨA CHÂN
#define LED_PIN 2      // Đèn trên mạch (để debug)
#define RELAY_PIN 23   // Chân nối Relay

void setup_wifi() {
  delay(10);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi Connected!");
}

void callback(char* topic, byte* payload, unsigned int length) {
  String message = "";
  for (int i = 0; i < length; i++) message += (char)payload[i];
  Serial.println("Message: " + message);

  if (String(topic) == "home/livingroom/light") {
    if (message == "ON") {
      // Logic ngược: LOW là BẬT Relay
      digitalWrite(RELAY_PIN, LOW);
      digitalWrite(LED_PIN, HIGH); // Đèn trên mạch sáng báo hiệu
      Serial.println("=> RELAY ON (Tach!)");
    }
    else if (message == "OFF") {
      // Logic ngược: HIGH là TẮT Relay
      digitalWrite(RELAY_PIN, HIGH);
      digitalWrite(LED_PIN, LOW);
      Serial.println("=> RELAY OFF");
    }
  }
}

void reconnect() {
  while (!client.connected()) {
    String clientId = "ESP32-Relay";
    if (client.connect(clientId.c_str())) {
      Serial.println("MQTT Connected");
      client.subscribe("home/livingroom/light");
    } else {
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
 
  pinMode(LED_PIN, OUTPUT);
  pinMode(RELAY_PIN, OUTPUT);
 
  // Mặc định tắt Relay khi khởi động
  // (Với Active Low, HIGH nghĩa là TẮT)
  digitalWrite(RELAY_PIN, HIGH);

  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
  client.setCallback(callback);
}

void loop() {
  if (!client.connected()) reconnect();
  client.loop();
}

4. Test "Tiếng Click thần thánh"​


  1. Nạp code vào ESP32.
  2. Mở Serial Monitor xem đã kết nối Wifi/MQTT chưa.
  3. Dùng máy tính (MQTT Explorer hoặc Terminal) gửi lệnh:
    • Topic: home/livingroom/light
    • Payload: ON

Kết quả mong đợi:
1. Trên module Relay có một đèn LED đỏ/xanh sáng lên.
2. Bạn nghe thấy một tiếng "TẠCH" rất rõ.
3. Gửi lệnh OFF -> Đèn Relay tắt -> Nghe tiếng "Tạch" (nhả ra).

Tổng kết​


Chúc mừng! Bạn đã nắm trong tay "công tắc vạn năng".
Tiếng "Tạch" đó chính là âm thanh của việc dòng điện đã được nối. Nếu bạn nối dây đèn bàn vào 2 cổng COM và NO kia, thì đèn bàn đã sáng rồi đấy.

Nhưng khoan! Đừng vội cắt dây đèn bàn nếu bạn không muốn tóc dựng ngược.
Tập tiếp theo, chúng ta sẽ kết hợp Tất cả lại với nhau (Full Stack Integration):
Dùng App Jarvis trên điện thoại (đã làm ở Season 3) -> Bấm nút -> Server xử lý -> MQTT -> ESP32 -> Relay "Tạch".
 
Back
Top