ESP8266 Màn hình OLED
Hướng dẫn này sẽ chỉ cho bạn cách sử dụng ESP8266 với màn hình OLED. Cụ thể, chúng ta sẽ học:
- Cách kết nối màn hình OLED với ESP8266.
- Cách lập trình ESP8266 để hiển thị văn bản và số trên OLED.
- Cách lập trình ESP8266 để căn giữa văn bản và số theo cả chiều dọc và chiều ngang trên OLED.
- Cách lập trình ESP8266 để vẽ trên OLED.
- Cách lập trình ESP8266 để hiển thị một hình ảnh trên OLED.
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 | × | SSD1306 I2C OLED Display 128x64 | ||
| 1 | × | SSD1306 I2C OLED Display 128x32 | ||
| 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ề màn hình OLED
Có nhiều loại màn hình OLED khác nhau có sẵn. Màn hình OLED SSD1306 I2C phổ biến nhất khi sử dụng với ESP8266 là loại 128x64 và 128x32.

Sơ đồ chân của màn hình OLED I2C
- Chân GND: nên được kết nối với đất của ESP8266.
- Chân VCC: là nguồn cấp điện cho màn hình hiển thị và nên được kết nối với 3.3V hoặc 5V.
- Chân SCL: là tín hiệu xung đồng hồ cho giao diện I2C.
- Chân SDA: là tín hiệu dữ liệu serial cho giao diện I2C.

※ Lưu ý:
- Các chân của một module OLED có thể khác nhau giữa các nhà sản xuất và các loại module. Việc luôn tham khảo nhãn in trên module OLED là điều rất quan trọng. Hãy chú ý!
- Bài hướng dẫn này sử dụng màn hình OLED có trình điều khiển SSD1306 I2C. Chúng tôi đã thử nghiệm nó với màn hình OLED từ DIYables và nó hoạt động hoàn hảo.
Sơ đồ đấu dây
- Sơ đồ nối dây giữa ESP8266 và OLED 128x64

This image is created using Fritzing. Click to enlarge image
Xem thêm Sơ đồ chân ESP8266 và Cách cấp nguồn cho ESP8266.
- Sơ đồ đấu nối giữa ESP8266 và OLED 128x32

This image is created using Fritzing. Click to enlarge image
Bảng nối dây giữa ESP8266 và màn hình OLED:
| OLED Module | ESP8266 |
|---|---|
| Vin | 3.3V |
| GND | GND |
| SDA | D2 (GPIO4) |
| SCL | D1 (GPIO5) |
Cách Sử Dụng Màn Hình OLED với ESP8266
Cài đặt thư viện OLED SSD1306
- Nhấp vào biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
- Tìm kiếm “SSD1306” và xác định thư viện SSD1306 từ Adafruit.
- Sau đó, nhấn nút Cài đặt để hoàn tất việc cài đặt.

- Bạn sẽ được nhắc cài đặt một số phụ thuộc thư viện khác.
- Để cài đặt tất cả chúng, hãy nhấp vào nút Cài đặt Tất cả.

Làm thế nào để lập trình cho OLED
- Bao gồm thư viện
- Xác định kích thước của màn hình OLED là 128 × 64.
- Xác định kích thước của một màn hình OLED có độ phân giải 128×32.
- Tạo một đối tượng có kiểu SSD1306 OLED.
- Trong hàm setup(), khởi tạo màn hình OLED.
- Sau đó, bạn có thể hiển thị văn bản, hình ảnh và vẽ các đường thẳng.
Từ nay về sau, tất cả các mã dành cho OLED 128x64, nhưng nó có thể được điều chỉnh cho OLED 128x32 bằng cách thay đổi kích thước màn hình và điều chỉnh các tọa độ nếu cần thiết.
Mã ESP8266 - Hiển thị văn bản trên OLED
Dưới đây là một số hàm có thể được sử dụng để hiển thị văn bản trên OLED:
- oled.clearDisplay(): tất cả các điểm ảnh đều tắt.
- oled.drawPixel(x,y, color): vẽ một điểm ảnh tại tọa độ x, y.
- oled.setTextSize(n): thiết lập kích thước chữ, hỗ trợ kích thước từ 1 đến 8.
- oled.setCursor(x,y): thiết lập tọa độ để bắt đầu viết chữ.
- oled.setTextColor(WHITE): thiết lập màu chữ.
- oled.setTextColor(BLACK, WHITE): thiết lập màu chữ và màu nền.
- oled.println(“message”): in chuỗi ký tự.
- oled.println(number): in một số.
- oled.println(number, HEX): in số ở định dạng HEX.
- oled.display(): gọi phương thức này để các thay đổi có hiệu lực.
- oled.startscrollright(start, stop): cuộn chữ từ trái sang phải.
- oled.startscrollleft(start, stop): cuộn chữ từ phải sang trái.
- oled.startscrolldiagright(start, stop): cuộn chữ từ góc dưới trái đến góc trên phải.
- oled.startscrolldiagleft(start, stop): cuộn chữ từ góc dưới phải đến góc trên trái.
- oled.stopscroll(): dừng cuộn.
Cách căn giữa theo chiều dọc và chiều ngang văn bản/số trên OLED
Để tìm hiểu cách căn giữa văn bản và số trên OLED, vui lòng tham khảo Cách căn giữa theo chiều dọc và chiều ngang trên OLED. Nếu bạn muốn biết cách căn giữa văn bản và số trên OLED, hãy xem Cách căn giữa theo chiều dọc và chiều ngang trên OLED.
Mã ESP8266 - Vẽ trên OLED
Mã ESP8266 – Hiển thị hình ảnh
Để hiển thị một hình ảnh trên OLED, trước tiên chúng ta phải chuyển đổi nó từ định dạng gốc sang một mảng bitmap. Điều này có thể được thực hiện bằng cách sử dụng công cụ trực tuyến được cung cấp. Hình ảnh dưới đây cho thấy cách chuyển một hình ảnh thành một mảng bitmap. Ví dụ, tôi đã chuyển đổi biểu tượng Arduino thành một mảng bitmap.

Sau khi quá trình chuyển đổi hoàn tất, hãy lấy mã mảng và thay thế mảng ArduinoIcon trong đoạn mã dưới đây bằng nó.
※ Lưu ý:
- Kích thước hình ảnh không được vượt quá kích thước màn hình.
- Nếu bạn muốn sử dụng mã cho OLED 128x32, bạn phải thay đổi kích thước hình ảnh và điều chỉnh chiều rộng và chiều cao trong hàm oled.drawBitmap();.
Khắc phục sự cố OLED
Xác nhận OLED đang hoạt động bình thường bằng cách làm theo các bước sau:
- Đảm bảo rằng các dây điện của bạn đã được kết nối đúng.
- Xác nhận rằng OLED I2C của bạn đang sử dụng driver SSD1306.
- Sử dụng mã I2C Address Scanner trên ESP8266 để kiểm tra địa chỉ I2C của OLED.
Đầu ra được hiển thị trên Serial Monitor là: . Serial Monitor cho thấy kết quả sau đây: