Raspberry Pi: Đo Nhiệt Độ & Độ Ẩm với DHT22
Cơ bản8/2/2024

Raspberry Pi: Đo Nhiệt Độ & Độ Ẩm với DHT22

Thu thập dữ liệu môi trường và hiển thị lên màn hình OLED với Raspberry Pi. Dữ liệu được hiển thị trên màn hình OLED SSD1306 128x64.

DHT22OLEDSensorsPythonRaspberry Pi
524 lượt thích892 người đã làm1 giờ7 bước5 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Phần 5: Hiển thị dữ liệu nhiệt độ và độ ẩm lên màn hình OLED

1. Kết hợp mã từ Phần 3 và Phần 4, 2. Viết mã Python để hiển thị dữ liệu DHT22 lên màn hình OLED, 3. Giải thích mã nguồn từng bước, 4. Kiểm tra và chạy chương trình, 5. Tinh chỉnh giao diện hiển thị nếu cần

Cập nhật 01/06/2026

Phần 5: Hiển thị dữ liệu nhiệt độ và độ ẩm lên màn hình OLED

Trong phần này, chúng ta sẽ kết hợp mã từ Phần 3 và Phần 4 để hiển thị dữ liệu nhiệt độ và độ ẩm từ cảm biến DHT22 lên màn hình OLED SSD1306. Mục tiêu của chúng ta là tạo ra một giao diện đơn giản và dễ sử dụng cho người dùng.

1. Kết hợp mã từ Phần 3 và Phần 4

Trước tiên, hãy chắc chắn rằng bạn đã hoàn thành các phần trước đó, nơi chúng ta đã thiết lập Raspberry Pi và kết nối với cảm biến DHT22 cũng như màn hình OLED. Bây giờ, chúng ta sẽ kết hợp mã từ cả hai phần để thu thập dữ liệu từ cảm biến và hiển thị nó lên màn hình OLED.

2. Viết mã Python để hiển thị dữ liệu DHT22 lên màn hình OLED

Dưới đây là mã Python hoàn chỉnh để đọc dữ liệu từ cảm biến DHT22 và hiển thị nó trên màn hình OLED:

import Adafruit_DHT
import Adafruit_SSD1306
from PIL import Image, ImageDraw, ImageFont
import time
import os

# Thiết lập cảm biến DHT22
DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4  # GPIO pin kết nối với DHT22

# Thiết lập màn hình OLED
RST = None
oled = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
oled.begin()
oled.clear()
oled.display()

# Tạo hình ảnh để vẽ lên màn hình
width = oled.width
height = oled.height
image = Image.new('1', (width, height))
draw = ImageDraw.Draw(image)

# Chọn font chữ
font = ImageFont.load_default()

while True:
    # Đọc dữ liệu từ cảm biến
    humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)

    # Kiểm tra dữ liệu hợp lệ
    if humidity is not None and temperature is not None:
        # Xóa màn hình
        draw.rectangle((0, 0, width, height), outline=0, fill=0)

        # Vẽ dữ liệu lên màn hình
        draw.text((0, 0), 'Nhiệt độ: {:.1f} C'.format(temperature), font=font, fill=255)
        draw.text((0, 20), 'Độ ẩm: {:.1f} %'.format(humidity), font=font, fill=255)

        # Hiển thị hình ảnh lên màn hình OLED
        oled.image(image)
        oled.display()
    else:
        print("Không thể đọc dữ liệu từ cảm biến")

    # Chờ 2 giây trước khi đọc lại
    time.sleep(2)

3. Giải thích mã nguồn từng bước

Mã nguồn trên thực hiện các bước sau:

  1. Nhập các thư viện cần thiết: Chúng ta sử dụng các thư viện Adafruit để giao tiếp với cảm biến DHT22 và màn hình OLED. Thư viện PIL được sử dụng để vẽ hình ảnh.
  2. Thiết lập cảm biến và màn hình: Chúng ta chỉ định cảm biến DHT22 và chân GPIO mà nó được kết nối. Sau đó, chúng ta khởi tạo màn hình OLED.
  3. Tạo hình ảnh và font chữ: Một hình ảnh mới được tạo ra để vẽ dữ liệu, cùng với font chữ mặc định được sử dụng để hiển thị văn bản.
  4. Vòng lặp vô hạn: Chương trình sẽ chạy mã trong vòng lặp vô hạn để liên tục thu thập dữ liệu từ cảm biến và hiển thị lên màn hình.
  5. Đọc dữ liệu từ cảm biến: Sử dụng hàm `read_retry`, chúng ta đọc dữ liệu nhiệt độ và độ ẩm từ cảm biến. Nếu dữ liệu hợp lệ, chúng ta sẽ xóa màn hình và vẽ lại dữ liệu mới.
  6. Hiển thị dữ liệu: Cuối cùng, dữ liệu về nhiệt độ và độ ẩm được vẽ lên màn hình OLED và cập nhật hiển thị.

4. Kiểm tra và chạy chương trình

Để chạy chương trình, bạn cần mở terminal trên Raspberry Pi và chạy lệnh sau:

python3 ten_file.py

Trong đó ten_file.py là tên file bạn đã lưu mã nguồn. Bạn nên thấy màn hình OLED hiển thị nhiệt độ và độ ẩm cập nhật liên tục mỗi 2 giây.

Lưu ý: Nếu bạn không thấy dữ liệu hiển thị, hãy kiểm tra lại kết nối của cảm biến và màn hình OLED. Đảm bảo rằng các thư viện đã được cài đặt chính xác.

5. Tinh chỉnh giao diện hiển thị nếu cần

Có thể bạn muốn thay đổi giao diện hiển thị để phù hợp hơn với nhu cầu sử dụng. Dưới đây là một số gợi ý:

  • Thay đổi font chữ: Bạn có thể tạo hoặc tải về các font chữ khác và sử dụng chúng để làm cho giao diện đẹp hơn.
  • Thay đổi màu sắc: Mặc dù màn hình OLED thường chỉ hỗ trợ màu đen và trắng, bạn có thể sử dụng các kỹ thuật khác để tạo ra hiệu ứng khác nhau.
  • Thêm biểu đồ: Nếu bạn muốn hiển thị dữ liệu theo thời gian, bạn có thể thêm một biểu đồ đơn giản để theo dõi sự thay đổi của nhiệt độ và độ ẩm.

Chúc mừng bạn đã hoàn thành phần hiển thị dữ liệu lên màn hình OLED! Bạn đã học được cách kết hợp cảm biến DHT22 và màn hình OLED để tạo ra một ứng dụng IoT hữu ích.