Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WeatherPi:一個 Raspberry Pi 和 Python 的微型氣象站專案

WeatherPi:一個 Raspberry Pi 和 Python 的微型氣象站專案

這是我們在 PyCon Taiwan 2021 的分享,主要介紹 WeatherPi 微型氣象站的專案。
https://tw.pycon.org/2021/zh-hant/conference/talk/188

這專案的硬體使用 Raspberry Pi + 氣象站套件 + APRS 轉接板讀取資訊,再搭配 LoRa 做無線傳輸。並且因應戶外的電力需求,需外接太陽能板和機車電瓶。

軟體方面使用 Python 開發,透過 LoRa 將氣象資料和地理座標傳輸到閘道器後,再使用 MQTT 將資料傳送到雲端 Broker,最後以地圖方式視覺化氣象資料。

台灣樹莓派

March 19, 2023
Tweet

More Decks by 台灣樹莓派

Other Decks in Technology

Transcript

  1. 姓名標示 — 非商業性 — 相同方式分享 CC (Creative Commons) 姓名標示 —

    你必須給予 適當表彰、提供指向本授權 條款的連結,以及 指出(本作品的原始版本)是否已 被變更。你可以任何合理方式為前述表彰,但不得以 任何方式暗示授權人為你或你的使用方式背書。 非商業性 — 你不得將本素材進行商業目的之使 用。 相同方式分享 — 若你重混、轉換本素材,或依本 素材建立新素材,你必須依本素材的授權條款來 散布你的貢獻物。
  2. • 溫度 ( 日平均 / 最高 / 最低 ) •

    風速 / 風向 ( 日最大十分鐘 / 最大瞬風 ) • 雨量 ( 日雨量 / 前一分鐘 / 前十分鐘 ) • 日照 ( 強度 / 時數 ) • 相對濕度 • 氣壓 什麼是氣象資訊? https://www.jbatrust.org/how-we-help/weather-station/
  3. • 使用 Raspberry Pi 加 Python 的開源專案 • 可長時間測量溫濕度 ,

    風速 , 風向 , 雨量等氣象資訊 WeatherPi 專案
  4. • 計算連接到風速杯的電磁開關被觸發的頻率 • 風速 = 距離 / 時間 • 每秒旋轉一圈應等於

    2.4 公里 / 小時 ( 半徑 9cm) 風速測量原理 https://projects.raspberrypi.org/en/projects/build-your-own-weather-station/5 電磁開關
  5. • 法國公司 Cycleo 設計 ,Semtech 在 2012 收購 • LoRa

    是實體層 (PHY) 的調變技術 • 採用 CSS(Chirp Spread Spectrum) 調變技術 • 常用頻段 :433/470~510/868/900-925MHz • 低功耗 , 低資料率 , 長距離 , 低價格 • 低功耗 :RX<10mA, Sleep<200nA • 長距離 :500m 到 15Km • 靈敏度 : 低於 -137 dBm • 資料率 :0.3kbps 到 50kbps LoRa(Long Range)
  6. • 利用分壓電路計算流經負載的直流電流和電壓差 • 可量測 0~±8A, 精度為 1mA • 功耗 =(

    電源 - 負載的電壓差 )*( 電流 ) 使用 INA219 測量功耗 https://wiki.dfrobot.com/Gravity%3A%20I2C%20Digital%20Wattmeter%20SKU%3A%20SEN0291
  7. • 選擇適合型號的 Raspberry Pi • 安裝 Raspberry Pi OS Lite

    • 將 CPU 和 RAM 降頻 + 關掉不必要的週邊 • 只安裝必要程式 + 只啟動必要的服務 • 將收集氣象資料的程式執行頻率降低 如何省電?
  8. • Pi4 每日所需功耗= 電壓 x 電流 x 小時 = 5V

    x 800mA x 24hrs = 96Wh • 用 Pi Zero 功耗 = 5V x 120mA x24hrs = 14.4Wh • 50W 太陽能板充電功率 = 電壓 x 電流 x 小時 = 14V x 900mA x 6hrs = 75.6Wh 計算 Raspberry Pi 每日所需功耗
  9. • 最大輸出功率 = 工作電壓 x 工作電流 • 實際輸出功率≅ 40%~90% 之間

    • 建議選擇功率 50W 以上 太陽能板的選用與計算 太陽能 單元: 單晶 15.6x15.6cm 峰值功率: 50W 工作電壓: 18V 峰值電流 : 2.86A 開路電壓: 22V 短路電流: 3.23A 轉換效率: 21.6% 重 量: 5Kg
  10. • 電池容量 (Ah) = 放電電流 (A) × 持續時間 (h) •

    8.4Ah(20HR) 可用 120mA 持續放電 70hrs 以上 電池的選用與計算
  11. • 每 0.5 秒輸出 80 個 Byte, 包括換行符號 (OD,OA) •

    每個欄位由英文 + 數字組成 • 範例 : • A4095B000C0000D0000E0000F0000G0000H00 00I0000J0000K0000L0200M611N10066O.....*53 • A4095: 風向測量 AD 值 (0-4095) • B000: 風向角速度 (16 方向 ) • C0000: 即時風速頻率 (Hz) • D0000: 即時風速 (0.1m/s) • *53: 循環冗餘校驗 (CRC) APRS 通訊協定
  12. • 使用 Dash vs. 不使用 Dash • 可降低使用功耗 , 從

    280mA 到 200mA • 使用 HTTP RESTFul vs. 使用 MQTT • 可降低網路用量和使用功耗 • 使用 GPIO 觸發 vs. 使用 pySerial • 可降低因為觸發可能造成的計算錯誤 • 使用 pySerial vs. 使用 pigpiod • 可同時接多組 UART, 例如 GPS 和 APRS Python 套件的選擇題和答案
  13. • 使用 Dash vs. 不使用 Dash( 搭配 Pi Zero) •

    可降低使用功耗 , 從 280mA 到 200mA • 使用 HTTP RESTFul vs. 使用 MQTT • 可降低網路用量和使用功耗 • 使用 GPIO 觸發 vs. 使用 pySerial • 可降低因為觸發可能造成的計算錯誤 • 使用 pySerial vs. 使用 pigpiod • 可同時接多組 UART, 例如 GPS 和 APRS Python 套件的選擇題和答案
  14. • 陽光 : 光強度 , 輻射量 , 紫外線 • 空氣

    : 大氣溫溼度 , 氣壓 , 風速 , 風向 • 水 : 降雨量 • 土壤 : 土壤溫溼度 , EC( 電導度 ), pH • 作物 : 葉面溫溼度 , 葉綠素 未來將增加更多農業觀察資訊 https://mopcon.org/2017/speakerDetail.php?speaker=25