Mục lục:

Theo dõi nhiệt độ và độ ẩm bằng Raspberry Pi: 6 bước (có hình ảnh)
Theo dõi nhiệt độ và độ ẩm bằng Raspberry Pi: 6 bước (có hình ảnh)

Video: Theo dõi nhiệt độ và độ ẩm bằng Raspberry Pi: 6 bước (có hình ảnh)

Video: Theo dõi nhiệt độ và độ ẩm bằng Raspberry Pi: 6 bước (có hình ảnh)
Video: Triển khai hệ thống nhận diện khuôn mặt và đo thân nhiệt trên Raspberry Pi4 - Mì AI 2024, Tháng bảy
Anonim
Theo dõi nhiệt độ và độ ẩm bằng Raspberry Pi
Theo dõi nhiệt độ và độ ẩm bằng Raspberry Pi
Theo dõi nhiệt độ và độ ẩm bằng Raspberry Pi
Theo dõi nhiệt độ và độ ẩm bằng Raspberry Pi

Mùa hè sắp đến, những ai không có máy điều hòa thì nên chuẩn bị tinh thần để kiểm soát bầu không khí trong nhà bằng tay. Trong bài đăng này, tôi đang mô tả cách hiện đại để đo các thông số quan trọng nhất đối với sự thoải mái của con người: nhiệt độ và độ ẩm. Dữ liệu thu thập này được gửi đến đám mây và được xử lý ở đó.

Tôi đang sử dụng bo mạch Raspberry Pi 1 và cảm biến DHT22. Bạn có thể thực hiện tương tự trên bất kỳ máy tính nào có Internet, GPIO và Python. Cảm biến DHT11 rẻ hơn cũng hoạt động tốt.

Bước 1: Chuẩn bị phần cứng

Chuẩn bị phần cứng
Chuẩn bị phần cứng
Chuẩn bị phần cứng
Chuẩn bị phần cứng

Hãy bắt đầu lại từ đầu, vì tôi đã không sử dụng Raspberry Pi của mình trong một thời gian dài.

Chúng tôi sẽ cần:

  • Bảng Raspberry Pi (hoặc nền tảng định hướng IoT khác).
  • Thẻ SD hoặc microSD (tùy thuộc vào nền tảng).
  • 5V / 1A qua micro-USB.
  • Cáp mạng LAN, cung cấp kết nối Internet.
  • Màn hình HDMI, màn hình RCA hoặc cổng UART (để bật SSH).

Bước đầu tiên là tải xuống Raspbian. Tôi đã chọn phiên bản Lite, vì tôi sẽ sử dụng SSH thay vì màn hình..

Sau khi hoàn tất quá trình ghi hình ảnh, tôi đã lắp thẻ SD vào Pi của mình, cắm dây mạng LAN và cáp nguồn vào và sau một lúc, bộ định tuyến của tôi đã đăng ký thiết bị mới.

Bước 2: Bật SSH

Bật SSH
Bật SSH
Bật SSH
Bật SSH
Bật SSH
Bật SSH

SSH bị tắt theo mặc định. Tôi có thể sử dụng bộ chuyển đổi UART-USB hoặc chỉ kết nối màn hình để truy cập shell và bật SSH.

Sau khi khởi động lại, cuối cùng thì tôi cũng tham gia. Trước tiên, hãy cập nhật:

cập nhật sudo apt && sudo apt nâng cấp -y

Bây giờ, hãy kết nối thiết bị mới này với Đám mây.

Bước 3: Cài đặt Cloud4RPi

Cài đặt Cloud4RPi
Cài đặt Cloud4RPi

Tôi quyết định dùng thử nền tảng đám mây có tên Cloud4RPi, được thiết kế cho IoT.

Theo tài liệu, chúng tôi cần các gói sau để chạy nó:

sudo apt install git python python-pip -y

Thư viện máy khách có thể được cài đặt trong một lệnh duy nhất:

sudo pip cài đặt cloud4rpi

Bây giờ chúng ta cần một số mã mẫu để đảm bảo nó hoạt động.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python git clone https://gist.github.com/f8327a1ef09ceb1ef142fa68701270de.git e && mv e / Minim.py Minim.py && rmdir -re

