ESP8266 Khóa cửa bằng bàn phím
Hướng dẫn này chỉ cho bạn cách xây dựng một hệ thống khóa cửa bằng mật khẩu sử dụng ESP8266, bàn phím và khóa solenoid hoặc khóa nam châm điện. Dưới đây là cách hệ thống khóa cửa sẽ hoạt động:
- Người dùng nhập mật khẩu bằng bàn phím số.
- ESP8266 xác thực mật khẩu.
- Nếu mật khẩu nhập vào hợp lệ, ESP8266 sẽ nhả khóa solenoid để mở cửa. Cửa sẽ ở trạng thái mở khóa trong một khoảng thời gian xác định (ví dụ 20 giây) trước khi tự động khóa lại.
- Mã ESP8266 hỗ trợ nhiều mật khẩu.

Để làm cho nó dễ dàng, bài hướng dẫn được chia thành nhiều bước, từ dễ đến khó:
- Phần 1: Hệ thống khóa cửa bằng bàn phím đơn giản với Arduino Nano, bàn phím, khóa solenoid hoặc khóa điện từ.
- Phần 2: (Tùy chọn) Thêm khả năng hỗ trợ nhiều mật khẩu.
- Phần 4: (Tùy chọn) Thêm âm thanh beep khi bàn phím được nhấn.
- Phần 5: (Tùy chọn) Thêm cảm biến cửa cho khóa cửa có bàn phím.
- Phần 6: (Tùy chọn) Quản lý và lưu trữ các mật khẩu hợp lệ vào EEPROM nội bộ của Arduino Nano.
- Phần 7: (Tùy chọn) Lưu lịch sử truy cập vào thẻ SD.
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 | × | Bàn phím ma trận 3x4 and 4x4 Kit | ||
| 1 | × | Relay | ||
| 1 | × | Solenoid Lock | ||
| 1 | × | 12V Power Adapter | ||
| 1 | × | DC Power Jack | ||
| 1 | × | dây jumper | ||
| 1 | × | (Tùy chọn) Electromagnetic Lock | ||
| 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ề Bàn phím số, khóa solenoid, và khóa điện từ
Cả khóa solenoid và khóa điện từ đều được sử dụng để khóa/mở cửa. Chúng khác nhau chủ yếu ở thiết kế cơ khí. Việc nối dây của chúng với ESP8266 tương tự. Mã lập trình cho ESP8266 để điều khiển chúng là như nhau.
Nếu bạn chưa quen với bàn phím số, khóa solenoid, khóa điện từ (bản đồ các chân, cách hoạt động, cách lập trình ...), các bài hướng dẫn sau đây có thể giúp bạn tìm hiểu:
Sơ đồ đấu dây
- Sơ đồ nối dây với ESP8266, bàn phím và 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.
- Sơ đồ mạch với ESP8266, bàn phím ma trận và khóa điện từ

This image is created using Fritzing. Click to enlarge image
Mã ESP8266 - Khóa cửa bằng bàn phím
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 ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
- Kết nối các thành phần như được mô tả trong sơ đồ.
- Kết nối 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 đúng, chẳng hạn như NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
- Kết nối một cáp USB giữa ESP8266 và PC.
- Mở Arduino IDE, chọn bo mạch và cổng đúng.
- Nhấp vào biểu tượng Libraries ở thanh bên trái của Arduino IDE.
- Tìm kiếm “keypad” và xác định thư viện keypad được tạo bởi Mark Stanley và Alexander Brevig.
- Sau đó, nhấn nút Install để hoàn tất cài đặt thư viện keypad.

