Chọn màn hình cho ESP32, Arduino: OLED 0.96, OLED 1.3, LCD 1602 hay LCD 2004
So sánh màn hình OLED 0.96, OLED 1.3, LCD 1602 và LCD 2004 I2C cho ESP32, Arduino: kích thước thật, cách hiển thị, điện áp, địa chỉ I2C, cách nối dây và nên chọn loại nào.
Dự án ESP32, Arduino nào rồi cũng cần một màn hình nhỏ để hiện nhiệt độ, trạng thái Wi-Fi hay menu cài đặt. Bốn loại phổ biến và rẻ nhất là OLED 0.96 inch, OLED 1.3 inch, LCD 1602 và LCD 2004 hàn sẵn mạch I2C. Bài này so sánh kích thước thật, cách hiển thị, điện áp, địa chỉ I2C, cách nối dây với ESP32 và gợi ý chọn loại nào cho từng kiểu dự án.
1. Bốn loại màn hình thường dùng

- OLED (0.96 inch và 1.3 inch): màn hình đồ họa 128 × 64 điểm, mỗi điểm tự phát sáng trên nền đen. Vẽ được chữ nhiều cỡ, biểu tượng, đồ thị.
- LCD ký tự (1602 và 2004): màn hình chia sẵn ô, mỗi ô hiện một ký tự 5 × 8 điểm, có đèn nền. LCD 1602 có 2 dòng × 16 ký tự, LCD 2004 có 4 dòng × 20 ký tự.
Cả bốn loại đều giao tiếp I2C, chỉ cần 4 dây GND, VCC, SDA, SCL và dùng chung bus I2C với cảm biến khác.
2. Kích thước thật

Con số "0.96 inch", "1.3 inch" là đường chéo vùng hiển thị, nên OLED nhỏ hơn nhiều so với hình dung: vùng sáng của OLED 0.96 inch chỉ khoảng 22 × 11 mm, chữ cỡ nhỏ phải nhìn gần mới đọc được. OLED 1.3 inch có cùng 128 × 64 điểm nhưng điểm to hơn, chữ dễ đọc hơn hẳn. LCD 1602 dài 80 mm, LCD 2004 dài 98 mm, đọc được từ xa một hai mét nhưng chiếm nhiều chỗ trên mặt hộp.
3. So sánh OLED và LCD

OLED có độ tương phản rất cao, góc nhìn rộng, nhìn rõ trong phòng tối. Dòng điện tùy số điểm đang sáng, từ vài mA đến khoảng hai chục mA, nên hợp với thiết bị chạy pin. Điểm cần biết: để một hình đứng yên hàng tháng, các điểm sáng nhiều sẽ mờ đi và để lại vết; nên tắt màn hình hoặc đổi vị trí chữ khi không cần xem. Hai bản 0.96 inch và 1.3 inch dùng hai chip khác nhau (SSD1306 và SH1106), viết chương trình bằng hai thư viện khác nhau. Chi tiết xem bài OLED 0.96 hay 1.3 inch, SSD1306 hay SH1106.
LCD ký tự đọc được cả dưới ánh sáng mạnh, bền, rất dễ lập trình. Đổi lại, LCD chỉ hiện được các ký tự có sẵn trong chip điều khiển loại HD44780: chữ cái không dấu, số, một số ký hiệu; muốn hiện chữ tiếng Việt có dấu hay biểu tượng thì phải tự tạo, tối đa 8 ký tự riêng. Đèn nền tốn vài chục mA. Mạch I2C phía sau dùng chip PCF8574, chạy 5 V, có biến trở chỉnh độ tương phản: chữ mờ hoặc không thấy chữ thì chỉnh biến trở này trước tiên.
Địa chỉ I2C mặc định thường gặp: OLED là 0x3C (một số bản là 0x3D), LCD là 0x27 với chip PCF8574T hoặc 0x3F với chip PCF8574AT. Không chắc thì dùng chương trình quét địa chỉ trong bài giao tiếp I2C trên ESP32: quét địa chỉ.
4. Nối dây với ESP32

- OLED: VCC nối 3V3, GND nối GND, SDA nối GPIO21, SCL nối GPIO22. Module OLED chạy được 3,3–5 V nên nối thẳng.
- LCD I2C: cần nguồn 5 V (chân VIN của ESP32 khi cắm USB) thì chữ mới đủ đậm. Mạch I2C của LCD có điện trở kéo SDA, SCL lên 5 V, trong khi chân ESP32 chỉ chịu 3,3 V, nên nối SDA, SCL qua mạch chuyển mức logic hai chiều 3,3 V – 5 V. Các bước nối và chương trình đầy đủ có trong bài dùng màn hình LCD 2004 I2C với ESP32.
- Arduino Nano, UNO chạy 5 V nên nối thẳng cả OLED lẫn LCD: SDA vào A4, SCL vào A5.
5. Nên chọn màn hình nào
| Dự án | Nên chọn |
|---|---|
| Thiết bị nhỏ, chạy pin, cần biểu tượng, đồ thị, chữ to nhỏ khác nhau | OLED 0.96 inch; bản kèm 4 nút nhấn tiện làm menu |
| Cũng như trên nhưng cần đọc dễ hơn | OLED 1.3 inch |
| Hiện vài số đo, đặt trong tủ điện, nơi sáng, đồ án đơn giản | LCD 1602 I2C |
| Nhiều thông số cùng lúc, menu cài đặt nhiều dòng | LCD 2004 I2C |
| Không muốn nối dây màn hình | Mạch ESP32 hàn sẵn OLED |
LCD có hai màu nền: xanh lá chữ đen dễ đọc dưới ánh sáng ban ngày, xanh dương chữ trắng nhìn đẹp hơn trong nhà.
6. Hướng dẫn lập trình từng loại
- OLED 0.96 inch: với Arduino Nano, với ESP8266.
- OLED 1.3 inch: OLED 1.3 inch SH1106 với ESP32.
- LCD 1602: LCD 1602 I2C với Arduino Uno.
- LCD 2004: LCD 2004 I2C với ESP32.
LCD I2C không hiện chữ, chỉ hiện ô vuông hay sai địa chỉ là lỗi rất hay gặp; cách tìm lỗi từng bước có trong bài sửa lỗi LCD I2C cùng đợt bài này.
Cần tư vấn chọn màn hình cho dự án, liên hệ PYWORLD qua số 0915703319.
Xem thêm