Tôi quyết định chạy Minim.py, nhưng tôi không thích dữ liệu giả mạo. May mắn thay, tôi nhận thấy một cách dễ dàng để biến dữ liệu chẩn đoán thành hiện thực trong ví dụ này. Thêm một lần nhập nữa vào phần nhập:

từ nhập rpi *

Sau đó, xóa các chức năng cung cấp dữ liệu giả này (rpi.py xác định chúng ngay bây giờ):

def cpu_temp ():

return 70 def ip_address (): return '8.8.8.8' def host_name (): trả về 'tên máy' def os_name (): return 'osx'

Bây giờ chúng tôi cần một mã thông báo, cho phép Cloud4RPi liên kết các thiết bị với các tài khoản. Để có được một tài khoản, hãy tạo một tài khoản trên cloud4rpi.io và nhấn vào nút Thiết bị mới trên trang này. Thay thế chuỗi _YOUR_DEVICE_TOKEN_ trong tệp minimal.py bằng mã thông báo trên thiết bị của bạn và lưu tệp. Bây giờ chúng tôi đã sẵn sàng cho lần ra mắt đầu tiên.

python Minim.py

Mở trang thiết bị và kiểm tra xem dữ liệu có ở đó không.

Bây giờ, hãy chuyển sang dữ liệu trong thế giới thực.

Bước 4: Kết nối cảm biến

Kết nối cảm biến
Kết nối cảm biến

Chúng tôi sẽ cần:

  • Cảm biến độ ẩm DHT22 hoặc DHT11
  • Điện trở kéo lên (5-10 KΩ)
  • Dây điện

Cảm biến DHT22 đo nhiệt độ và độ ẩm đồng thời. Giao thức truyền thông không được chuẩn hóa, vì vậy chúng tôi không cần kích hoạt nó trong raspi-config - một chân GPIO đơn giản là quá đủ.

Để thu thập dữ liệu, tôi sẽ sử dụng thư viện tuyệt vời của Adafruit dành cho cảm biến DHT, nhưng nó có thể không hoạt động. Tôi đã từng phát hiện thấy mã có độ trễ liên tục kỳ lạ, mã này không hoạt động đối với phần cứng của tôi và sau hai năm, yêu cầu kéo của tôi vẫn đang chờ xử lý. Tôi cũng đã thay đổi hằng số phát hiện bảng vì Raspberry Pi 1 với BCM2835 của tôi đã bị phát hiện một cách đáng ngạc nhiên là Raspberry Pi 3. Tôi ước điều đó là sự thật… Vì vậy, tôi khuyên bạn nên sử dụng fork của mình. Nếu bạn gặp bất kỳ sự cố nào với nó, vui lòng dùng thử kho lưu trữ ban đầu, có thể nó phù hợp với ai đó, nhưng tôi không phải là một trong số họ.

git clone https://github.com/Himura2la/Adafruit_Python_DHT…. Adafruit_Python_DHT

Vì thư viện được viết bằng C, nó yêu cầu biên dịch, vì vậy bạn cần các gói build-Essential và python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Trong khi các gói đang cài đặt, hãy kết nối DHT22 như trong hình.

Và kiểm tra nó:

cd ~ python -c "nhập Adafruit_DHT dưới dạng d; in d.read_retry (d. DHT22, 4)"

Nếu bạn nhìn thấy thông tin như (39.20000076293945, 22.600000381469727), bạn nên biết rằng đây là độ ẩm tính bằng phần trăm và nhiệt độ tính bằng C.

Bây giờ, hãy tập hợp mọi thứ lại với nhau!

Bước 5: Gửi kết quả đọc của cảm biến tới đám mây

Gửi kết quả đọc của cảm biến tới đám mây
Gửi kết quả đọc của cảm biến tới đám mây

Tôi sẽ sử dụng Minim.py làm cơ sở và thêm tương tác DHT22 vào đó.

cd cloud4rpi-raspberrypi-python

cp Minim.py ~ / cloud_dht22.py cp rpi.py ~ / rpi.py cd vi cloud_dht22.py

