ESP8266 – OLED
Màn hình OLED
OLED (Organic Light Emitting Diode) là loại màn hình hiển thị bao gồm một lớp vật liệu hữu cơ với chủ yếu là cacbon nằm giữa hai điện cực anot và catot sẽ tự động phát sáng mỗi khi có dòng điện chạy qua. OLED sử dụng đi-ốt phát quang hữu cơ, chính vì thế nó không cần tới đèn nền chiếu sáng, do đó có lợi thế về kích thước cũng như tiết kiệm điện hơn so với các loại LCD. Và độ sáng tương đối tốt ở môi trường sáng tự nhiên.
Màn hình OLED SSD1306
Là màn hình loại nhỏ, kích thước tầm 0.96 inch cho tới 1.25 inch, được dùng khá rộng rãi trong các sản phẩm điện tử. Tấm nền được điều khiển bằng chip driver SSD1306. Chip này giao tiếp với các bộ điều khiển/MCU khác bằng giao tiếp LCD.
Giao tiếp I2C
I2C (Inter-Integrated Circuit) là một loại bus nối tiếp được phát triển bởi hãng Philips nhằm truyền nhận dữ liệu giữa các IC. I2C sử dụng 2 đường truyền tín hiệu, 1 đường xung nhịp đồng hồ (SCL) do Master phát đi và 1 đường truyền dữ liệu theo 2 hướng (SDA).
Mạch vật lý I2C là mạch cực thu hở, do đó để mạng I2C có thể hoạt động được, cần tối thiểu 2 cặp điện trở pull-up như trên hình. Thông thường 4k7, hoặc 1k2. Tùy thuộc vào tốc độ truyền và khoảng cách truyền.
Hiển thị màn hình OLED với ESP8266
Bước 1: Đấu nối nối chân GPIO4 – D2 của ESP8266 với chân SDA của OLED, chân GPIO5 – D1 với SCL. Cấp nguồn 3v3 vào VCC và đấu GND cho OLED.
Bước 2: Cài đặt thư viện ESP8266 and ESP32 OLED driver for SSD1306 display
Bước 3: Lập trình Chúng ta sẽ thực hiện hiển thị giả lập đồng hồ trên màn hình OLED.
#include <Wire.h>
#include "SSD1306.h"
SSD1306 display(0x3c, 4, 5);
int thoi_gian = 0;
void setup()
{
Serial.begin(115200);
display.init();
//display.flipScreenVertically(); //đảo chiều
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "Hello world");
display.display();
delay(1000);
display.clear();
}
void loop()
{
int gio, phut, giay;
delay(1000);
thoi_gian ++;
gio = thoi_gian/3600;
phut = (thoi_gian%3600)/60;
giay = thoi_gian % 60;
display.clear();
display.drawString(0, 0, String(gio) + ":" + String(phut) + ":" + String(giay));
display.display();
}
Nạp chương trình cho board NodeMCU và xem kết quả hiển trị trên OLED.