Slide 1

Slide 1 text

1 WeatherPi: 一個 Raspberry Pi 和 Python 的微型氣象站專案 sosorry 2021/10/02 @PyCon Taiwan 2021

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

3 ● Raspberry Pi 官方經銷商 ● 專注 Raspberry Pi 應用與推廣 , 舉辦社群活動 關於我們

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

5 ● 氣象監測 ● WeatherPi 專案介紹 ● WeatherPi 流程 ● 真實世界的挑戰 ● 結語 大綱

Slide 6

Slide 6 text

台灣以農立國 https://nspp.mofa.gov.tw/nspp/news.php?post=182906

Slide 7

Slide 7 text

但農民看天吃飯 https://www.agriharvest.tw/archives/18330

Slide 8

Slide 8 text

現況 : 全國自動氣象站 https://www.rti.org.tw/news/view/id/2105966

Slide 9

Slide 9 text

https://memes.tw/wtf/385573

Slide 10

Slide 10 text

● 溫度 ( 日平均 / 最高 / 最低 ) ● 風速 / 風向 ( 日最大十分鐘 / 最大瞬風 ) ● 雨量 ( 日雨量 / 前一分鐘 / 前十分鐘 ) ● 日照 ( 強度 / 時數 ) ● 相對濕度 ● 氣壓 什麼是氣象資訊? https://www.jbatrust.org/how-we-help/weather-station/

Slide 11

Slide 11 text

相關專案介紹

Slide 12

Slide 12 text

LASS 空氣盒子專案 https://www.slideshare.net/LingJyhChen1/for-80178578

Slide 13

Slide 13 text

● https://pm25.lass-net.org/GIS/voronoi/ ● https://pm25.lass-net.org/GIS/IDW/ ● https://v5.airmap.g0v.tw/#/map 提供不同角度的視覺化

Slide 14

Slide 14 text

阿龜微氣候天眼通 https://meet.bnext.com.tw/articles/view/44585

Slide 15

Slide 15 text

整合軟體 / 硬體 / 數據分析 https://www.ithome.com.tw/news/116184

Slide 16

Slide 16 text

已經有類似專案 , 為什麼還要再做?

Slide 17

Slide 17 text

17 過去我們做的專案

Slide 18

Slide 18 text

( 本來 ) 和花蓮大學老師合作推廣

Slide 19

Slide 19 text

● 使用 Raspberry Pi 加 Python 的開源專案 ● 可長時間測量溫濕度 , 風速 , 風向 , 雨量等氣象資訊 WeatherPi 專案

Slide 20

Slide 20 text

● 信用卡大小般的電腦 Raspberry Pi 是什麼 ? http://www.flickr.com/photos/fotero/7697063016/

Slide 21

Slide 21 text

David Braben Eben Upton Robert Mullins Alan Mycroft Pete Lomas Jack Lang Liz

Slide 22

Slide 22 text

Raspberry Pi Family https://infosec.exchange/@slh/102368284825610438 最早量產 規格最好 最穩定

Slide 23

Slide 23 text

WeatherPi 所需硬體 太陽能板 防水盒 GPS 太陽能充電控制板 + 充電電池 LoRa Pi4 INA219 母母排線 風速 / 風向 / 雨量氣象站

Slide 24

Slide 24 text

WeatherPi 專案架構 農田 / 果園 家中 / 閘道器

Slide 25

Slide 25 text

如何測量氣象資訊?

Slide 26

Slide 26 text

微型氣象站 https://projects.raspberrypi.org/en/projects/build-your-own-weather-station 測量風向 測量雨量 測量風速 測量溫濕度

Slide 27

Slide 27 text

● 計算連接到風速杯的電磁開關被觸發的頻率 ● 風速 = 距離 / 時間 ● 每秒旋轉一圈應等於 2.4 公里 / 小時 ( 半徑 9cm) 風速測量原理 https://projects.raspberrypi.org/en/projects/build-your-own-weather-station/5 電磁開關

Slide 28

Slide 28 text

● 根據分壓電路計算不同方向的電阻值 , 再轉換成 16 種可能的角度 風向測量原理 https://projects.raspberrypi.org/en/projects/build-your-own-weather-station/7

Slide 29

Slide 29 text

● 當累積雨量達 0.2794 mm 將會傾倒水桶並觸發 雨量測量原理 https://projects.raspberrypi.org/en/projects/build-your-own-weather-station/8

Slide 30

Slide 30 text

● 建構於 Plotly.js, React.js 和 Flask 的網頁框架 ● 可快速建立高互動性的圖表和儀表板 Dash 整合式儀表板 http://bit.ly/3FlpYXR

Slide 31

Slide 31 text

收集好一切資訊 , 該傳送出去了

Slide 32

Slide 32 text

這些場景需要哪種無線技術? https://www.lora-alliance.org/portals/0/documents/whitepapers/LoRa-Alliance-Whitepaper_NBIoT_vs_LoRa.pdf 智慧電錶 農業監控 寵物追蹤 智慧城市

