ESP8266 Bàn phím

Bài hướng dẫn này chỉ dẫn cho bạn cách sử dụng ESP8266 với bàn phím 3×4 và 4×4. Cụ thể, chúng ta sẽ tìm hiểu:

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×(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ề Keypad

Một bàn phím ma trận là tập hợp các phím được sắp xếp theo hàng và cột, được gọi là ma trận. Mỗi nút được gọi là một phím. Bàn phím ma trận có nhiều kiểu dáng khác nhau. Hai trong số các kiểu phổ biến nhất cho các dự án DIY là bàn phím 3x4 (với 12 phím) và bàn phím 4x4 (với 16 phím).

Sơ đồ các chân của bàn phím

Các pin được phân thành hai nhóm: hàng và cột.

  • Bàn phím ma trận 3x4 có 7 chân: Bốn chân cho các hàng (gọi là R1, R2, R3 và R4), và bốn chân cho các cột (gọi là C1, C2 và C3).
  • Bàn phím ma trận 4x4 có 8 chân: Bốn chân cho các hàng (gọi là R1, R2, R3 và R4), và bốn chân cho các cột (gọi là C1, C2, C3 và C4).
sơ đồ chân của bàn phím ma trận

Sơ đồ đấu dây

  • ESP8266 - Sơ đồ đấu dây bàn phím ma trận 3x4
sơ đồ kết nối 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.

  • ESP8266 - Sơ đồ nối dây bàn phím ma trận 4×4
sơ đồ đấu dây bàn phím ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

※ Lưu ý:

Bạn có thể thay đổi các chân ESP8266 được kết nối với các chân bàn phím. Tuy nhiên, bạn nên tránh sử dụng chân D8 cho bàn phím. Tuy nhiên, nếu các chân ESP8266 không đủ, bạn có thể sử dụng chân D8 cho bàn phím nhưng PHẢI làm theo các hướng dẫn dưới đây:

  • Không được sử dụng chân D8 của ESP8266 cho các chân hàng.
  • Khi sử dụng chân D8 của ESP8266 cho một chân cột, bạn PHẢI chỉnh sửa thư viện Keypad như sau:
    • Tìm tệp Arduino\libraries\Keypad\src\Keypad.cpp, đến dòng 98, nơi nó trông như sau: pin_mode(columnPins[c], INPUT);
    • Hãy bỏ chú thích cho dòng này. Sau khi sửa đổi, mã tại dòng 98 sẽ trông như sau: //pin_mode(columnPins[c], INPUT);

Mã nguồn ESP8266

Mã ESP8266 cho bàn phím ma trận 3x4

#include <Keypad.h> const int ROW_NUM = 4; // four rows const int COLUMN_NUM = 3; // three 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 ); void setup(){ Serial.begin(9600); } void loop(){ char key = keypad.getKey(); if (key){ Serial.println(key); } }

Mã ESP8266 cho bàn phím 4x4

#include <Keypad.h> const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 4; //four columns char key_layout[ROW_NUM][COLUMN_NUM] = { {'1','2','3', 'A'}, {'4','5','6', 'B'}, {'7','8','9', 'C'}, {'*','0','#', 'D'} }; byte pin_rows[ROW_NUM] = {D0, D1, D2, D3}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D4, 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 ); void setup(){ Serial.begin(9600); } void loop(){ char key = keypad.getKey(); if (key){ Serial.println(key); } }

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:

  • Nếu đây là lần đầu bạn sử dụng ESP8266, hãy xem hướng dẫn ESP8266 - Cài đặt phần mềm.
  • Kết 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ó.
  • Nhấp vào biểu tượng Libraries ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “keypad” và tìm thấy thư viện keypad được tạo bởi Mark Stanley và Alexander Brevig.
  • Sau đó, nhấp nút Install để hoàn tất cài đặt thư viện keypad.
thư viện bàn phím ESP8266 NodeMCU
  • Sao chép mã ở trên và mở nó trong IDE Arduino.
  • Khi đã mở, nhấp vào nút Tải lên để tải mã lên ESP8266.
  • Mở Serial Monitor.
  • Nhấn một vài phím trên bàn phím ma trận.
  • Kiểm tra Serial Monitor để xem kết quả.
COM6
Send
3 6 9 4 * #
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Bàn phím số và mật khẩu

Một công dụng phổ biến của bàn phím số là để nhập mật khẩu. Chúng ta thường chỉ định hai phím cụ thể cho mục đích này:

  • Một phím để bắt đầu hoặc khởi động lại quá trình nhập mật khẩu. Ví dụ, phím "*".
  • Một phím để kết thúc quá trình nhập mật khẩu. Ví dụ, phím "#".

Mật khẩu sẽ gồm một chuỗi chứa tất cả các phím khác, ngoại trừ hai phím đặc biệt cụ thể.

Khi một phím được nhấn:

  • Nếu phím không phải '*' hoặc '#', thêm phím đó vào chuỗi mật khẩu đã nhập của người dùng.
  • Nếu phím là '#', so sánh chuỗi đã nhập của người dùng với các mật khẩu được định sẵn để quyết định xem mật khẩu đã nhập có đúng hay không, và sau đó xóa chuỗi mật khẩu đã nhập của người dùng.
  • Nếu phím là '*', xóa chuỗi mật khẩu đã nhập của người dùng.

Bàn phím số - Mã mật khẩ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-keypad */ #include <Keypad.h> #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 = "1234"; // change your password here String input_password; void setup(){ Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed } void loop(){ char key = keypad.getKey(); if (key){ Serial.println(key); if(key == '*') { input_password = ""; // clear input password } else if(key == '#') { if(password == input_password) { Serial.println("password is correct"); // DO YOUR WORK HERE } else { Serial.println("password is incorrect, try again"); } input_password = ""; // clear input password } else { input_password += key; // append new character to input password string } } }

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

  • Chạy mã ở trên.
  • Mở Trình theo dõi Serial.
  • Nhấn các phím "123456" và sau đó nhấn "#".
  • Tiếp theo, nhấn các phím "1234" và sau đó nhấn "#".
  • Xem kết quả trên Trình theo dõi Serial.
COM6
Send
password is incorrect, try again password is correct
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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.