- Sao chép mã ở trên và mở nó bằng Arduino IDE.
- Nhấp vào nút Upload trên Arduino IDE để gửi mã đến ESP8266.
- Mở Serial Monitor.
- Nhấn các phím 12345 kèm theo ký tự #.
- Tiếp theo nhấn các phím 1234ABC kèm theo ký tự #.
- Kiểm tra trạng thái của lưỡi khóa trong 20 giây.
- Xem kết quả trên Serial Monitor.
Giải thích mã nguồn
Những mật khẩu hợp lệ được định nghĩa trước trong mã ESP8266. Một chuỗi được dùng để lưu mật khẩu đầu vào từ người dùng, được gọi là input string. Trên keypad, hai phím (* và #) được dùng cho các mục đích đặc biệt: xóa mật khẩu và kết thúc mật khẩu. Hệ thống hoạt động như sau:
- Ngoài hai phím đặc biệt, nếu một phím khác được nhấn, nó được thêm vào chuỗi nhập
- Nếu * được nhấn, chuỗi nhập được xóa. Bạn có thể dùng nó để bắt đầu nhập hoặc nhập lại mật khẩu
- Nếu # được nhấn:
- ESP8266 so sánh chuỗi nhập với các mật khẩu được định sẵn. Nếu nó khớp với một trong các mật khẩu được định sẵn, ESP8266 điều khiển rơ-le để mở cửa.
- Bất kể mật khẩu có đúng hay không, ESP8266 sẽ xóa chuỗi nhập cho lần nhập tiếp theo.
Mã ESP8266 - Nhiều Phím
Thêm tiếng bíp khi bàn phím số được nhấn.
Chúng ta có thể làm cho khóa cửa có phản hồi nhanh bằng cách thêm một buzzer Piezo để phát ra một tiếng bíp ngắn mỗi khi một phím trên keypad được nhấn.
Việc thêm nó khá đơn giản. Vì vậy, phần này để bạn tự do sáng tạo. Bạn có thể tham khảo tutorial ESP8266 - Bàn phím - Bíp để được hướng dẫn thêm.
Thêm cảm biến cửa cho khóa cửa có bàn phím
Trong đoạn mã đã được đề cập trước đó, 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 phát hiện cửa đang đóng, nó sẽ khóa cửa ngay lập tức thay vì đợi hết thời gian chờ.
Để tránh làm bạn quá tải, 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 đó, chúng tôi để phần này cho sự sáng tạo của bạn. 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 mật khẩu hợp lệ vào EEPROM.
Đoạn mã ở trên có các mật khẩu 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 mật khẩu, bạn phải chỉnh sửa mã và tải lại lên ESP8266 lần nữa, điều này thật bất tiện.
Trong các ứng dụng thực tế, việc quản lý mật khẩu mà không phải chỉnh sửa và tải lại mã mỗi lần là cần thiết. Để đạt được điều này, mật khẩu có thể được lưu trữ trong EEPROM thay vì được nhúng cứng. Do đó, cần một phương pháp để dễ dàng quản lý mật khẩu từ EEPROM.
Có hai phương pháp có sẵn để quản lý mật khẩu trong EEPROM:
- Sử dụng mật khẩu chủ
- Việc sử dụng một mật khẩu làm mật khẩu chủ ADD cho phép thêm mật khẩu mới vào hệ thống. Khi ESP8266 phát hiện mật khẩu chủ ADD, nó sẽ chuyển giữa chế độ ADD và chế độ HOẠT ĐỘNG.
- Trong chế độ ADD, ESP8266 sẽ ghi vào EEPROM mọi mật khẩu mới mà nó phát hiện.
- Một cách tiếp cận tương tự được áp dụng cho mật khẩu 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à mật khẩu.
Để có thể sử dụng bất kỳ hai phương pháp ở trên, một lượng mã ESP8266 đáng kể 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ụ khá khó khăn. Do đó, hướng dẫn này nhằm cung cấp hiểu biết cơ bản về hệ thống khóa cửa mà không làm người mới quá tải vớ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 thông qua dị 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 trạng thái truy cập (GRANTED/DENIED), và ngày và giờ. Vì EEPROM có dung lượng không đủ để lưu toàn bộ lịch sử, có thể sử dụng thẻ SD thay thế. Bạn có thể tìm hướng dẫn về điều này trong tutorial ESP8266 - Ghi dữ liệu có dấu thời gian vào thẻ SD.
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.