Slide 33

Slide 33 text

速度與距離的考量 https://www.slideshare.net/PeterREgli/lpwan 數公里以上 數百公尺到一公里 數十公尺 >10Mbps 100Kbps ~ 10Mbps <10Kbps

Slide 34

Slide 34 text

不同無線傳輸技術的特點 https://www.slideshare.net/PeterREgli/lpwan

Slide 35

Slide 35 text

● LPWAN(Low Power Wide Area Network) 低功耗廣域網路 http://www.techbang.com/posts/49656

Slide 36

Slide 36 text

從 OSI 模型看 LPWAN https://www.slideshare.net/infiswift/lpwan-for-iot-62591541

Slide 37

Slide 37 text

● 法國公司 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)

Slide 38

Slide 38 text

● 從捷運古亭站到捷運南勢角站 (~5KM) 實測距離 興南路南勢派出所 和平西路 & 牯嶺街口 SNR=-11

Slide 39

Slide 39 text

真實場域的挑戰

Slide 40

Slide 40 text

● Raspberry Pi 功耗要小 ● 太陽能板要大 ● 電池電容量要大 能長時間使用的關鍵 , 輸入 > 輸出

Slide 41

Slide 41 text

● 利用分壓電路計算流經負載的直流電流和電壓差 ● 可量測 0~±8A, 精度為 1mA ● 功耗 =( 電源 - 負載的電壓差 )*( 電流 ) 使用 INA219 測量功耗 https://wiki.dfrobot.com/Gravity%3A%20I2C%20Digital%20Wattmeter%20SKU%3A%20SEN0291

Slide 42

Slide 42 text

使用 INA219 監控充放電狀況 http://bit.ly/3zrIz08 測量太陽能板的充電功率 測量充電電池的輸出功率 太陽能板 充電電池

Slide 43

Slide 43 text

● 選擇適合型號的 Raspberry Pi ● 安裝 Raspberry Pi OS Lite ● 將 CPU 和 RAM 降頻 + 關掉不必要的週邊 ● 只安裝必要程式 + 只啟動必要的服務 ● 將收集氣象資料的程式執行頻率降低 如何省電?

Slide 44

Slide 44 text

Raspberry Pi 功耗比較 https://raspi.tv/2019/how-much-power-does-the-pi4b-use-power-measurements

Slide 45

Slide 45 text

太陽能板 + 電池的選擇

Slide 46

Slide 46 text

號稱可以使用的設備 https://www.rs-online.com/designspark/solar-powering-your-raspberry-pi-cn 太陽能板 :1.25W 充電電池 :6V

Slide 47

Slide 47 text

最初買來測試的設備 https://www.waveshare.com/solar-power-manager-b.htm 太陽能板 :10W 充電電池 :3.7V

Slide 48

Slide 48 text

● 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 每日所需功耗

Slide 49

Slide 49 text

● 最大輸出功率 = 工作電壓 x 工作電流 ● 實際輸出功率≅ 40%~90% 之間 ● 建議選擇功率 50W 以上 太陽能板的選用與計算 太陽能 單元: 單晶 15.6x15.6cm 峰值功率: 50W 工作電壓: 18V 峰值電流 : 2.86A 開路電壓: 22V 短路電流: 3.23A 轉換效率: 21.6% 重 量: 5Kg

Slide 50

Slide 50 text

● 電池容量 (Ah) = 放電電流 (A) × 持續時間 (h) ● 8.4Ah(20HR) 可用 120mA 持續放電 70hrs 以上 電池的選用與計算

Slide 51

Slide 51 text

能長時間使用的設備 太陽能板 :50W 充電電池 :12V

Slide 52

Slide 52 text

使用 APRS 轉接板讀取天氣資訊 雨量 風速風向 PMS5003 UART 輸出 SHT 溫濕度感測器 公制 / 英制 Baud Rate RJ11 輸出

Slide 53

Slide 53 text

● 每 0.5 秒輸出 80 個 Byte, 包括換行符號 (OD,OA) ● 每個欄位由英文 + 數字組成 ● 範例 : ● A4095B000C0000D0000E0000F0000G0000H00 00I0000J0000K0000L0200M611N10066O.....*53 ● A4095: 風向測量 AD 值 (0-4095) ● B000: 風向角速度 (16 方向 ) ● C0000: 即時風速頻率 (Hz) ● D0000: 即時風速 (0.1m/s) ● *53: 循環冗餘校驗 (CRC) APRS 通訊協定

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

可介接自動位置回報系統 (APRS) https://aprs.fi/

Slide 58

Slide 58 text

資料分析和視覺化 https://www.beehivedt.com/

Slide 59

Slide 59 text

開發過程一景 / 感謝雷格協助

Slide 60

Slide 60 text

60 Raspberry Pi Rocks the World Thanks