Raspberry Pi Hệ Thống Làm Mát sử dụng Cảm Biến Nhiệt Độ DS18B20

Hướng dẫn này sẽ chỉ bạn cách điều khiển nhiệt độ với sự trợ giúp của Raspberry Pi, quạt và cảm biến nhiệt độ DS18B20.

Nếu bạn muốn sử dụng cảm biến DHT11 hoặc DHT22 thay vì cảm biến DS18B20, vui lòng tham khảo Raspberry Pi - Hệ Thống Làm Mát sử dụng Cảm Biến DHT.

Linh Kiện Cần Thiết

1×Raspberry Pi 5
1×Cảm Biến Nhiệt Độ DS18B20 (CÓ Adapter)
1×Cảm Biến Nhiệt Độ DS18B20 (KHÔNG Adapter)
1×Điện trở 4.7 kΩ
1×Relay
1×Quạt Làm Mát 12V DC
1×(Thay thế) Quạt Làm Mát 5V DC
1×Adapter Nguồn 12V
1×DC Power Jack
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ề Quạt Làm Mát và Cảm Biến Nhiệt Độ DS18B20

Quạt được sử dụng trong hướng dẫn này yêu cầu nguồn điện 12V. Nếu có nguồn cấp, quạt sẽ hoạt động, còn không thì sẽ không hoạt động. Để điều khiển quạt bằng Raspberry Pi, cần phải đặt một relay ở giữa chúng.

Nếu bạn chưa quen thuộc với cảm biến nhiệt độ và quạt (pinout của chúng, cách hoạt động, cách lập trình, v.v.), các hướng dẫn sau có thể giúp bạn:

Sơ Đồ Kết Nối

sơ đồ kết nối hệ thống quạt làm mát Raspberry Pi

This image is created using Fritzing. Click to enlarge image

Chúng tôi khuyên bạn nên mua cảm biến DS18B20 cùng với adapter kết nối đi kèm để có thiết lập liền mạch. Adapter này bao gồm điện trở tích hợp, loại bỏ nhu cầu về điện trở bổ sung trong việc kết nối.

Cách Hệ Thống Hoạt Động

  • Raspberry Pi sẽ đọc giá trị từ cảm biến nhiệt độ.
  • Nếu nhiệt độ cao hơn mức tối đa cho phép, quạt sẽ được kích hoạt bởi Raspberry Pi.
  • Khi nhiệt độ giảm xuống dưới mức tối thiểu được chấp nhận, Raspberry Pi sẽ tắt quạt.

Vòng lặp này được lặp lại liên tục.

Nếu bạn muốn kích hoạt và vô hiệu hóa quạt khi nhiệt độ trên hoặc dưới một giá trị nhất định, tất cả những gì bạn cần làm là đặt giới hạn trên và dưới thành cùng một số.

Code Raspberry Pi cho Hệ Thống Làm Mát với Cảm Biến DS18B20

Hãy viết code khiến Raspberry Pi kích hoạt quạt khi nhiệt độ cao hơn 25°C và sẽ giữ nó hoạt động cho đến khi nhiệt độ giảm xuống dưới 20°C.

Các Bước Nhanh

  • Đảm bảo bạn đã cài đặt Raspbian hoặc hệ điều hành tương thích Raspberry Pi khác trên Pi của mình.
  • Đả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 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 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, hãy cài đặt bằng lệnh sau:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Trước khi sử dụng cảm biến nhiệt độ DS18B20 với Raspberry Pi, chúng ta cần kích hoạt giao diện 1-Wire trên Raspberry Pi. Xem Cách kích hoạt giao diện 1-Wire trên Raspberry Pi
  • Cài đặt thư viện cho cảm biến nhiệt độ DS18B20 bằng cách chạy lệnh sau:
pip install w1thermsensor
  • Tạo file script Python cooling.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-cooling-system-using-ds18b20-temperature-sensor from w1thermsensor import W1ThermSensor import RPi.GPIO as GPIO import time # Constants THRESHOLD_ON = 25 # Upper threshold of temperature, change to your desired value THRESHOLD_OFF = 20 # Lower threshold of temperature, change to your desired value FAN_PIN = 21 # GPIO pin connected to relay, change to your desired GPIO pin # Setup GPIO.setmode(GPIO.BCM) GPIO.setup(FAN_PIN, GPIO.OUT) def find_ds18b20_sensor(): for sensor in W1ThermSensor.get_available_sensors(): if sensor.type == W1ThermSensor.THERM_SENSOR_DS18B20: return sensor return None def read_temperature(sensor): try: temperature_celsius = sensor.get_temperature() return temperature_celsius except Exception as e: print(f"Error reading temperature: {e}") return None def control_fan(temperature): if temperature is not None: if temperature > THRESHOLD_ON: print("The fan is turned on") GPIO.output(FAN_PIN, GPIO.HIGH) elif temperature < THRESHOLD_OFF: print("The fan is turned off") GPIO.output(FAN_PIN, GPIO.LOW) # Find DS18B20 sensor ds18b20_sensor = find_ds18b20_sensor() if ds18b20_sensor is not None: print(f"DS18B20 Sensor found: {ds18b20_sensor.id}") try: while True: temperature = read_temperature(ds18b20_sensor) control_fan(temperature) time.sleep(0.5) except KeyboardInterrupt: pass finally: GPIO.cleanup() else: print("DS18B20 Sensor not found.")
  • Lưu file và chạy script Python bằng cách thực hiện lệnh sau trong terminal:
python3 cooling.py

Script chạy trong vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.

  • Thay đổi nhiệt độ của môi trường xung quanh cảm biến.
  • Kiểm tra trạng thái của quạt trên Serial Monitor.

Kiến Thức Nâng Cao

Phương pháp điều khiển này được gọi là bộ điều khiển on-off, còn được gọi là signaller hoặc "bang-bang" controller. Rất dễ dàng để triển khai phương pháp này.

Một phương pháp thay thế, được gọi là bộ điều khiển PID, tồn tại. Phương pháp điều khiển nhiệt độ này ổn định hơn, nhưng nó phức tạp và khó hiểu cũng như triển khai. Do đó, bộ điều khiển PID không được sử dụng rộng rãi.

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.