ESP8266 Khóa cửa RFID
Tutorial này hướng dẫn bạn cách xây dựng một hệ thống khóa cửa bằng ESP8266, module RFID/NFC RC522, một relay, khóa solenoid hoặc khóa điện từ, và có thể có LCD tùy chọn. Để bạn dễ dàng thực hiện, tutorial này sẽ hướng dẫn xây dựng khóa RFID từ các bước đơn giản đến phức tạp. Cụ thể, chúng ta sẽ làm:
- Phần 1: Hệ thống khóa cửa RFID đơn giản với ESP8266, bàn phím, khóa solenoid hoặc khóa điện từ, hỗ trợ một thẻ RFID duy nhất
- Phần 2: (Tùy chọn) Hỗ trợ thêm nhiều thẻ RFID
- Phần 3: (Tùy chọn) Thêm màn hình LCD vào khóa cửa RFID.
- Phần 4: (Tùy chọn) Thêm cảm biến cửa cho khóa cửa RFID.
- Phần 5: (Tùy chọn) Quản lý và lưu trữ các thẻ RFID hợp lệ vào EEPROM nội bộ của ESP8266
- Phần 6: (Tùy chọn) Lưu lịch sử truy cập vào thẻ SD

Nếu bạn muốn xây dựng hệ thống khóa cửa bằng mật khẩu, vui lòng tham khảo ESP8266 - Khóa cửa bằng bàn phím.
Phần cứng cần chuẩn bị
| 1 | × | ESP8266 NodeMCU ESP-12E | ||
| 1 | × | Recommended: ESP8266 NodeMCU ESP-12E (Uno-form) | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | RFID/NFC RC522 Kit (reader + tags) | ||
| 1 | × | RFID Key Fob | ||
| 1 | × | RFID Card | ||
| 1 | × | Solenoid Lock | ||
| 1 | × | (Hoặc) Electromagnetic Lock | ||
| 1 | × | Relay | ||
| 1 | × | 12V Power Adapter | ||
| 1 | × | DC Power Jack | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP8266 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP8266 Type-C |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về Mô-đun RFID/NFC RC522 và Khóa điện từ
Nếu bạn chưa quen với Mô-đun RFID/NFC RC522, khóa điện từ, khóa solenoid (bao gồm bố trí chân, cách hoạt động và cách lập trình), thì bạn có thể tìm hiểu thêm bằng cách theo dõi các bài hướng dẫn này:
Các thành phần của hệ thống khóa cửa
Hệ thống khóa cửa gồm hai thành phần chính:
- Khóa cửa: một ESP8266, một rơ-le, một đầu đọc RFID/NFC, một khóa solenoid hoặc một khóa điện từ
- Chìa khóa cửa: thẻ RFID/NFC

Cách hoạt động của khóa cửa RFID/NFC
- Người dùng chạm thẻ RFID/NFC lên đầu đọc RFID/NFC, và đầu đọc sẽ đọc UID từ thẻ.
- ESP8266 sau đó lấy UID từ đầu đọc và so sánh với các UID đã được thiết lập trong mã.
- Nếu UID khớp với một trong các UID được định trước, ESP8266 sẽ vô hiệu hóa khóa solenoid, từ đó mở khóa cửa.
- Những thẻ này đóng vai trò là chìa khóa được ủy quyền.
- Rơ-le sẽ được ESP8266 kích hoạt để khóa cửa sau một khoảng thời gian nhất định.
Sơ đồ đấu dây
- Khóa cửa RFID RC522 kèm khóa solenoid

This image is created using Fritzing. Click to enlarge image
Xem thêm Sơ đồ chân ESP8266 và Cách cấp nguồn cho ESP8266.
- Khóa cửa RFID RC522 dùng khóa điện từ.

