Home Internet of Things - IoT ESP8266 kết nối màn hình OLED

ESP8266 kết nối màn hình OLED

by Khanh Tran

Màn hình OLED 0.96 là một màn hình đang được sử dụng khá nhiều vì sự tiện lợi của chúng. Trong nội dung bài viết hôm nay, mình sẽ hướng dẫn các bạn cách để giả lập một đồng hồ trên OLED 0.96 và NodeMCU ESP8266. Cách ESP8266 kết nối màn hình OLED.

Tổng quan về 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. Chúng 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ơ, 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 sử dụng chuẩn giao tiếp bằng I2C, vì thế việc giao tiếp một cách dễ dàng và ổn định. Màn hình cho khả năng hiển thị đẹp, sang trọng, rõ nét và khả năng tiết kiệm pin rất tốt.

Hình 1: OLED SSD1306

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)

Hình 2. I2C Clock
Hình 3. Mô hình mạng I2C

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 của ESP8266 với chân SDA của OLED, chân GPIO5 với SCL. Cấp nguồn 3v3 vào VCC và đấu GND cho OLED. Tuy nhiên với board ESP8266 IoT Uno thì phần đấu nối đã ra sẵn header, bạn chỉ cần cắm OLED vào như hình

Hình 4: kết nối ESP8266 với màn OLED

Bước 2: Cài đặt thư viện

ESP8266 and ESP32 OLED driver for SSD1306 display, xem thêm Cài đặt thư viện Arduino

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();
}

Tổng kết

Thông qua các ví dụ mẫu về điều khiển đèn LED, nút nhấn và OLED, chúng ta có thể triển khai thêm nhiều ví dụ khác sử dụng GPIO của ESP8266. Để hiểu rõ hơn về cách làm việc của Arduino IDE, cách nạp chương trình, sử dụng thư viện …​

Xem thêm: ESP8266/ESP32 đọc cảm biến DHT11 và gửi về Server

You may also like

Leave a Comment