利用 Arduiono 實作溫度感測的記錄。並將它整合到之前所做的 Temperture Dashboard。
後來看到了一些資料,如果不想自己土炮畫曲線圖的話。可以利用
Xively、
Thingspeak、
Yeelink 平台所提供的服務來實作。
[[ 實作記錄 ]]
(一) 準備需要的相關硬體零組件與開發軟體
- Arduino Uno Rev3
- Arduino Ethernet shield 2 with Poe
- DHT22 (AM2302) or DHT11 Sensor
- Arduino IDE
- 杜邦線 (公母)
(二) 組合 Ethernet Shield 與 Arduino Uno
(三) 下載需要的 library
(四) 將下載的 DHT library 匯入到 Arduino IDE 內
- 方法如下
- 利用 IDE 的匯入程式庫的功能將下載的壓縮檔匯入即可
- 直接將壓縮檔解壓縮,將解壓縮的目錄直接複製到 IDE 軟體的 libraries 目錄內
- 在實做時,沒有看到可 github 有直接下載 zip 的功能。這也許與我沒有做註冊有關。我的做法是在 arduino 的 libraries 目錄內。直接新增 dht 目錄。再將 dht.cpp & dht.h 在github 的內容直接貼到所新增的 dht.cpp & dht.h 檔案內。
- 以上不管那種做法,只要有打開 Arduino IDE時。需要做將 Arduino IDE 關閉的動作,讓它再重新執行一次。
(五) 待確認問題
- 供電方式選擇
- 變壓器
- USB 供電
- 電池
- PoE(Power over Ethernet)
- 網路連接方式選擇
主要是確認做的方向。針對
採用的網路與供電的機制做討論。最後決定採用 Arduino Ethernet Shield PoE ,透過網路線(PoE)的方式來對 Arduino Deviecs做供電。已確認此方案是可行的,實際測試如圖。105.08.25
(六) 利用 Arduino IDE 寫程式
- 程式語法參考
- WebServer Script + DHT Sensor
- 利用 IDE 內的範例直接修改 (UI 內的範例 => Ethernet =>WebServer),就會出現基本的範例。再加入 DHT 相關的指令稿。網路指令搞的相關細節可參考 Ethernet Libray。
- 補充:
- 同網域內要有多個 Arduino devices 需注意 MAC Address 的唯一性。拿範例的最後一段數值修改即可。例如:0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED。改成 ox E0 , oxE1 ,oxE2 .....oxEF
- Arduion 有內建了一個 20K Ω 的上拉(Pull-up)電阻,這不是很確定在程式內宣告 pinMode("所接的 pin 編號", INPUT_PULLUP); 就可以不用再額外接 pull-up resistor。不過後來找有內建電阻的 DHT Sensor 來使用。這部份也就沒做測試了。
- 程式部份處理完成後。利用 Arduino IDE 的驗證功能檢查過後,再做上傳(表示將編譯好後的程試寫入到微處理器的記憶體)的動作
(七) DHT22 的串接方式
(八) 實作成品
(九) 結合之前所做的前端介面
主機內設定工作排程,每一小時會自動的向 arduion device 抓取溫度資料。這樣就不需要在透過人工的方式更新該資訊。
(十) 新加入的功能
- 主動通報模組:主動的偵測分散在各場所的 arduino devices 的狀態,有狀況可主動通知相關人員前往處理。
- 記錄歷程資料:採用 SQLite DB 來記錄
- Open Data:開放此記錄資訊。提供有興趣的使用者使用。
- QR Code:裝置上提供直接查詢該 arduino device 所偵測的即時溫度資訊。
相關資料: