Phần 4: Kết nối màn hình OLED SSD1306 với Raspberry Pi
1. Giới thiệu về màn hình OLED SSD1306, 2. Sơ đồ kết nối màn hình OLED với Raspberry Pi, 3. Danh sách các linh kiện cần thiết, 4. Hướng dẫn đấu dây, 5. Cài đặt thư viện Python cho màn hình OLED, 6. Viết mã Python để hiển thị dữ liệu trên màn hình OLED
Phần 4: Kết nối màn hình OLED SSD1306 với Raspberry Pi
1. Giới thiệu về màn hình OLED SSD1306
Màn hình OLED SSD1306 là một loại màn hình hiển thị sử dụng công nghệ OLED (Organic Light Emitting Diode), cho phép hiển thị hình ảnh và văn bản với độ tương phản cao và màu sắc sống động. Màn hình SSD1306 thường có kích thước 128x64 pixel, giúp hiển thị thông tin một cách rõ ràng và sắc nét. Nó rất phổ biến trong các dự án IoT vì khả năng tiêu thụ điện năng thấp và dễ dàng kết nối với các vi điều khiển như Raspberry Pi.
2. Sơ đồ kết nối màn hình OLED với Raspberry Pi
Sơ đồ kết nối giữa màn hình OLED SSD1306 và Raspberry Pi rất đơn giản. Màn hình thường sử dụng giao thức I2C để giao tiếp, vì vậy chỉ cần 4 chân cơ bản:
- VCC: Cấp nguồn cho màn hình (thường là 3.3V hoặc 5V).
- GND: Kết nối đất.
- SDA: Dữ liệu (Data Line).
- SCL: Đồng hồ (Clock Line).
Dưới đây là sơ đồ kết nối:
Raspberry Pi OLED SSD1306
------------ --------------
3.3V (VCC) ----> VCC
GND ----> GND
GPIO 2 (SDA) ----> SDA
GPIO 3 (SCL) ----> SCL
3. Danh sách các linh kiện cần thiết
Để thực hiện kết nối màn hình OLED SSD1306 với Raspberry Pi, bạn cần chuẩn bị các linh kiện sau:
- 1 x Raspberry Pi (bất kỳ phiên bản nào có hỗ trợ I2C).
- 1 x Màn hình OLED SSD1306 128x64.
- 1 x Breadboard (nếu cần).
- 1 x Dây jumper (nam-nam hoặc nam-nữ tùy vào cách kết nối).
4. Hướng dẫn đấu dây
Bạn cần thực hiện các bước sau để đấu dây cho màn hình OLED SSD1306:
- Kết nối chân VCC của màn hình với chân 3.3V của Raspberry Pi.
- Kết nối chân GND của màn hình với chân GND của Raspberry Pi.
- Kết nối chân SDA của màn hình với chân GPIO 2 (SDA) trên Raspberry Pi.
- Kết nối chân SCL của màn hình với chân GPIO 3 (SCL) trên Raspberry Pi.
Tip: Hãy chắc chắn rằng Raspberry Pi đã được tắt nguồn trước khi thực hiện các kết nối để tránh hư hỏng linh kiện.
5. Cài đặt thư viện Python cho màn hình OLED
Để có thể sử dụng màn hình OLED SSD1306 với Raspberry Pi, bạn cần cài đặt một số thư viện Python. Thư viện phổ biến nhất cho màn hình OLED là Adafruit Python SSD1306. Bạn có thể cài đặt thư viện này bằng cách thực hiện các lệnh sau trong terminal:
sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install --upgrade setuptools
sudo pip3 install Adafruit-SSD1306
sudo pip3 install Pillow
Sau khi cài đặt xong, bạn cũng cần đảm bảo rằng giao thức I2C đã được kích hoạt trên Raspberry Pi. Bạn có thể sử dụng raspi-config để kích hoạt I2C:
sudo raspi-config
Chọn Interfacing Options, sau đó chọn I2C và bật nó lên.
6. Viết mã Python để hiển thị dữ liệu trên màn hình OLED
Bây giờ bạn đã sẵn sàng để viết mã Python cho Raspberry Pi để hiển thị dữ liệu lên màn hình OLED. Dưới đây là một ví dụ mã đơn giản:
import time
import Adafruit_SSD1306
from PIL import Image, ImageDraw, ImageFont
# Thiết lập màn hình OLED
RST = None
DC = 23
SPI_PORT = 0
SPI_DEVICE = 0
# Khởi tạo màn hình OLED
oled = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
oled.begin()
oled.clear()
oled.display()
# Tạo một hình ảnh mới để vẽ lên màn hình
width = oled.width
height = oled.height
image = Image.new('1', (width, height))
draw = ImageDraw.Draw(image)
# Vẽ một số văn bản lên màn hình
draw.text((0, 0), 'Nhiet Do: 25C', fill=255)
draw.text((0, 20), 'Do Am: 60%', fill=255)
# Hiển thị hình ảnh lên màn hình
oled.image(image)
oled.display()
# Chờ 5 giây trước khi kết thúc
time.sleep(5)
Mã trên sẽ hiển thị nhiệt độ và độ ẩm lên màn hình OLED. Bạn có thể thay đổi các giá trị để phù hợp với dữ liệu thực tế từ cảm biến DHT22 trong dự án của bạn.
Tip: Đảm bảo rằng bạn đã kết nối màn hình OLED đúng cách và thư viện đã được cài đặt trước khi chạy mã. Nếu có lỗi, hãy kiểm tra lại các kết nối và cài đặt.
Với các bước trên, bạn đã hoàn thành việc kết nối và lập trình màn hình OLED SSD1306 với Raspberry Pi. Hãy tiếp tục với các phần tiếp theo của dự án để thu thập dữ liệu từ cảm biến DHT22 và hiển thị chúng trên màn hình OLED!
