Giới thiệu

Việc bật tắt đèn dùng RFID Arduino là một dự án DIY (Do It Yourself) vừa thú vị vừa hữu ích, giúp bạn tự động hoá hệ thống chiếu sáng trong gia đình hoặc văn phòng. Bằng cách kết hợp công nghệ RFID (Radio‑Frequency Identification) với vi điều khiển Arduino, bạn có thể điều khiển ánh sáng chỉ bằng một thẻ RFID, mà không cần phải chạm công tắc. Bài viết sẽ cung cấp toàn bộ quy trình, linh kiện cần chuẩn bị, cách lập trình và một số lưu ý quan trọng để bạn có thể triển khai ngay hôm nay.

Tóm tắt quy trình thực hiện

  1. Chuẩn bị linh kiện: Arduino Uno, module RFID RC522, relay 5V, đèn LED hoặc đèn công suất, nguồn cấp điện và các dây nối.
  2. Kết nối phần cứng: Gắn module RFID vào Arduino qua giao tiếp SPI, nối relay vào chân digital để điều khiển nguồn cho đèn.
  3. Lập trình Arduino: Cài đặt thư viện MFRC522, viết code nhận ID thẻ, so sánh với danh sách cho phép và bật/tắt relay.
  4. Kiểm tra và tinh chỉnh: Nạp chương trình, đưa thẻ RFID lại gần đầu đọc, quan sát đèn bật/tắt; điều chỉnh debounce và thời gian chờ nếu cần.
  5. Hoàn thiện và bảo vệ: Đóng gói mạch vào hộp nhựa, đặt đầu đọc ở vị trí thuận tiện và đảm bảo cách điện an toàn.

1. Linh kiện và công cụ cần chuẩn bị

1.1. Vi điều khiển Arduino

  • Arduino Uno (hoặc Nano, Mega) – nền tảng mở, dễ lập trình, hỗ trợ nhiều chân I/O.

1.2. Module RFID

  • MFRC522 – module phổ biến, giá thành rẻ, hỗ trợ thẻ 13.56 MHz (MIFARE Classic, Ultralight).

1.3. Relay

  • Relay 5V (đơn kênh) – dùng để ngắt/mở mạch điện AC cho đèn. Lựa chọn có diode snubber để bảo vệ Arduino khỏi điện áp ngược.

1.4. Đèn và nguồn

  • Đèn LED (đối với mô hình thử nghiệm) hoặc đèn công suất (đèn sợi đèn, đèn LED công nghiệp) – cần tính công suất phù hợp với relay.
  • Nguồn 5 V cho Arduino và nguồn AC cho đèn (220 V hoặc 110 V tùy khu vực).

1.5. Dây nối, breadboard, hàn, hộp đựng

  • Dây jumper, cáp USB để nạp chương trình, hộp nhựa chịu nhiệt để bảo vệ mạch.

2. Kết nối phần cứng

2.1. Kết nối module RFID với Arduino (SPI)

Arduino MFRC522
5V VCC
GND GND
10 (SS) SDA
13 (SCK) SCK
11 (MOSI) MOSI
12 (MISO) MISO
9 (RST) RST

Lưu ý: Chân SS (Slave Select) có thể dùng 10 hoặc 5 tùy vào board, nhưng cần khai báo đúng trong code.

2.2. Kết nối relay

  • IN của relay → chân digital (ví dụ D7) của Arduino.
  • VCCGND của relay → 5 V và GND Arduino.
  • COM (common) của relay → dây điện AC vào nguồn.
  • NO (Normally Open) → đầu vào của đèn.

Cảnh báo: Khi làm việc với điện AC, luôn tắt nguồn và dùng dây cách điện. Đảm bảo các kết nối được cách điện kín, tránh rò rỉ.

3. Lập trình Arduino

3.1. Cài đặt thư viện

Mở Arduino IDE → Sketch > Include Library > Manage Libraries → Tìm MFRC522 và cài đặt.

3.2. Code mẫu

#include <SPI.h>
#include <MFRC522.h> #define RST_PIN 9 // Pin reset của MFRC522
#define SS_PIN 10 // Pin SS (SDA)
#define RELAY_PIN 7 // Pin điều khiển relay MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key; const byte authorizedUID4 = {0xDE, 0xAD, 0xBE, 0xEF}; // Thay bằng UID thẻ của bạn void setup() { Serial.begin(9600); pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, LOW); // Relay OFF lúc khởi động SPI.begin(); // Khởi động bus SPI rfid.PCD_Init(); // Khởi tạo module RFID Serial.println(F("Hệ thống sẵn sàng, đưa thẻ lại gần đầu đọc..."));
} void loop() { // Kiểm tra xem có thẻ nào được đưa vào không if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return; Serial.print(F("UID thẻ: ")); for (byte i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidBytei < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidBytei, HEX); } Serial.println(); // So sánh UID với danh sách cho phép if (compareUID(rfid.uid.uidByte, authorizedUID)) { Serial.println(F("Thẻ hợp lệ – bật/tắt đèn")); toggleRelay(); } else { Serial.println(F("Thẻ không hợp lệ")); } // Ngừng đọc thẻ trong 500ms để tránh bounce delay(500); rfid.PICC_HaltA(); // Dừng giao tiếp với thẻ
} // Hàm so sánh UID
bool compareUID(byte uid, const byte auth) { for (byte i = 0; i < 4; i++) { if (uidi != authi) return false; } return true;
} // Hàm bật/tắt relay
void toggleRelay() { static bool state = false; state = !state; digitalWrite(RELAY_PIN, state ? HIGH : LOW); Serial.println(state ? F("Đèn ON") : F("Đèn OFF"));
}

