網頁

2016年8月5日 星期五

Dashboard 溫度感測 3 + Arduion 實作

利用 Arduiono 實作溫度感測的記錄。並將它整合到之前所做的 Temperture Dashboard。
後來看到了一些資料,如果不想自己土炮畫曲線圖的話。可以利用 XivelyThingspeakYeelink 平台所提供的服務來實作。

[[ 實作記錄 ]]

(一) 準備需要的相關硬體零組件與開發軟體

  • 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)
  • 網路連接方式選擇
    • WiFi
    • 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 所偵測的即時溫度資訊。

相關資料:

沒有留言:

張貼留言