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,最後以地圖方式視覺化氣象資料。

Avatar for 台灣樹莓派

台灣樹莓派

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