6.6 KiB
Đo nhiệt độ - Raspberry Pi
Trong phần này của bài học, bạn sẽ thêm một cảm biến nhiệt độ vào Raspberry Pi của mình.
Phần cứng
Cảm biến bạn sẽ sử dụng là cảm biến độ ẩm và nhiệt độ DHT11, kết hợp 2 cảm biến trong một gói. Đây là loại cảm biến khá phổ biến, với nhiều cảm biến thương mại kết hợp nhiệt độ, độ ẩm và đôi khi cả áp suất khí quyển. Thành phần cảm biến nhiệt độ là một nhiệt điện trở hệ số nhiệt độ âm (NTC), một loại nhiệt điện trở mà điện trở giảm khi nhiệt độ tăng.
Đây là một cảm biến kỹ thuật số, vì vậy nó có một bộ chuyển đổi ADC tích hợp để tạo tín hiệu kỹ thuật số chứa dữ liệu nhiệt độ và độ ẩm mà vi điều khiển có thể đọc.
Kết nối cảm biến nhiệt độ
Cảm biến nhiệt độ Grove có thể được kết nối với Raspberry Pi.
Nhiệm vụ
Kết nối cảm biến nhiệt độ
-
Cắm một đầu của cáp Grove vào ổ cắm trên cảm biến độ ẩm và nhiệt độ. Cáp chỉ có thể cắm theo một chiều.
-
Khi Raspberry Pi đã tắt nguồn, kết nối đầu còn lại của cáp Grove vào ổ cắm kỹ thuật số được đánh dấu D5 trên Grove Base hat gắn vào Pi. Ổ cắm này là ổ thứ hai từ bên trái, nằm trên hàng ổ cắm cạnh các chân GPIO.
Lập trình cảm biến nhiệt độ
Thiết bị giờ đây có thể được lập trình để sử dụng cảm biến nhiệt độ đã gắn.
Nhiệm vụ
Lập trình thiết bị.
-
Bật nguồn Pi và chờ nó khởi động.
-
Mở VS Code, trực tiếp trên Pi hoặc kết nối qua tiện ích mở rộng Remote SSH.
⚠️ Bạn có thể tham khảo hướng dẫn thiết lập và mở VS Code trong bài học 1 nếu cần.
-
Từ terminal, tạo một thư mục mới trong thư mục home của người dùng
pi
có tên làtemperature-sensor
. Tạo một tệp trong thư mục này có tên làapp.py
:mkdir temperature-sensor cd temperature-sensor touch app.py
-
Mở thư mục này trong VS Code.
-
Để sử dụng cảm biến nhiệt độ và độ ẩm, cần cài đặt thêm một gói Pip. Từ Terminal trong VS Code, chạy lệnh sau để cài đặt gói Pip này trên Pi:
pip3 install seeed-python-dht
-
Thêm đoạn mã sau vào tệp
app.py
để nhập các thư viện cần thiết:import time from seeed_dht import DHT
Lệnh
from seeed_dht import DHT
nhập lớpDHT
để tương tác với cảm biến nhiệt độ Grove từ moduleseeed_dht
. -
Thêm đoạn mã sau sau đoạn mã trên để tạo một thể hiện của lớp quản lý cảm biến nhiệt độ:
sensor = DHT("11", 5)
Đoạn mã này khai báo một thể hiện của lớp
DHT
để quản lý cảm biến Digital Humidity và Temperature. Tham số đầu tiên cho biết cảm biến đang sử dụng là cảm biến DHT11 - thư viện bạn đang sử dụng hỗ trợ các biến thể khác của cảm biến này. Tham số thứ hai cho biết cảm biến được kết nối với cổng kỹ thuật sốD5
trên Grove base hat.✅ Nhớ rằng, tất cả các ổ cắm đều có số chân duy nhất. Các chân 0, 2, 4 và 6 là chân analog, các chân 5, 16, 18, 22, 24 và 26 là chân kỹ thuật số.
-
Thêm một vòng lặp vô hạn sau đoạn mã trên để lấy giá trị cảm biến nhiệt độ và in ra console:
while True: _, temp = sensor.read() print(f'Temperature {temp}°C')
Lệnh gọi
sensor.read()
trả về một tuple gồm độ ẩm và nhiệt độ. Bạn chỉ cần giá trị nhiệt độ, vì vậy độ ẩm sẽ bị bỏ qua. Giá trị nhiệt độ sau đó được in ra console. -
Thêm một khoảng nghỉ nhỏ 10 giây ở cuối
loop
vì không cần kiểm tra mức nhiệt độ liên tục. Khoảng nghỉ giúp giảm tiêu thụ năng lượng của thiết bị.time.sleep(10)
-
Từ Terminal của VS Code, chạy lệnh sau để chạy ứng dụng Python của bạn:
python3 app.py
Bạn sẽ thấy các giá trị nhiệt độ được hiển thị trên console. Sử dụng một vật gì đó để làm ấm cảm biến, chẳng hạn như đặt ngón tay cái lên cảm biến hoặc sử dụng quạt để thấy các giá trị thay đổi:
pi@raspberrypi:~/temperature-sensor $ python3 app.py Temperature 26°C Temperature 26°C Temperature 28°C Temperature 30°C Temperature 32°C
💁 Bạn có thể tìm thấy đoạn mã này trong thư mục code-temperature/pi.
😀 Chương trình cảm biến nhiệt độ của bạn đã thành công!
Tuyên bố miễn trừ trách nhiệm:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI Co-op Translator. Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.