This image is created using Fritzing. Click to enlarge image
※ Lưu ý:
Các nhà sản xuất có thể sắp xếp thứ tự các chân khác nhau, vì vậy điều quan trọng là dựa vào nhãn in trên mô-đun. Sơ đồ ghép chân được hiển thị ở phía trên cho thấy cách sắp xếp các chân cho các mô-đun do nhà sản xuất DIYables sản xuất.
Mã ESP8266 - Phím đơn
Hướng dẫn từng bước
Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:
- Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
- Nối các thành phần như trong sơ đồ.
- Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
- Mở Arduino IDE trên máy tính của bạn.
- Chọn bo mạch ESP8266 phù hợp, ví dụ như NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
Để xác định UID của thẻ RFID/NFC:
- Nạp mã lên ESP8266 và mở Serial Monitor.
- Chạm thẻ vào module RFID-RC522 và UID sẽ được hiển thị trên Serial Monitor.
Một khi bạn đã có UID:
- Sửa đổi dòng 18 của mã ở trên để phù hợp với UID. Ví dụ, thay thế byte keytagUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; bằng byte keytagUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
- Tải mã đã chỉnh sửa lên ESP8266.
- Đặt thẻ RFID/NFC lên module RFID-RC522.
- Kiểm tra đầu ra trên Serial Monitor.
- Xác nhận rằng khóa điện từ không bị khóa.
- Chạm một thẻ RFID/NFC khác lên mô-đun RFID-RC522.
- Kiểm tra đầu ra trên Serial Monitor.
※ Lưu ý:
- Để thuận tiện cho việc thử nghiệm, thời gian mở khóa đã được đặt là 2 giây; tuy nhiên, nên được tăng lên cho mục đích sử dụng thực tế hoặc trình diễn.
- Việc cài đặt thư viện MFRC522 là cần thiết. Để biết thêm thông tin, vui lòng tham khảo ESP8266 - RFID.
Mã ESP8266 - Nhiều phím
Hãy hình dung một căn phòng mà chỉ có người quản lý và thư ký được phép tiếp cận.
Trong trường hợp này, cần hai thẻ RFID/NFC: một dành cho người quản lý và thẻ kia dành cho thư ký. UID của hai thẻ phải được chỉ định trong mã nguồn.
Lặp lại các bước như trước, và sau đó chạm từng thẻ lên mô-đun RFID-RC522. Kết quả hiển thị trên Serial Monitor sẽ như sau:
Bạn có thể mở rộng đoạn mã ở trên để bao gồm ba, bốn hoặc nhiều thẻ hơn.
Thêm màn hình LCD vào khóa cửa RFID
Chúng ta có thể thêm một màn hình LCD tùy chọn để hiển thị trạng thái truy cập cho người dùng (ví dụ: ĐƯỢC CHO PHÉP / BỊ TỪ CHỐI). Bạn có thể tìm hiểu thêm về LCD trong ESP8266 - Màn hình LCD
Sơ đồ nối dây - Hệ thống khóa cửa sử dụng RFID, khóa solenoid hoặc khóa điện từ, và màn hình LCD

