發表文章

目前顯示的是有「ESP8266」標籤的文章

ESP8266 + Arduino IDE 1.6.5 + DHT22 + SHT20 溫濕度感應器

圖片
寫到這主要是作記錄了, 因為合併程式很快就測成功了, 整個程式如下: #include <Wire.h> #include <DHT.h> #include "SparkFunHTU21D.h" #include <ESP8266WiFi.h> #define DHTPIN 4 #define DHTTYPE DHT22 // Wifi definition const char* ssid     = "Buffalo9F-2"; const char* password = "0227057373"; const char* server = "184.106.153.149"; String apiKey = "P1UO6DM0KA8X79SQ"; WiFiClient client; //Create an instance of the object HTU21D myHumidity; DHT dht(DHTPIN, DHTTYPE); void reConnectAP() {   int i = 0;   WiFi.begin(ssid, password);   while ((WiFi.status() != WL_CONNECTED) && (i < 100)) {     delay(500);     Serial.print(".");     i = i++;   }   if (WiFi.status() == WL_CONNECTED) {     Serial.println("");     Serial.println("WiFi connected");     Serial.println("IP address: ");     Serial.println(WiFi.localIP());     myHumidity.begin();   ...

ESP8266 + Arduino IDE 1.6.5 + DHT22 溫濕度感應器

圖片
原本 DHT22 和 ESP8266 已用 Nodemcu 的 LUA 很輕易的連上過,但是這次要使用的開環境是 Arduino IDE 1.6.5,原本想應該花個10幾分鐘就好了,結果 - 殘念 ,網路上下載 DHT-sensor-library,想說 測試一下就 OK了,但是一直出現 Error -  In function __ieee754_asin , Error的內容有一長串,最後發現網路上的網友有很多也有相同問題,詳系請看討論區 -  解決方法的討論區 。 解決的方法是  https://github.com/esp8266/Arduino/issues/612#issuecomment-129148582  這個內容是 下載新的 libm.a 取代原有 C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\lib 下的 libm.a。 置換過 libm.a 後 ,一切就正常了。 我用的 DHT22 如下圖 : DHT22 執行測試的結果如下: DHT22 測試 再來就是要把 DHT22 及 SHT20 併在同一顆 ESP8266 上。

ESP8266 + Arduino IDE 1.6.5 + SHT20 溫濕度感應器 - 連上 ThingSpeak

圖片
ESP8266 要連上ThingSpeak 網路上的文章應該很多了,當然首先是要註冊一個 ThingSpeak 帳號,申請帳號請前往  https://thingspeak.com / 。 接著要 New Channel: ThingSpeak New Channel 設定 Name 及 Field1 及 Field2,在我的測試中 Field1 是 "Tempature" 及 Field2 是 "Humidity",接著在 Arduino IDE include library "ESP8266WiFi",首先當然是要先連上區域網路上的 AP。 WiFi.begin(ssid, password) ; 其中 SSID 及 Password 是區域網路AP 的 ID 及 Password, 並記錄下 Thingspeak 所產生的 API key,程式碼大概如下: Serial.print("Sending data to thingspeak.com"); if (client.connect(server, 80)) { // "184.106.153.149" or api.thingspeak.com String postStr = apiKey; postStr += "&field1="; postStr += String(temp); postStr += "&field2="; postStr += String(humd); postStr += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: ...

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 溫濕度傳感器 執行結果: