ESP8266 Bàn phím Rơ-le

Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 và bảng phím để điều khiển một rơ-le. Khi người dùng nhập đúng mật khẩu trên bảng phím, ESP8266 sẽ kích hoạt rơ-le.

Hướng dẫn bổ sung cũng cung cấp mã ESP8266 để kích hoạt một rơ-le trong một khoảng thời gian nhất định và sau đó vô hiệu hóa nó mà không sử dụng hàm delay(). Mã ESP8266 cũng chấp nhận nhiều mật khẩu.

Bằng cách gắn một rơ-le vào một ESP8266 - Khóa điện từ, một ESP8266 - Khóa solenoid, một ESP8266 - Bộ truyền động, một ESP8266 - Phần tử gia nhiệt, một ESP8266 - Bơm, hoặc một ESP8266 - Quạt ... Sau đó, chúng ta có thể sử dụng một bàn phím để điều khiển chúng.

rơ-le bàn phím ESP8266 NodeMCU

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
1×Relay
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ề bàn phím và rơ-le

Nếu bạn chưa quen với keypad và relay (bao gồm sơ đồ chân, cách vận hành, lập trình, v.v.), các bài hướng dẫn sau đây có thể giúp ích:

Sơ đồ đấu dây

sơ đồ nối dây rơ-le cho bàn phím ESP8266 NodeMCU

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 - bật rơ-le khi mật khẩu đúng

Nếu mật khẩu đúng, đoạn mã dưới đây sẽ kích hoạt một rơ-le.

/* * 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-keypad-relay */ #include <Keypad.h> #define RELAY_PIN D0 // The ESP8266 pin connected to the IN pin of relay #define ROW_NUM 4 // 4 rows #define COLUMN_NUM 3 // 3 columns char key_layout[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {D1, D2, D3, D4}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D5, D6, D7}; // The ESP8266 pins connect to the column pins Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "ABC1234"; // change your password here const String password_2 = "5642B"; // change your password here const String password_3 = "9765"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The correct password! Turning ON relay"); digitalWrite(RELAY_PIN, HIGH); } else { Serial.println("The incorrect password! try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

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 linh kiện theo 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, chẳng hạn (ví dụ: 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à máy tính.
  • Mở Arduino IDE, chọn bo mạch và cổng phù hợp.
  • Nhấp vào biểu tượng Thư viện ở 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 Cài đặt để thêm thư viện keypad.
thư viện bàn phím ESP8266 NodeMCU
  • Tìm kiếm “ezOutput” và định vị thư viện ezOutput từ ArduinoGetStarted.
  • Nhấn nút Cài đặt để cài đặt thư viện ezOutput.
thư viện đầu ra ESP8266 NodeMCU
  • Sao chép mã và mở nó trong Arduino IDE.
  • Nhấp vào nút Tải lên trong Arduino IDE để gửi mã tới ESP8266.
tải mã lên Arduino ide
  • Nhập 1234 và sau đó nhấn #.
  • Sau đó, nhập 9765 và nhấn #.
  • Kiểm tra Serial Monitor để xem đầu ra và trạng thái của relay.
COM6
Send
The incorrect password! try again The correct password! Turning ON relay
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Giải thích mã nguồn

Các mật khẩu được cấp quyền đã được định nghĩa sẵn trong mã ESP8266. Một chuỗi ký tự được dùng để lưu mật khẩu do người dùng nhập, được gọi là input string. Trên bàn phím, hai phím (*#) được sử 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. Khi một phím trên bàn phím được nhấn:

  • Nếu phím được ấn không phải là một trong hai phím đặc biệt, nó được thêm vào chuỗi nhập.
  • Nếu phím được ấn là *, chuỗi nhập được xóa. Điều này có thể được sử dụng để bắt đầu hoặc nhập lại mật khẩu.
  • Nếu phím được ấn là #:
    • ESP8266 kiểm tra xem chuỗi nhập có khớp với một trong các mật khẩu được định sẵn hay không; rơ le được bật.
    • Bất kể mật khẩu có đúng hay không, chuỗi nhập được xóa để nhập tiếp.

Mã ESP8266 - bật một rơ-le trong một khoảng thời gian nếu mật khẩu đúng

Nếu mật khẩu đúng, rơ-le được bật trong 5 giây. Sau đó, rơ-le được tắ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-keypad-relay */ #include <Keypad.h> #include <ezOutput.h> #define RELAY_PIN D0 // The ESP8266 pin connected to the IN pin of relay #define ROW_NUM 4 // 4 rows #define COLUMN_NUM 3 // 3 columns char key_layout[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {D1, D2, D3, D4}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D5, D6, D7}; // The ESP8266 pins connect to the column pins Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); ezOutput relay(RELAY_PIN); const String password_1 = "ABC1234"; // change your password here const String password_2 = "5642B"; // change your password here const String password_3 = "9765"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed relay.low(); } void loop() { relay.loop(); // MUST call the loop() function first char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The correct password! Turning ON relay"); relay.low(); // set low before making a high pulse relay.pulse(RELAY_ON_TIME); // turn on relay in RELAY_ON_TIME duration and then turn off } else { Serial.println("The incorrect password! try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

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.