This image is created using Fritzing. Click to enlarge image
Xin lưu ý rằng trong sơ đồ đấu nối ở trên, nguồn 5V được bổ sung vì chân 5V của ESP8266 không thể cung cấp đủ nguồn cho cả relay và LCD cùng lúc.
Mã nguồn ESP8266 - Hệ thống khóa cửa có mật khẩu bằng thẻ RFID RC522, khóa solenoid hoặc khóa điện từ, và màn hình LCD
※ Lưu ý:
Địa chỉ của màn hình LCD có thể khác nhau tùy thuộc vào nhà sản xuất. Chúng tôi đã sử dụng 0x27 trong mã của mình, như được chỉ định bởi DIYables.
Thêm cảm biến cửa cho ổ khóa RFID
Trong mã đã được đề cập ở trên, ESP8266 sẽ khóa cửa sau một khoảng thời gian kể từ khi mở khóa. Tuy nhiên, trong các ứng dụng thực tế, một cảm biến cửa thường được thêm vào hệ thống. Nếu ESP8266 nhận thấy cửa đã đóng, nó sẽ khóa cửa ngay lập tức thay vì chờ hết thời gian chờ.
Để tránh làm bạn choáng ngợp, chúng tôi đã không đưa cảm biến cửa vào sơ đồ nối dây và mã nguồn. Thay vào đó, phần này để bạn tự do sáng tạo. Bạn có thể tham khảo các hướng dẫn ESP8266 - Cảm biến cửa và ESP8266 - Cảm biến cửa - Rơ-le để có thêm hướng dẫn.
Quản lý và lưu trữ các khóa RFID hợp lệ vào EEPROM
Đoạn mã phía trên có các khóa RFID hợp lệ (UID) được nhúng cứng vào mã ESP8266. Điều này có nghĩa là nếu bạn muốn thêm hoặc xóa khóa, bạn phải chỉnh sửa mã và tải lên lại cho ESP8266, điều này thật bất tiện.
Trong các ứng dụng thực tế, cần quản lý các khóa RFID mà không phải chỉnh sửa và tải lên mã nguồn mỗi lần. Để thực hiện điều này, các khóa RFID có thể được lưu trữ trong EEPROM thay vì được ghi cố định trong mã. Do đó, cần một phương pháp để dễ dàng quản lý các khóa RFID từ EEPROM.
Có hai phương pháp có sẵn để quản lý khóa RFID trong EEPROM:
- Chìa khóa RFID được dùng làm khóa chủ
- Bằng cách sử dụng một khóa RFID làm khóa chủ ADD, các khóa mới có thể được thêm vào hệ thống. Khi ESP8266 phát hiện khóa chủ ADD, nó sẽ chuyển giữa chế độ ADD và chế độ HOẠT ĐỘNG.
- Trong chế độ ADD, ESP8266 sẽ thêm mọi khóa mới nó phát hiện vào EEPROM.
- Một phương pháp tương tự được sử dụng cho khóa chủ DELETE và chế độ DELETE.
- Sử dụng các lệnh ADD/DELETE thông qua Serial/Bluetooth/IR
- Các lệnh được truyền qua Serial/Bluetooth/IR, sử dụng các công cụ như Serial Monitor, ứng dụng Bluetooth hoặc bộ điều khiển IR.
- Các lệnh bao gồm một chỉ thị (ADD/DELETE) và UID của khóa RFID.
- Để tăng cường bảo mật, một mật khẩu cũng nên được đi kèm với lệnh. ESP8266 xác minh mật khẩu để xác định xem lệnh có hợp lệ hay không.
Để có thể sử dụng bất kỳ một trong hai phương pháp ở trên, một lượng lớn mã ESP8266 cần được thêm vào. Đối với những người mới bắt đầu lập trình, điều này có thể là một nhiệm vụ đầy thách thức. Do đó, hướng dẫn này nhằm cung cấp sự hiểu biết cơ bản về hệ thống khóa cửa mà không làm người mới choáng ngợp bởi mã phức tạp. Nếu bạn muốn triển khai hệ thống này cho mục đích thực tế, hãy liên hệ với chúng tôi qua dịch vụ lập trình trả phí của chúng tôi.
Lưu lịch sử truy cập vào thẻ SD
Để theo dõi lịch sử truy cập, có thể cần lưu UID của chìa khóa RFID, trạng thái truy cập (ĐƯỢC CHO PHÉP/KHÔNG ĐƯỢC CHO PHÉP), và ngày giờ. Vì EEPROM không đủ dung lượng để lưu toàn bộ lịch sử, có thể dùng thẻ SD thay thế. Bạn có thể tìm hướng dẫn cho việc này trong tutorial ESP8266 - Ghi dữ liệu có dấu thời gian vào thẻ SD hướng dẫn.
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.