Giải thích nhanh

  • compareUID(): So sánh UID thẻ hiện tại với UID đã lưu trong code. Bạn có thể mở rộng thành mảng nhiều UID.
  • toggleRelay(): Đảo trạng thái relay mỗi khi thẻ hợp lệ được quét.
  • delay(500): Giảm hiện tượng “bouncing” khi thẻ vẫn ở trong vùng đọc.

3.3. Nạp chương trình

Kết nối Arduino với máy tính qua cáp USB, chọn Board > Arduino UnoPort, sau đó Upload. Khi tải thành công, mở Serial Monitor để xem thông tin UID và trạng thái đèn.

4. Kiểm tra và tinh chỉnh

  1. Đặt thẻ RFID lên đầu đọc. Nếu thẻ được công nhận, đèn sẽ bật hoặc tắt tùy theo trạng thái hiện tại.
  2. Nếu đèn không phản hồi, kiểm tra:
  3. Kết nối relay đúng (IN HIGH bật, LOW tắt).
  4. Đảm bảo nguồn AC đã được cắt khi lắp ráp.
  5. Đọc giá trị UID trên Serial Monitor và cập nhật vào mảng authorizedUID.
  6. Đối với môi trường ánh sáng mạnh hay nhiễu, có thể thêm điện trở pull‑up vào chân RSTSS để tăng độ ổn định.

5. Mở rộng và tùy biến

5.1. Nhiều thẻ

Thêm một mảng hai‑chiều byte authorizedUIDs4 và vòng lặp kiểm tra để cho phép nhiều người dùng.

5.2. Thời gian bật tự động

Thêm biến unsigned long lastOnTime; và trong loop() kiểm tra nếu đã bật quá 5 phút thì tự động tắt relay.

5.3. Giao diện web

Sử dụng ESP8266 hoặc Ethernet Shield để tạo một trang web hiển thị trạng thái đèn và cho phép bật/tắt từ xa.

5.4. Tích hợp cảm biến ánh sáng

Kết hợp BH1750 hoặc LDR để tự động tắt đèn khi môi trường đủ sáng, chỉ bật khi thiếu sáng và thẻ RFID được quét.

6. An toàn điện và bảo trì

  • Cách điện: Đảm bảo mọi dây nối AC được bọc cách điện và không để lộ.
  • Kiểm tra nhiệt độ: Relay khi hoạt động lâu có thể nóng lên; nếu cần, gắn tản nhiệt hoặc chọn relay công nghiệp.
  • Kiểm tra định kỳ: Thường xuyên kiểm tra kết nối, thay thẻ hỏng hoặc đồng bộ lại UID nếu có thẻ mới.

7. Ứng dụng thực tiễn

  • Nhà ở: Điều khiển đèn phòng khách, phòng ngủ chỉ bằng thẻ, tránh việc để tay chạm công tắc khi tay bận.
  • Văn phòng: Quản lý chiếu sáng khu vực họp, giảm tiêu thụ điện năng khi không có người.
  • Nhà máy: Tích hợp RFID vào hệ thống chiếu sáng khu vực nguy hiểm, chỉ người có thẻ mới được bật đèn.
  • Dự án giáo dục: Giảng dạy nguyên lý RFID, Arduino và điện tử cơ bản cho học sinh, sinh viên.

8. Tham khảo và nguồn thông tin

  • Datasheet MFRC522 – cung cấp chi tiết giao tiếp SPI và lệnh điều khiển.
  • Arduino Official Documentation – hướng dẫn cấu hình chân I/O và lập trình.
  • Báo cáo nghiên cứu “IoT Lighting Control Using RFID” (2026) – phân tích hiệu quả năng lượng và độ tin cậy của hệ thống.
  • panasonicvn.com.vn – nguồn cung cấp các linh kiện điện tử chất lượng và hướng dẫn lắp đặt an toàn.

Kết luận

Việc bật tắt đèn dùng RFID Arduino không chỉ mang lại sự tiện lợi mà còn mở ra cơ hội học hỏi về công nghệ IoT và tự động hoá. Với các linh kiện cơ bản, một vài bước kết nối và lập trình, bạn có thể xây dựng một hệ thống chiếu sáng thông minh, an toàn và linh hoạt cho mọi không gian. Hãy thử ngay, tùy biến theo nhu cầu cá nhân và chia sẻ trải nghiệm của mình để cộng đồng cùng tiến bộ.

Mục nhập này đã được đăng trong Blog. Đánh dấu trang permalink.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *