DS18B20 溫度感測


DS 系列是一款數位式高精度的溫度感測器, 數位化的好處是受距離影響較低, 使用 One-Wire 方式通訊, 這種方式只需要一個 IO 就可以串接多個感測器。 在市面上比較常看到2種型式, 一種是本章介絕的, 另一種是帶金屬探頭做液態量測的, 都是同一個晶片。

規格 : -55度 ~ 125度

 材料


  • DS18B20 X 2
  • 4.7K 電阻 X 1

 接線


DS18B20 資料腳在中間, 因為是 One-Wire 通訊, 所以串接多顆時將所有 資料腳 相接在一起並上接 4.7K 電阻再接 3V3 的正電。 這個範例中接了2顆 DS18B20 並接在 GPIO14 腳位, 你可以任選一個空閒的腳位即可。

 讀取


直接在網址列透過 WebAPI 就可以查看所有串接的資料

http://mywfXXXX.local/ds?pin=14
{"Count":2,"Devices":[{"Addr":"28FF4857A2150389","Chip":"DS18B20","C":28.25,"F":82.85},{"Addr":"28FFDAEE5015037D","Chip":"DS18B20","C":28.00,"F":82.40}]}

所以我們得到了2顆 DS 的溫度資料, 如果要明確指定讀取哪一顆時, 只需加上 index 指定。例如:讀取第1顆可這樣輸入:

http://mywfXXXX.local/ds?pin=14&index=1
{"C":28.31,"F":82.96}

 程式


範例 : 請點下圖打開線上實作範例

 配合事件控制繼電器開關


希望繼電器第1路(GPIO5)在 第1顆溫度 > 32 度時關閉(GPIO5=1), 第1顆溫度 < 30 度時打開(GPIO5=0), 可以下達以下2組事件定義 :

關閉 http://mywfXXXX.local/when/listen?eventType=3&eventValue=4:1:32^2,14:1&trigerType=1&trigerValue=5,1&timer=1000
打開 http://mywfXXXX.local/when/listen?eventType=3&eventValue=4:1:30^1,14:1&trigerType=1&trigerValue=5,0&timer=1000

同樣的, 如果看不懂 API 設定, 簡單一些可透過 WF8266R 物聯雲 APP 的事件系統中設定, 按新增加入 元件 類型的事件

在可用元件點選 DS 溫度, 指定腳位 PIN = 14, PIN2 = 1(第一顆) 並讓條件值顯示 DS 溫度 C > 32後再點 觸發方式繼續

我們目的是要將第1路繼電器關開, 所以觸發方式選擇 腳位, 將 5 號腳位設為 高電位

依照同樣的方式再建立一組事件 < 30 度時打開繼電器, 最後按下寫入 ROM 就完成了.