2015年10月18日 星期日

ESP8266 + Arduino IDE 1.6.5 + SHT20 溫濕度感應器 - 讀到正確資料

原本認為是一個輕鬆的連線測試,結果測了3個晚上。

朋友的需求是在ESP8266 開發板上使用SHT20 溫濕度感應器連線到 Thingspeak,應該是很簡單,一開始是用 Nodemcu LUA 來開發,因為 Nodemcu LUA 上有現成 I2C 的程式庫,但是使用 I2C 的程式庫可以用 掃瞄的方式,掃瞄到 SHT20 的代碼 0x40 但是在讀取溫濕度時都只能讀到錯誤的數字,從網路ESP8266 Community Forum 的討論區發現,很多人都有同樣的問題,使用 Nodemcu LUA 的 i2c 似乎是無法讀取 SHT20 的資料,須改用 Arduino 的 開發環境來作。

幫原有 Arduio 1.6.5 IDE 加上 ESP8266 的環境可從 Github esp8266 / Arduino 上取得,也在網路上找到 SHT2x 的 程式庫,但是一樣無法讀取,應該是與 ESP8266並不完全相容,最後從討論區發現可用的是 SPARKFN HTU21D Humidity Sensor Hookup Guide,這個 程式庫不是我寫的,所以請自行前往下載。

根據討論區的文章,直接使用程式庫還是不行,請看這一篇討論區說明 http://www.esp8266.com/viewtopic.php?f=32&t=4078&start=15#p24173,要把 原來SparkFunHTU21D.cpp 程式庫中 delay(55) 改程 delay(85) 及 wire.begin 改成 wire.begin(0,2),總算成功抓到溫度及相對濕度。

ESP8266 接 SHT20
我的防水sensor 是從 淘寶網上購買的:

SHT20 溫濕度傳感器
執行結果: