Raspberry Pi DHT22

Hướng dẫn này sẽ chỉ bạn cách sử dụng Raspberry Pi để đọc nhiệt độ và độ ẩm từ cảm biến DHT22. Cụ thể, chúng ta sẽ học:

Chúng tôi gợi ý:

Phần Cứng Cần Thiết

1×Raspberry Pi 5
1×Module Cảm Biến Nhiệt Độ Độ Ẩm DHT22
1×Điện trở 10 kΩ
1×breadboard (bo mạch thí nghiệm)
1×Dây Jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Raspberry Pi
1×(Khuyến nghị) Raspberry Pi Prototyping Base Plate & Breadboard Kit
1×(Khuyến nghị) HDMI Touch Screen Monitor for Raspberry Pi

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Cảm Biến Nhiệt Độ và Độ Ẩm DHT22

Sơ Đồ Chân Cảm Biến Nhiệt Độ và Độ Ẩm

DHT22 trên thị trường có hai dạng: cảm biến và module.

DHT22 ở dạng cảm biến gốc có bốn chân:

  • GND: Chân này phải được kết nối với ground (0V)
  • VCC: Chân này phải được kết nối với nguồn cung cấp (5V)
  • DATA: Chân này được sử dụng để giao tiếp giữa cảm biến và Raspberry Pi
  • NC: Chân này không nên được kết nối và có thể bỏ qua
dht22 temperature and humidity sensor sơ đồ chân

Module DHT22 có ba chân:

  • Chân GND (-): phải được kết nối với GND (0V)
  • Chân VCC (+): phải được kết nối với VCC (5V)
  • Chân OUT: được sử dụng để giao tiếp giữa cảm biến và Raspberry Pi

※ Lưu ý:

Cách sắp xếp các chân trên module có thể khác nhau tùy theo nhà sản xuất. Điều quan trọng là luôn sử dụng nhãn được in trên module khi làm việc với nó. Hãy quan sát kỹ!

Sơ Đồ Đấu Nối

Cách đấu nối với Raspberry Pi giống nhau cho cả hai loại cảm biến. Ở dạng gốc, cần có một điện trở có giá trị từ 5K đến 10K Ohm để giữ đường dữ liệu ở mức cao, từ đó cho phép giao tiếp giữa cảm biến và Raspberry Pi.

Đấu Nối Raspberry Pi - Cảm Biến DHT22

Raspberry Pi dht22 temperature and humidity sensor sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Kết nối cảm biến DHT22 với Raspberry Pi như sau:

  • Chân VCC của DHT22 với chân 5V của Raspberry Pi (chân 2 hoặc bất kỳ chân GPIO 5V nào)
  • Chân GND của DHT22 với chân GND của Raspberry Pi (chân 30 hoặc bất kỳ chân GPIO GND nào)
  • Chân DATA của DHT22 với một chân GPIO trên Raspberry Pi (ví dụ: GPIO 12 (chân 32).

Để đảm bảo ổn định tốt hơn, bạn cần thêm một điện trở (giá trị từ 5K đến 10K Ohm) giữa chân VCC và DATA của DHT22.

Đấu Nối Raspberry Pi - Module DHT22

Hầu hết các module cảm biến DHT22 đều có điện trở tích hợp sẵn, do đó loại bỏ nhu cầu đấu nối thêm hoặc hàn.

Raspberry Pi dht22 temperature and humidity module sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Kết nối module DHT22 với Raspberry Pi như sau:

  • Chân VCC của DHT22 với chân 5V của Raspberry Pi (chân 2 hoặc bất kỳ chân GPIO 5V nào)
  • Chân GND của DHT22 với chân GND của Raspberry Pi (chân 30 hoặc bất kỳ chân GPIO GND nào)
  • Chân DATA của DHT22 với một chân GPIO trên Raspberry Pi (ví dụ: GPIO 12 (chân 32).

Cách Lập Trình Raspberry Pi để Đọc Nhiệt Độ và Độ Ẩm từ Cảm Biến DHT22

  • Mở terminal trên Raspberry Pi của bạn hoặc kết nối qua SSH.
  • Cập nhật danh sách gói và cài đặt các thư viện cần thiết bằng cách chạy các lệnh sau:
sudo apt-get update sudo apt-get install python3-dev python3-pip sudo pip3 install Adafruit_DHT
  • Bây giờ, bạn có thể viết một script Python cho Raspberry Pi để đọc dữ liệu từ cảm biến DHT22.
# Mã Raspberry Pi này được phát triển bởi newbiely.vn # Mã Raspberry Pi này được cung cấp để sử dụng công khai, không có ràng buộc. # Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: # https://newbiely.vn/tutorials/raspberry-pi/raspberry-pi-dht22 import Adafruit_DHT import time # Set the sensor type and GPIO pin sensor = Adafruit_DHT.DHT11 pin = 17 # Change this to the GPIO pin you used for DATA try: while True: # Try to read the temperature and humidity from the sensor humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) # If the reading was successful, display the values on the same line if humidity is not None and temperature is not None: print(f"Temperature: {temperature:.1f} °C, Humidity: {humidity:.1f} %") else: print("Failed to retrieve data from the DHT22 sensor.") # Wait some time before taking the next reading time.sleep(2) except KeyboardInterrupt: print("\nExiting...")

Lưu code Python vào một file (ví dụ: dht22.py) trên Raspberry Pi của bạn. Sau đó, chạy script trong terminal:

python3 dht22.py
  • Kiểm tra kết quả trên terminal.
PuTTY - Raspberry Pi
Temperature: 25.4 °C, Humidity: 52.7 % Temperature: 25.7 °C, Humidity: 52.1 % Temperature: 26.1 °C, Humidity: 52.3 % Temperature: 25.9 °C, Humidity: 52.3 %

Script liên tục đọc dữ liệu cảm biến mỗi 2 giây (như được chỉ định trong dòng time.sleep(2)), vì vậy bạn sẽ thấy các số đọc được cập nhật như thế này mỗi 2 giây cho đến khi bạn dừng script bằng cách nhấn tổ hợp phím Ctrl + C trong terminal.

Nếu vì lý do nào đó, script không thể đọc dữ liệu từ cảm biến, nó sẽ hiển thị:

PuTTY - Raspberry Pi
Failed to retrieve data from the DHT22 sensor.

Kiến Thức Bổ Sung

Hãy so sánh các cảm biến DHT11 và DHT22.

Điểm chung giữa DHT11 và DHT22

  • Cung cấp thông tin nhiệt độ và độ ẩm.
  • Sơ đồ chân giống nhau.
  • Cách đấu nối với Raspberry Pi không đổi.
  • Lập trình, sử dụng thư viện, tương tự nhau chỉ khác một dòng code.

Sự khác biệt giữa DHT11 và DHT22

DHT11 DHT22
Giá siêu rẻ giá rẻ
Dải Nhiệt Độ 0°C đến 50°C -40°C đến 80°C
Độ Chính Xác Nhiệt Độ ± 2°C ± 0.5°C
Dải Độ Ẩm 20% đến 80% 0% đến 100%
Độ Chính Xác Độ Ẩm 5% ± 2 đến 5%
Tốc Độ Đọc 1Hz (một lần mỗi giây) 0.5Hz (một lần mỗi 2 giây)
Kích Thước 15.5mm x 12mm x 5.5mm 15.1mm x 25mm x 7.7mm

Rõ ràng, DHT22 chính xác hơn DHT11 và có dải đo rộng hơn, mặc dù giá thành cao hơn.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.