ESP8266 Bàn phím LCD

Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 để hiển thị dữ liệu nhập từ keypad trên màn hình LCD.

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×LCD I2C
1×Bàn phím ma trận 3x4
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ề bàn phím số và màn hình LCD

Nếu bạn chưa quen với bàn phím và LCD (cách bố trí 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 hiểu chúng:

Sơ đồ đấu dây

sơ đồ nối dây ESP8266 NodeMCU cho bàn phím ma trận lcd

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

/* * 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-lcd */ #include <Keypad.h> #include <LiquidCrystal_I2C.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] = {D0, D3, D4, D5}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D6, D7, D8}; // The ESP8266 pins connect to the column pins Keypad keypad = Keypad(makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows int column_cursor = 0; void setup(){ lcd.init(); // Initialize the LCD I2C display lcd.backlight(); } void loop(){ char key = keypad.getKey(); if (key) { lcd.setCursor(column_cursor, 0); // move cursor to (column_cursor, 0) lcd.print(key); // print key at (column_cursor, 0) column_cursor++; // move cursor to next position if(column_cursor == 16) { // if reaching limit, clear LCD lcd.clear(); column_cursor = 0; } } }

※ Lưu ý:

Địa chỉ của LCD có thể khác nhau tùy thuộc vào nhà sản xuất. Trong mã của chúng tôi, chúng tôi đã sử dụng 0x27 được nhà sản xuất DIYables chỉ định.

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:

  • Hãy tham khảo bài 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ư 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 cáp USB giữa ESP8266 và PC.
  • Mở Arduino IDE, chọn bo mạch và cổng phù hợp.
  • 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ư viện keypad được tạo bởi Mark Stanley và Alexander Brevig.
  • Sau đó, nhấn nút Install để hoàn tất việc cài đặt thư viện keypad.
thư viện bàn phím cho ESP8266 NodeMCU
  • Tìm kiếm “LiquidCrystal I2C” và định vị thư viện LiquidCrystal_I2C của Frank de Brabander.
  • Sau đó, nhấp vào nút Cài đặt để cài đặt nó.
thư viện liquidcrystal i2c cho ESP8266 NodeMCU

Vì số chân của ESP8266 không đủ, chúng ta cần dùng chân D8 cho bàn phím. Như đã nêu trong ESP8266 - Bàn phím, khi sử dụng chân D8 của ESP8266 làm chân cột cho bàn phím, chúng ta PHẢI sửa đổi thư viện Keypad như sau:

  • Tìm tập tin Arduino\libraries\Keypad\src\Keypad.cpp, đến dòng 98, nơi nó trông như thế này: pin_mode(columnPins[c], INPUT);
  • Bình luận dòng này. Sau khi sửa, mã ở dòng 98 nên trông như thế này: //pin_mode(columnPins[c], INPUT);
  • Sao chép mã và mở nó bằng Arduino IDE.
  • Nhấp nút Upload trong Arduino IDE để biên dịch và tải mã lên ESP8266.
tải mã lên Arduino ide
  • Nhấn một số phím nhất định trên bàn phím và
  • Quan sát kết quả hiển thị trên LCD.

Nếu màn hình LCD không hiển thị gì, vui lòng tham khảo Khắc phục sự cố trên LCD I2C để được hỗ trợ.

Giải thích mã nguồn

Hãy xem giải thích theo từng dòng được chứa trong các bình luận của mã nguồ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.