Hướng dẫn nạp điều khiển (Remote) đối với mạch sóng RF433 hoặc 315Mhz

Linh kiện cần chuẩn bị:

  • Arduino, esp32 hoặc esp8266
  • Board Test mạch
  • Dây cắm Board Test
  • Module thu RF-5V
  • Remote học lệnh

Sơ đồ kết nối

sơ đồ đấu nối RF-5V

Code nạp cho ESP32

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

const int RF_RECEIVE_PIN = 18; // Chân kết nối với module RF
const unsigned long PAIRING_CODE = 100000101100100011001000; // Mã RF để khởi động chế độ học
const int BUTTON_PIN = 0; // Chân kết nối với nút (GPIO0)
const int LED_PIN = 19; // Chân kết nối với đèn LED (GPIO19)
const int CONTROLLED_PIN = 21; // Chân kết nối với bóng đèn cần điều khiển (GPIO21)

bool pairingMode = false;
unsigned long learnedCode = 0; // Mã sóng sẽ được lưu trữ

void setup() {
Serial.begin(115200);
mySwitch.enableReceive(RF_RECEIVE_PIN);
pinMode(BUTTON_PIN, INPUT_PULLUP); // Đặt chân BUTTON_PIN là INPUT_PULLUP để nút nhấn được đặt HIGH mặc định
pinMode(LED_PIN, OUTPUT); // Đặt chân LED_PIN là OUTPUT
pinMode(CONTROLLED_PIN, OUTPUT); // Đặt chân CONTROLLED_PIN là OUTPUT
digitalWrite(LED_PIN, LOW); // Tắt LED ban đầu
digitalWrite(CONTROLLED_PIN, LOW); // Tắt đèn ban đầu
}

void loop() {
// Kiểm tra trạng thái của nút (nếu nút được nhấn)
if (digitalRead(BUTTON_PIN) == LOW) {
Serial.println(“Button pressed, toggling pairing mode…”);
pairingMode = !pairingMode; // Chuyển đổi trạng thái chế độ học khi nút được nhấn
if (pairingMode) {
Serial.println(“Entering pairing mode…”);
digitalWrite(LED_PIN, HIGH); // Bật LED để báo hiệu đang trong chế độ học
learnedCode = 0; // Đặt lại mã sóng đã học
} else {
Serial.println(“Exiting pairing mode…”);
digitalWrite(LED_PIN, LOW); // Tắt LED khi thoát khỏi chế độ học
}
// Đợi một thời gian ngắn để tránh đọc nhiều lần khi nút vẫn còn được nhấn
delay(500);
}

// Kiểm tra nếu có mã sóng nhận được từ module RF
if (mySwitch.available()) {
unsigned long receivedCode = mySwitch.getReceivedValue();

// Kiểm tra xem có đang ở chế độ học
if (pairingMode) {
Serial.print(“Learning code: “);
Serial.println(receivedCode);
learnedCode = receivedCode; // Lưu mã sóng đã học

// Đặt biến trạng thái trả về về 0 để sẵn sàng nhận mã sóng tiếp theo
mySwitch.resetAvailable();
} else {
// Kiểm tra mã sóng có trùng khớp với mã sóng đã học không
if (receivedCode == learnedCode) {
Serial.println(“Received matching code. Toggling controlled LED…”);
digitalWrite(CONTROLLED_PIN, !digitalRead(CONTROLLED_PIN)); // Bật/tắt đèn điều khiển
}

// Đặt biến trạng thái trả về về 0 để sẵn sàng nhận mã sóng tiếp theo
mySwitch.resetAvailable();
}
}
}

Bài viết liên quan