Đã được đăng vào 03/04/2021 @ 09:47
GIỚI THIỆU
Thỉnh thoảng các bạn sẽ cần đến một màn hình hiển thị khi chế tạo phần cứng cho một dự án nào đó.
Tuy nhiên, kích thước của màn hình và số lượng chân kết nối lại biến thành trở ngại khi mà trên thị trường không có nhiều lựa chọn.
Bài viết này sẽ hướng dẫn sử dụng màn hình OLED rất nhỏ gọn, giao tiếp chuẩn I2C chỉ với 2 dây tín hiệu!
Xem thêm:
- Hiển thị thời gian thực bằng màn hình OLED 0.96 sử dụng NodeMCU ESP8266
- Điều khiển Servo thông qua NodeMCU ESP8266 và Blynk hiển thị lên OLED 0.96
- Hiển thị hình ảnh Bitmap trên OLED 0.96 sử dụng NodeMCU ESP8266
Module màn hình OLED I2C 0.96 inch
Loại màn hình OLED mình sử dụng trong bài viết này rất nhỏ, kích thước thực tế chỉ 2.7 x 2.8 cm (~0.96 inch) tương tự kích thước của module Arduino Pro Mini, với độ phân giải 128 x 64.
IC phụ trách điều khiển màn OLED là SSD1306, đây là loại chip đơn CMOS OLED / PLED với bộ điều khiển hệ thống hiển thị đồ họa ma trận dạng điểm diode phát quang hữu cơ / polymer.
Module này có 4 chân trong đó 2 chân cấp nguồn VCC/GND, 2 chân còn lại là SCL/SDA chuẩn giao tiếp I2C. Chúng ta sẽ dùng 2 chân này để điều khiển màn hình.
Module màn hình OLED này hoàn toàn tương thích với Arduino và có dải điện áp đầu vào từ 3,3V đến 6V, dòng điện tiêu thụ dưới 10 mA
Vì vậy dễ dàng kết nối với chân 3,3V hoặc 5V của Arduino hoặc Esp8266 / Esp32. Ta dễ dàng mua module này trên các trang TMĐT với giá khoảng 70k.
LINH KIỆN CẦN DÙNG
- Module màn hình OLED I2C SSD1306
- Mạch Arduino (Bài này sử dụng mạch Arduino Mega)
- Nguồn 5V (USB, pin sạc dự phòng,…)
- Dây nối
SƠ ĐỒ NGUYÊN LÝ
Mạch vô cùng đơn giản. Cứ nối như sơ đồ dưới là xong:
Kết nối GND với GND. Nối Vcc với chân 5v hoặc 3.3v trên mạch Arduino.
Chân SCL nối với SCL. Chân SDA nối với chân SDA.
Cấp nguồn cho mạch Arduino, nạp code là chạy!
I2C PROTOCOL
Giao thức Inter-integrated Circuit (I2C) là một giao thức cho phép nhiều mạch Slave giao tiếp với một hoặc nhiều mạch Master.
Tuy chỉ có thể truyền ở khoảng cách ngắn, trong cùng 1 thiết bị duy nhất nhưng chỉ cần 2 dây tín hiệu là đủ.
Bus I2C (dây giao tiếp) chỉ gồm hai dây và được đặt tên là Serial Clock Line (SCL) và Serial Data Line (SDA).
Dữ liệu được truyền đi được gửi qua dây SDA và được đồng bộ với tín hiệu đồng hồ (clock) từ SCL.
Tất cả các thiết bị / IC trên mạng I2C được kết nối với cùng đường SCL và SDA.
CODE
Trước hết, bạn cần tải xuống hai thư viện sau:
- Adafruit GFX library, đây là thư viện lõi dùng cho đồ họa, nó cung cấp thư viện cơ bản như dấu chấm, đường tròn, đường thẳng,…Bạn cần kết hợp thư viện này với 1 thư viện phần cứng khác (Ở đây là ghép với thư viện OLED SSD-1306).
- Adafruit SSD-1306 OLED display library, đây là thư viện dành cho màn hình OLED SSD-1306.
Giải nén hai thư viện và thêm chúng vào thư mục thư viện Arduino, sau đó chạy Arduino IDE và mở I2C exapmle từ thư viện OLED.
Thay đổi duy nhất bạn phải làm là thay đổi địa chỉ I2C của màn hình.
Đi tới chức năng thiết lập và thay đổi giá trị trên lệnh gọi hàm display.begin từ 0x3D thành 0x3C.
Điều này là bắt buộc vì 0x3D là địa chỉ của màn hình OLED Adafruit, trong khi 0x3C là địa chỉ của màn hình OLED ta mua ngoài chợ.
Dưới đây là video hướng dẫn mình kiếm trên mạng, các bạn có thể tham khảo:
DOWNLOADS
Nguồn: electronics-lab.com
Để lại một bình luận