ESP8266 Khóa điện từ điều khiển bằng nút nhấn

Hướng dẫn này cho bạn cách sử dụng ESP8266 và một nút bấm để điều khiển khóa điện từ. Khi nút được nhấn, ESP8266 sẽ mở khóa cửa trong một khoảng thời gian (ví dụ 10 giây). Sau đó, cửa sẽ được khóa lại.

Chúng ta sẽ đi từ dễ sang khó bằng hai bước:

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×Electromagnetic Lock
1×Relay
1×12V Power Adapter
1×DC Power Jack
1×breadboard-mount Button with Cap
1×breadboard-mount Button Kit
1×Panel-mount Push Button
1×mô-đun nút nhấn
1×breadboard
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ề Nút và Khóa Điện Từ

Nếu bạn chưa quen với khóa điện từ và các nút bấm (bao gồm sơ đồ chân, nguyên lý hoạt động và lập trình), các bài hướng dẫn sau đây có thể giúp:

Sơ đồ đấu dây

sơ đồ đấu nối ESP8266 NodeMCU với khóa điện từ và nút nhấn

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Mã ESP8266 - Điều khiển khóa điện từ bằng nút mà không cần lọc nhiễu

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-button-control-electromagnetic-lock */ #define BUTTON_PIN D1 // The ESP8266 pin connected to button's pin #define RELAY_PIN D8 // The ESP8266 pin connected to relay's pin int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode pinMode(RELAY_PIN, OUTPUT); // Configure the ESP8266 pin to the output mode digitalWrite(RELAY_PIN, HIGH); // lock the door button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if (prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

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.
  • Nối các thành phần như được thể hiện 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ụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Kết nối một ESP8266 với máy tính bằng cáp USB.
  • Mở Arduino IDE, chọn bo mạch và cổng phù hợp.
  • Sao chép mã và mở nó trong Arduino IDE.
  • Nhấn nút Upload trong Arduino IDE để biên dịch và tải mã lên ESP8266.
  • Đưa tấm cổ từ lại gần nam châm điện.
  • Nhấn nút một lần.
  • Kiểm tra sự hút giữa tấm cổ từ và nam châm điện trong 10 giây.

Giải thích mã nguồn

Xem lời giải thích theo từng dòng được ghi trong các chú thích của mã nguồn!

※ Lưu ý:

Trong thực tế, mã được đề cập ở trên không phải lúc nào cũng hoạt động đúng. Để đảm bảo nó hoạt động đúng, chúng ta cần ESP8266 - Nút - Lọc nhiễu. Khử nhiễu cho nút bấm có thể gặp khó khăn đối với những người mới bắt đầu. May mắn thay, thư viện ezButton làm cho việc này trở nên đơn giản hơn.

Mã ESP8266 - Nút điều khiển Khóa điện từ với Chống nhiễu

Mục đích của khử nhiễu là gì? ⇒ Xem ESP8266 - Nút - Lọc nhiễu để hiểu tại sao khử nhiễu là cần thiết.

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-button-control-electromagnetic-lock */ #include <ezButton.h> #define BUTTON_PIN D1 // The ESP8266 pin connected to button's pin #define RELAY_PIN D8 // The ESP8266 pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object for pin D8 void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(RELAY_PIN, OUTPUT); // Configure the ESP8266 pin to the output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds digitalWrite(RELAY_PIN, HIGH); // lock the door } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Hướng dẫn từng bước

  • Nối các thành phần theo như 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, chẳng hạn (ví dụ NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng.
  • Cài đặt thư viện ezButton. Tham khảo Cách làm để được hướng dẫn.
  • Mở mã trong Arduino IDE và nhấp nút Upload để nạp nó lên ESP8266.
  • Đưa tấm armature plate lại gần nam châm điện và nhấn nút một lần.
  • Kiểm tra sự hút giữa tấm armature plate và nam châm điện trong 10 giây.

※ Lưu ý:

Trong đoạn mã ở trên, chúng ta đã sử dụng hàm delay. Do đó, không cần xử lý debounce cho nút nhấn. Tuy nhiên, chúng tôi vẫn cung cấp mã có debounce để phòng trường hợp bạn muốn làm thêm nhiều tác vụ mà không sử dụng hàm delay. Hãy xem Cách sử dụng millis() thay thế cho delay() để biết thêm thông tin.

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.