Xây dựng trạm thời tiết bằng Raspberry Pi cũ
Tin tức chung·Dev.to·1 lượt xem

Xây dựng trạm thời tiết bằng Raspberry Pi cũ

Building a Weather Station Using an Old Raspberry Pi

AI Summary

Dự án này hướng dẫn cách "build" một trạm thời tiết tại nhà từ một chiếc Raspberry Pi 2 cũ và Pimoroni Weather HAT. Weather HAT kết nối với Pi qua cổng GPIO một cách rất tiện lợi. Những điểm "key takeaway" dành cho developer có thể kể đến: * **Calibration là quan trọng:** Cần căn chỉnh sensor thật kỹ. Đặc biệt, nhiệt độ CPU tỏa ra có thể ảnh hưởng đến sensor đo nhiệt độ môi trường. Bài viết đề xuất dùng phương pháp "linear regression" để hiệu chỉnh, so sánh với một nguồn đo nhiệt độ bên ngoài đáng tin cậy. * **Thách thức thực tế về Housing:** Làm sao để bảo vệ thiết bị khỏi môi trường bên ngoài (mưa, bụi, nhiệt độ cao...) mà vẫn đảm bảo thông thoáng cho sensor hoạt động chính xác là một bài toán. Bài viết gợi ý các giải pháp "DIY enclosure" (vỏ hộp tự chế).

Từ lâu, tôi đã muốn xây một trạm thời tiết ở nhà vì tôi thích khí tượng học và vì niềm vui khi làm việc đó. Vì vậy, tôi quyết định ngừng chờ đợi và cứ làm điều đó :-) Kết nối các cảm biến tôi muốn...

Từ lâu, tôi đã muốn xây một trạm thời tiết ở nhà vì tôi thích khí tượng học và vì niềm vui khi làm việc đó. Vì vậy, tôi quyết định ngừng chờ đợi và cứ làm đi :-)

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

Tôi muốn một thứ gì đó dễ dàng gắn vào Pi cũ của mình, Raspberry Pi 2 model B+, cho phép tôi dễ dàng đọc dữ liệu từ các cảm biến. Mũ thời tiết của Pimoron hoàn toàn phù hợp với những gì tôi muốn:

  • Chỉ cần kết nối nó với giao diện GPIO
  • Tải xuống và cài đặt thư viện Python do Pimoroni cung cấp

Pimoroni có hướng dẫn hữu ích giúp bạn xây dựng và giải quyết một số vấn đề thường gặp. Ngoài ra còn có các bài viết khác từ cộng đồng thực sự hữu ích.

Một điểm hay của chiếc HAT thời tiết này là có thể kết nối máy đo gió và máy đo mưa. Ban công của tôi không có nhiều không gian nên tôi không có những cảm biến này, nhưng đó là thứ mà tôi muốn có trong tương lai.

Có một bộ ví dụ hay để đọc dữ liệu từ cảm biến và hiển thị dữ liệu đó trong GitHub của Weather HAT.

Những thách thức

Nhưng nó có một nhược điểm quan trọng là nhiệt độ cảm biến bị ảnh hưởng bởi CPU của Pi vì nó ở rất gần bo mạch. Vì vậy cần phải bù nhiệt độ, việc này không đơn giản như áp dụng offset cố định như đã nêu trong hướng dẫn của Pimoroni. Thay vào đó, tôi cố gắng áp dụng hồi quy tuyến tính bằng cách lấy nhiệt độ từ một trạm thời tiết khác, may mắn thay, ở gần nhà tôi.

Ngoài việc lắp đặt Mũ thời tiết và đọc dữ liệu từ các cảm biến, thách thức quan trọng nhất là tìm vị trí tốt nhất cho nó trên ban công và cách cách ly nó với các điều kiện bên ngoài, đồng thời đảm bảo đủ thông gió để tránh tích tụ nhiệt bên trong.

Bảo vệ trạm thời tiết khỏi môi trường

Sau khi cài đặt Weather HAT, tôi đã sử dụng các vật liệu sau để đặt trạm trên ban công:

  • Hộp cơm trưa bằng nhựa trong suốt
  • Vỏ đế cho Pi
  • Một số chất kết dính bảo vệ đồ nội thất
  • Một ít keo

Có thể hộp cơm trưa không phải là giải pháp tốt nhất nhưng sử dụng Màn hình Stevenson có thể hơi quá mức cần thiết.

Tôi đã dùng miếng bảo vệ đồ đạc để tách Pi ra khỏi mặt sau của hộp cơm trưa một chút, bằng cách này, cảm biến sẽ có thêm khoảng cách với tường.

Đồng thời mình khoét một số lỗ trên hộp cơm để không khí lưu thông vào bên trong làm mát Pi. Tôi đã tạo một số lỗ ở phía bên nơi đặt cảm biến và những lỗ khác ở bên hông.

The holes in the lunchbox where the weather station is

Vài ngày sau tôi nhận thấy rằng, do có những lỗ hổng đó nên vào những ngày có gió, cảm biến nhiệt độ đo được có thể cho giá trị thấp hơn thực tế một chút. Nhưng tôi thích điều này hơn là có Pi mà không có hệ thống làm mát không khí này. Mình không có vật liệu hoàn hảo nên cũng không thể mong có được biện pháp hoàn hảo.

Hiệu chỉnh cảm biến nhiệt độ

Như tôi đã đề cập ở trên, số đọc của cảm biến nhiệt độ cần phải được bù vì nó ở gần CPU của Pi.

Thư viện Pimoroni Python cho Weather HAT có một thuộc tính để đặt giá trị bù được áp dụng cho phép đo nhiệt độ của thiết bị. Vì vậy, tôi đã thử so sánh giá trị cảm biến Weather HAT với nhiệt độ do trạm thời tiết gần đó cung cấp.

Điều tôi nhận thấy là giá trị chênh lệch cần áp dụng không thể là giá trị cố định. Chênh lệch giữa nhiệt độ thực và giá trị do Weather HAT cung cấp luôn nằm trong khoảng từ 12° đến 16°.

Để giải quyết vấn đề này, tôi tạo một tập lệnh nhỏ để lấy dữ liệu nhiệt độ từ cả hai trạm cùng một lúc. Với chuỗi dữ liệu này, tôi có thể tạo mô hình hồi quy tuyến tính để tính toán độ lệch áp dụng cho việc đọc nhiệt độ thiết bị của HAT.

Nó vẫn chưa hoàn hảo. Khi nhiệt độ thiết bị gần 30°, mức chênh lệch khá cao, nhưng hiện tại, nó có vẻ tốt hơn một chút so với việc áp dụng mức bù cố định như bạn có thể thấy bên dưới.

A line graph showing the device temperature, the actual temperature and the calculated temperature applying the offset obtained from the linear regression

Trong bài viết tiếp theo, tôi sẽ mô tả quá trình học Python của mình khi triển khai phần mềm để thu thập các thước đo, hiển thị và gửi nó đến hệ thống bên ngoài.

Tác giả: Fernando Fornieles

#raspberrypi#sideprojects#learning#community