アナログ 水分センサー試してみました。
#
esp8266で使えそうな。3V3で動作可能な3本足の水分センサーを
eBayで探して、購入してみました。
国内の通販ですと、500- 1000円程度の部品は、ありそうでしたが
海外品は安価品がありました。輸送は時間がかかりましたが
今回は約14日程で 国内到着でした。
前回のI2C型ADC MCP3425経由で、制御したいと思います。
[仕様]
Supply voltage: 3.3V or 5V
Operating Current: less than 20mA
# 部品
Moisture Sensor
5Pcs Soil Humidity Hygrometer Sensor Module Moisture Detection For Arduino AVR
[価格]
5Pcs total : 2.79 USD
[送料込]
5Pcs total : 4.28 USD
1個当たり= 0.85 USD (約90円弱 )
# 活用編
ベランダ野菜( 二十日大根/ ラディッシュ )の土壌に
差し込んで、水分モニタ化してみました。
水やりの判定、時期をクラウド側画面数値で判定できれば。。
と考えて試してみます。
# 配線
ADC 前回を同じです。
S端子(SIG)は、ADCのVIN(+) に結線
前回と同じ電池駆動のesp8266基板を使い、
ミニブレ(Bread Bord)に、ADC搭載+ センサー配線
センサーまでの、電線は1m 程長めにカットし、
室内IoT機器から、ベランダ配置場所まで配線が伸ばせるように
しておきました。
# ドライバ
センサ信号ラインの入力電圧上限を、約2V( 2048mV )
とした。パーセント表示を出力仕様としています。
Deep Sleepは、900Sec スリープしています。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*
esp8266-Deep Seep
MCP3425(ADC)+ Moisture Sensor
*/
#include <ESP8266WiFi.h>
#include<Wire.h>
extern "C" {
#include <user_interface.h>
}
// MCP3425 I2C address is 0x68(104)
#define Addr 0x68
const char* ssid = "";
const char* password = "";
const char* host = "api.thingspeak.com";
String mAPI_KEY="your-KEY";
static uint32_t mTimerTmp;
static uint32_t mTimerPost;
float mTemp=0;
float mHum=0;
//
void proc_http(String sTemp ){
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
String url = "/update?key="+ mAPI_KEY + "&field1="+ sTemp;
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(10);
int iSt=0;
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}
}
//
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("#Start-setup");
Serial.print("millis.Start: ");
Serial.println(millis() );
// Start I2C Transmission
Wire.beginTransmission(Addr);
Wire.write(0x10);
Wire.endTransmission();
delay(300);
//WIFI
Serial.println();
Serial.println();
Serial.print("Connecting to ");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("millis.Connected: ");
Serial.println(millis() );
}
//
int get_tempValue(){
int iRet=0;
unsigned int data[2];
Wire.beginTransmission(Addr);
Wire.write(0x00);
Wire.endTransmission();
//
Wire.requestFrom(Addr, 2);
if(Wire.available() == 2)
{
data[0] = Wire.read();
data[1] = Wire.read();
}
// Convert the data to 12-bits
int raw_adc = (data[0] & 0x0F) * 256 + data[1];
//Serial.print( "raw_adc.bf= " );
//Serial.println( raw_adc );
if(raw_adc > 2047)
{
raw_adc -= 4096;
}
Serial.print("Digital Value of Analog Input : ");
Serial.println(raw_adc);
//Sensor
int iMaxVoltage= 2048;
float fMoi =(raw_adc * 100) / iMaxVoltage;
//Serial.print( "fMoi= " );
//Serial.println( fMoi );
// fMoi = fMoi * 100;
int iMoi= (int)fMoi;
Serial.print( "Moisture Value= " );
Serial.println( iMoi );
iRet= iMoi;
return iRet;
}
//
void loop()
{
delay( 100 );
Serial.print("millis.Loop: ");
Serial.println(millis() );
int iTemp =0;
if (millis() > 3000 ){
iTemp =get_tempValue();
delay(1000);
proc_http( String(iTemp) );
Serial.print("millis.SleepStart: ");
Serial.println(millis() );
ESP.deepSleep( 900 * 1000 * 1000);
//ESP.deepSleep( 30 * 1000 * 1000);
}
}
# まとめ
海外通販は、輸送に時間がかかり到着するか不安はありますが。
安価の部品調達できる手段としては、良いですね。
# 関連のページ
I2C ADC MCP3425で、アナログ入力編
http://knaka0209.blogspot.jp/2016/09/esp-wroom-02-16.html
# 関連のまとめ
IoT な電子工作まとめ
http://knaka0209.blogspot.jp/2015/11/iot-matome.html
=== Update 2016/09/24 ====
テスト用の電池、
エネループ 単三の4本準備しました。
連続稼動時間については、別途追記したいと思います。
*) 水分センサーの消費電力が大目の為、4本にしています。
# 連続稼動時間の消費電力測定 15分スリープ (最終)
=== Update 2016/09/29 ====
エネループ 単三の4本
103H (5日目)で停止、予想より伸びませんでした。。
*) 1本当り= 25.75 H
[補足]
安価(100均一)の3本で計測した場合、
64H, 1本当り= 21.33 H でしたので、エネループが稼動時間は長いですが
1本の稼動で比較すると、約2割程の伸びとなりました。
(25.75 / 21.33) * 100 = 120.7 %
*) 今回の電池の価格は、4倍弱 (4個= 1680円 )エネループは高額でしたので
使い方によりますが、最大充電回数(耐久性)は別として
コスパ的に、100均(1個= 108円)は使えると見ています。
===================