Vì DHT22 trả về cả nhiệt độ và độ ẩm trong một cuộc gọi, tôi lưu trữ chúng trên toàn cầu và chỉ cập nhật một lần trong một yêu cầu, giả sử độ trễ giữa chúng là hơn 10 giây. Hãy xem xét đoạn mã sau, mã này lấy dữ liệu DHT22:

nhập Adafruit_DHT

temp, hum = Không, Không last_update = time.time () - 20 def update_data (): global last_update, hum, temp if time.time () - last_update> 10: hum, temp = Adafruit_DHT.read_retry (Adafruit_DHT. DHT22, 4) last_update = time.time () def get_t (): update_data () return round (temp, 2) if temp is not None else Không def get_h (): update_data () return round (hum, 2) if hum is not Không có gì khác Không

Chèn mã này sau các lần nhập hiện có và chỉnh sửa phần biến để nó sử dụng các chức năng mới:

biến = {

'DHT22 Temp': {'type': 'numeric', 'bind': get_t}, 'DHT22 Humidity': {'type': 'numeric', 'bind': get_h}, 'CPU Temp': {'type ':' numeric ',' bind ': cpu_temp}}

Nhấn nút màu đỏ để bắt đầu truyền dữ liệu:

python cloud_dht22.py

Sau đó, bạn có thể kiểm tra trang thiết bị.

Bạn có thể để nguyên như vậy, nhưng tôi thích có dịch vụ cho mọi thứ hơn. Điều này đảm bảo rằng tập lệnh luôn chạy. Tạo một dịch vụ với tập lệnh hoàn toàn tự động:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s cloud_dht22.py

Bắt đầu dịch vụ:

khởi động dịch vụ sudo cloud4rpi

Và kiểm tra nó:

pi @ raspberrypi: ~ $ sudo dịch vụ cloud4rpi trạng thái -l

● cloud4rpi.service - Cloud4RPi daemon đã tải: đã tải (/lib/systemd/system/cloud4rpi.service; đã bật) Đang hoạt động: hoạt động (đang chạy) kể từ T4 2017-05-17 20:22:48 UTC; 1 phút trước PID chính: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 / usr / bin / python /home/pi/cloud_dht22.pyMay 17 20:22:51 raspberrypi python [560]: Xuất bản iot -hub / messages: {'type': 'config', 'ts': '2017-05-17T20… y'}]} Ngày 17 tháng 5 20:22:53 raspberrypi python [560]: Xuất bản iot-hub / messages: {'type': 'data', 'ts': '2017-05-17T20: 2… 40'}} Ngày 17 tháng 5 20:22:53 raspberrypi python [560]: Xuất bản iot-hub / messages: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Nếu mọi thứ hoạt động như mong đợi, chúng tôi có thể tiếp tục và sử dụng các khả năng của nền tảng Cloud4RPi để thao tác với dữ liệu.

Bước 6: Biểu đồ và Báo động

Biểu đồ và Báo động
Biểu đồ và Báo động
Biểu đồ và Báo động
Biểu đồ và Báo động
Biểu đồ và Báo động
Biểu đồ và Báo động

Trước hết, hãy vẽ biểu đồ của các biến để xem chúng thay đổi như thế nào. Điều này có thể được thực hiện bằng cách thêm Bảng điều khiển mới và đưa các biểu đồ cần thiết vào đó.

Một điều khác mà chúng ta có thể làm ở đây là đặt Cảnh báo. Tính năng này cho phép bạn định cấu hình phạm vi an toàn cho một biến. Ngay sau khi phạm vi vượt quá, nó sẽ gửi một thông báo qua email. Trên trang chỉnh sửa Bảng điều khiển, bạn có thể chuyển sang Cảnh báo và thiết lập một.

Ngay sau đó, độ ẩm trong phòng của tôi bắt đầu giảm nhanh chóng mà không có bất kỳ lý do đáng chú ý nào và chuông báo động ngay sau đó.

Bạn có thể sử dụng Cloud4RPi miễn phí với bất kỳ phần cứng nào có thể thực thi Python. Đối với tôi, bây giờ tôi luôn biết khi nào nên bật máy làm ẩm không khí và thậm chí tôi có thể kết nối nó với một rơ le để điều khiển từ xa thông qua Cloud4RPi. Tôi đã chuẩn bị cho cái nóng! Chào mùa hè!

Đề xuất: