2015年12月26日 星期六

ESP8266 WIFI(4) -Soil_Humidity sensor



   接下來要介紹Arduino+ESP8266的一個應用範例,
從Arduino 讀取土壤濕度感測器的濕度以及POWER及ESP8266的電壓
透過ESP8266 wifi連線,把資料送上//http://api.thingspeak.com
Thingspeak 是一個可以免費註冊的網站,我們只要把資料送到該網站
即可在該網站監控我們所作的土壤濕度感測器的濕度及電壓.




Arduino 範例程式下載:
https://www.dropbox.com/s/ah21knzmc08ip5h/esp8266_soil.ino?dl=0




請先參閱之前的ESP8266介紹完成基本接線及測試,

ESP8266 Wifi (1)---Connected with PC.

http://arbu00.blogspot.tw/2015/12/esp8266-wifi-1-connected-with-pc.html

ESP8266 WIFI(2) -update firmware and modify baud rate.

http://arbu00.blogspot.tw/2015/12/esp8266-wifi2-update-firmware-and.html

ESP8266 WIFI(3) -Connected with Arduino

http://arbu00.blogspot.tw/2015/12/esp8266-wifi3-connected-with-arduino.html



首先接線方面新增加
從Arduino A0 pin接上土壤濕度感測器的A0 pin
土壤濕度感測器的GND 接到Arduino GND
土壤濕度感測器的VCC接到Arduino +5V

把供應系統的電源5V的電源也接到Arduino nano A7 pin
(這個不是很確定能不能這樣接?有時候好像會有不能連到PC 端USB的問題?)

另外把ESP8266 3.3V的電源也接到Arduino nano A1 pin
順便監控電壓

1.一開始我是用2S 18650 供電,過了一夜沒電之後資料無法再送出了


2.ESP9266電壓掉下去 就Error了.



3.所以我現在找了一個沒在用的手機USB充電器接上家用電源插座,幸運的是
   這個是可以輸出最大2A電流的,應該夠用了.
  首先將輸出的usb 接頭剪掉留下正極負極兩線,用線接到DC 降壓模組的來源,實際用電表量充
  電器輸出的DC 電壓約5.24V,所以也可以直接供給Arduino nano吃電,而ESP8266則是仍然由
LM2596S DC-DC 降壓電源模塊輸出的3.3V供電.這樣就不用擔心沒電了.




4.接著請到Thingspeak 網站申請一個帳號,步驟不難 ,申請帳號後create 一個channel ,每一個頻道可以有8個data呈現,我這裡只用了三個



5.API KEY是重點,我們必須記下這組key寫到我們的程式裡,這樣ESP8266透過網路才知道要把
data送到thingspeak哪一個頻道,所以這個[Write API  Key] 在程式裡必須換成自己申請的.




6.底下綠色框框那行是我們欲送資料給thingspeak頻道的格式
請將XXXXXXXXXXX換成你自己的API KEY




7.因為thingspeak是server端,所以我們將ESP8266設成Client端即可,
    底下綠色框框則是送data的指令格式
.   經過我自己的實驗每次送data時都需事先作AT+CIPSTART 的command 
   也就是藍色框框的code將ESP8266設成Client端.否則會error.




8. build 程式下載後實際執行畫面一開始我們也可以一邊用Arduino 的序列終端機去監控
指令執行得狀態.左邊的圖即是thingspeak的即時資料呈現.




9.從下圖綠色框框可以看出實際送給thingspeak的字串





10.底下在code裡的這一行&field1,&field2,&field3  ,即是對應到我們在thingspeak頻裡口選的三個data欄位 ,而 DATA_BAT0,DATA_0A,DATA_0B 則是我們從Arduino感測到值.
如果要增加資料欄位只要仿照下列格式增加即可.


cmd = GET + "&field1=" + DATA_BAT0 + "&field2=" +DATA_0A+ "&field3=" +DATA_0B +"\r\n";



11.本範例實際在thingspeak的實際running狀況:
http://184.106.153.149/channels/74502



加入阿布拉機的3D列印與機器人的FB粉絲團
https://www.facebook.com/arbu00/

Scan QRcode to join FB Fans.



4 則留言:

  1. 基本上直接用 8266 idle 時我量測大約 100mA (哭哭), Tx 動作時大約 130mA... 所以很耗電, 但是如果不吃 Arduino 的 3.3 V, 那麼大部分的電源應該都夠用... 如果要電池供久一點時間, 真的要進去看 8266 的 sleeping mode...

    為了省電, 我是把 ATmega 328 從 Arduino 上拔下來插在麵包板上, 這樣可以省大約 30mA (50mA==> 20mA) 加上 8266 大約就是 120mA ~ 150mA, 我用 PIR sensor 幾乎不耗電...

    土壤濕度器, 我在淘寶網買的, 沒兩天鐵質偵測部分就腐蝕掉了... 水土有這麼酸嗎? ^^

    回覆刪除
    回覆
    1. 謝謝你的分享~兩天就腐蝕了?不是號稱可以半年到一年?果然只是號稱。

      刪除
    2. 耗電方面,esp8266進入power down可以到10uA(但規格書上說5uA)

      刪除