Tìm kiếm mã

Hướng dẫn ESP32 11/55 - Sử dụng LCD1602 LCD2004 với ESP32 - Bộ học IoT ESP32 của SunFounder

Hướng dẫn ESP32 11/55 - Sử dụng LCD1602 LCD2004 với ESP32 - Bộ học IoT ESP32 của SunFounder

Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng LCD1602 và LCD2004 với vi điều khiển ESP32. Các màn hình LCD này cho phép chúng ta hiển thị văn bản và thông tin khác một cách hiệu quả, nâng cao dự án của chúng ta bằng phản hồi trực quan. Chúng ta cũng sẽ đề cập đến cách điều chỉnh độ tương phản để đảm bảo khả năng đọc.

ESP32, một phần của bộ kit học tập IoT SunFounder ESP32, có khả năng Wi-Fi và Bluetooth tích hợp, khiến nó trở thành công cụ mạnh mẽ cho nhiều ứng dụng IoT khác nhau. Bằng cách kết nối LCD với ESP32, chúng ta có thể dễ dàng hiển thị thông điệp hoặc dữ liệu đầu ra từ mã của mình, làm cho dự án của chúng ta tương tác và thân thiện với người dùng hơn (trong video ở phút 00:30).

Phần cứng được giải thích

Các thành phần chính chúng ta sẽ sử dụng bao gồm vi điều khiển ESP32 và mô-đun hiển thị LCD1602 hoặc LCD2004. ESP32 sẽ đóng vai trò là bộ não của dự án, xử lý đầu vào và điều khiển đầu ra, bao gồm cả màn hình LCD.

Mô-đun LCD giao tiếp qua I2C, giúp đơn giản hóa việc nối dây bằng cách chỉ sử dụng hai chân dữ liệu (SDA và SCL) để giao tiếp, cùng với kết nối nguồn và đất. Thiết lập này giảm đáng kể độ phức tạp của việc kết nối nhiều chân, cho phép mạch gọn gàng và dễ quản lý hơn.

Chi tiết bảng dữ liệu

Nhà sản xuất SunFounder
Số bộ phận LCD1602
Điện áp logic/IO 5 V
Điện áp cung cấp 5 V
Kích thước hiển thị 16 x 2 ký tự
Đèn nền
Giao diện I2C
Kích thước 80 x 36 mm
Ghi chú / biến thể Thường được sử dụng với địa chỉ I2C 0x27

 

  • Đảm bảo cung cấp điện áp đúng (5 V) để tránh hư hỏng.
  • Sử dụng dây ngắn để giảm nhiễu trên đường I2C.
  • Điều chỉnh chiết áp để có độ tương phản tối ưu.
  • Kiểm tra địa chỉ I2C nếu màn hình không khởi tạo (địa chỉ phổ biến: 0x27, 0x3F).
  • Xóa màn hình trước khi cập nhật thông điệp để tránh chồng chéo.

Hướng dẫn nối dây

Sơ đồ nối dây ESP32-11_LCD
ESP32-11_LCD-wiring

Để nối LCD1602 với ESP32, trước tiên kết nối chân đất của LCD với chân đất trên ESP32. Sau đó, kết nối chân VCC của LCD với đầu ra 5V của ESP32. Đối với giao tiếp I2C, kết nối chân SDA của LCD với chân 21 trên ESP32 và kết nối chân SCL của LCD với chân 22 trên ESP32. Đảm bảo các kết nối chắc chắn để tránh sự cố giao tiếp.

Điều quan trọng cần lưu ý là trong khi ESP32 hoạt động ở mức logic 3.3V, LCD1602 yêu cầu 5V để hoạt động đúng. Do đó, hãy đảm bảo bạn sử dụng nguồn điện áp chính xác để tránh làm hỏng LCD. Nếu bạn sử dụng kích thước LCD khác, hãy điều chỉnh nối dây cho phù hợp dựa trên địa chỉ I2C và thông số kỹ thuật.

Ví dụ mã & hướng dẫn chi tiết

Trong mã, chúng ta bắt đầu bằng việc bao gồm các thư viện cần thiết cho giao tiếp I2C và LCD. Chúng ta tạo một phiên bản của LCD bằng địa chỉ I2C 0x27 và chỉ định rằng nó có 16 cột và 2 hàng.

#include  
#include 

LiquidCrystal_I2C lcd(0x27,16,2);  // đặt địa chỉ LCD thành 0x27 cho màn hình 16 ký tự và 2 dòng

Thiết lập này cho phép chúng ta điều khiển LCD dễ dàng. Trong hàm setup(), chúng ta khởi tạo LCD và bật đèn nền, sau đó in một thông điệp chào mừng.

void setup()
{
  lcd.init(); // khởi tạo LCD 
  lcd.backlight(); // Bật đèn nền LCD.
  lcd.print("Hello, world!");   // In một thông điệp lên LCD.
  delay(3000);
}

Trong hàm loop(), chúng ta liên tục cập nhật màn hình bằng cách xóa nó, đặt vị trí con trỏ và in giá trị đếm hiện tại. Điều này minh họa cách LCD có thể hiển thị thông tin thay đổi một cách động.

void loop()
{
  lcd.clear(); 
  lcd.setCursor(0, 0); // Đặt vị trí con trỏ đến hàng đầu tiên và cột đầu tiên (0, 0).
  lcd.print("COUNT: ");
  lcd.print(count); // In giá trị hiện tại của biến đếm.
  delay(1000);
  count++; // Tăng bộ đếm lên 1. 
}

Mã đầy đủ sẽ được tải bên dưới bài viết, nơi bạn có thể xem triển khai hoàn chỉnh và bất kỳ chức năng bổ sung nào được thêm vào cho dự án của bạn.

Trình diễn / Điều gì sẽ xảy ra

Khi mọi thứ được kết nối và mã được tải lên, LCD sẽ hiển thị "Hello, world!" trong 3 giây trước khi bắt đầu một bộ đếm tăng mỗi giây. Bạn có thể điều chỉnh độ tương phản bằng chiết áp để đảm bảo văn bản dễ đọc (trong video ở phút 08:45).

Nếu bạn gặp bất kỳ sự cố nào, hãy kiểm tra các kết nối dây và đảm bảo địa chỉ I2C chính xác đang được sử dụng. Một lỗi phổ biến là không khớp địa chỉ I2C của LCD với những gì được đặt trong mã, điều này có thể ngăn màn hình hoạt động đúng.

Dấu mốc thời gian video

  • 00:00 Bắt đầu
  • 1:47 Giới thiệu về LCD
  • 3:26 Trang tài liệu
  • 5:06 Cách nối dây LCD với ESP32
  • 9:07 Chọn bo mạch ESP32 và cổng COMP trên Arduino
  • 8:51 Cài đặt thư viện LCD
  • 10:06 Tìm địa chỉ I2C cho LCD
  • 14:00 Giải thích mã Arduino
  • 17:50 Trình diễn
  • 20:54 Sử dụng LCD2004 với ESP32
  • 22:58 LCD1602 xanh lá tốt hơn xanh dương

Hình ảnh

ESP32_11-5-l2C.MOV_snapshot_00.02.763
ESP32_11-5-l2C.MOV_snapshot_00.02.763
SunFounder-ESP32-Lesson-11-LCD1602.mp4_snapshot_20.23.926
SunFounder-ESP32-Lesson-11-LCD1602.mp4_snapshot_20.23.926
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring-schematic
ESP32-11_LCD-wiring-schematic
810-ESP32 Tutorial 11/55- Arduino code for LCD using ESP32
Ngôn ngữ: C++
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

//SDA->21,SCL->22 
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

int count = 0;

void setup()
{
  lcd.init();// initialize the lcd 
  lcd.backlight(); // Turns on the LCD backlight.
  lcd.print("Hello, world!");   // Print a message to the LCD.
  delay(3000);
}

void loop()
{
  lcd.clear(); 
  lcd.setCursor(0, 0); // Sets the cursor position to the first row and first column (0, 0).
  lcd.print("COUNT: ");
  lcd.print(count); // Prints the current value of the count variable.
  delay(1000);
  count++; // Increments the counter by 1. 
}

Tài nguyên & tài liệu tham khảo

Tập tin📁

Không có tệp nào khả dụng.