Raspberry Pi DHT11 Cảm biến Nhiệt độ và Độ ẩm

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 DHT11. Cụ thể, chúng ta sẽ học:

Chúng tôi gợi ý:

Linh Kiện Cần Thiết

1×Raspberry Pi 5
1×Module Cảm biến Nhiệt độ Độ ẩm DHT11
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 DHT11

Sơ đồ chân Cảm biến Nhiệt độ và Độ ẩm

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

DHT11 dạng cảm biến nguyên bản có bốn chân:

  • GND: Chân này phải được kết nối với đất (0V)
  • VCC: Chân này phải được kết nối với nguồn điện (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 cần kết nối và có thể bỏ qua
dht11 temperature and humidity sensor sơ đồ chân

DHT11 dạng module 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 giữa các nhà sản xuất. Điều quan trọng là luôn sử dụng các 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 là giống nhau cho cả hai loại cảm biến. Với dạng nguyên bản, cần một điện trở có giá trị từ 5K đến 10K Ohms để giữ đường truyền 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 DHT11

Raspberry Pi dht11 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 DHT11 với Raspberry Pi như sau:

  • Chân VCC của DHT11 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 DHT11 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 DHT11 với một chân GPIO của Raspberry Pi (ví dụ: GPIO 12 (chân 32).

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

Đấu nối Raspberry Pi - Module DHT11

Hầu hết các module cảm biến DHT11 đề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 dht11 temperature and humidity module sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

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

  • Chân VCC của DHT11 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 DHT11 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 DHT11 với một chân GPIO của 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 DHT11

Các Bước Thực Hiện

  • Đảm bảo bạn đã cài đặt Raspbian hoặc bất kỳ hệ điều hành tương thích Raspberry Pi nào khác trên Pi của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối với cùng mạng cục bộ với PC của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối với internet nếu bạn cần cài đặt một số thư viện.
  • Nếu đây là lần đầu tiên bạn sử dụng Raspberry Pi, xem Raspberry Pi - Cài Đặt Phần Mềm
  • Kết nối PC của bạn với Raspberry Pi qua SSH bằng SSH client tích hợp sẵn trên Linux và macOS hoặc PuTTY trên Windows. Xem cách kết nối PC với Raspberry Pi qua SSH.
  • Đảm bảo bạn đã cài đặt thư viện RPi.GPIO. Nếu chưa, cài đặt nó bằng lệnh sau:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Cài đặt thư viện cho cảm biến nhiệt độ và độ ẩm DHT11 bằng cách chạy lệnh sau:
sudo pip3 install Adafruit_DHT
  • Tạo file script Python DHT11.py và thêm code sau:
# 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-dht11 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 DHT11 sensor.") # Wait some time before taking the next reading time.sleep(2) except KeyboardInterrupt: print("\nExiting...")
  • Lưu file và chạy script Python bằng cách thực hiện lệnh sau trong Terminal:
python3 DHT11.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 sẽ 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ố đo đượ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 đọc được dữ liệu từ cảm biến, nó sẽ hiển thị:

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

Kiến Thức Bổ Sung

Hãy nhớ rằng cảm biến DHT11 không phải là cảm biến chính xác hoặc đáng tin cậy nhất hiện có. Nếu bạn cần độ chính xác cao hơn, bạn có thể cân nhắc sử dụng DHT22 hoặc các cảm biến tiên tiến hơn.

Hãy so sánh 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.

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

DHT11 DHT22
Giá cực 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ó phạm vi 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.