Help us understand the problem. What is going on with this article?

[ESP-WROOM-02]ESP-WROOM-02+土壌湿度センサーでブラウザにアナログセンサーの値を表示させる

More than 3 years have passed since last update.

はじめに

このエントリは、以下のエントリの続きです

育てている盆栽の水やりのタイミングを見える化したかったので、ESP-WROOM-02、土壌湿度センサーを使って、土の中の水分を測ります

ひとまず、ESP-WROOM-02にスケッチ(プログラム)を書き込んで、ブラウザにアナログセンサーの値を表示させてみたいと思います

電子部品

参考

計測

1.計測部品の接続

ESP-WROOM-02の記事のanalogRead()の項目にある接続を参考に、ESP-WROOM-02と土壌湿度センサーを接続した

アナログ入力を行うにはTOUTピンを使う

それぞれの参考にあるように、TOUTピンには1V付近の電圧かけてあげる必要があるので、ESP-WROOM-02から出力される3.3Vを抵抗を使って分圧して、1Vくらいになるようにした
(200Ωと100Ωを使うことで3分の1の1.1Vになる想定)

手書きですが、回路図は以下
IMG_20160503_204424.jpg

IMG_20160503_202459.jpg

2.スケッチの作成

[ESP-WROOM-02]ブラウザにHelloWorldを表示させるで使ったスケッチを、アナログセンサーの値を読み込めるように修正する
(ArduinoIDEのメニューのファイル>スケッチの例>ESP8266WebServer>HelloServerを選択して、サンプルスケッチを使う)

Device Plus 第34回にあるように、analogRead関数ではなく、system_adc_read関数を使う

arduino
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char* ssid = "自分のwifi環境のSSID";
const char* password = "自分のwifi環境のパスワード";

ESP8266WebServer server(80);

const int led = 13;

int analog_value = 0; // アナログセンサーの値を格納する変数の初期化

//ESP-WROOM-02でアナログ入力をするために必要
extern "C" {
#include "user_interface.h"
}

void handleRoot() {
  digitalWrite(led, 1);

  // アナログセンサーの値を取得するためsystem_adc_read関数を使う
  // センサーを水につけていない状態で1024を返すので、1024との差を水分の値とする
  analog_value = 1024 - system_adc_read();

  // 画面に表示するため、String型にキャストする
  String analog_value_str = String(analog_value);

  // htmlで出力 第三引数にhtmlタグを書ける
  server.send(200, "text/html", "<center><h1>soil solid sensor value is...</h1><font size='36'>" + analog_value_str + "</font></center>");
  digitalWrite(led, 0);
}

修正後、ESP-WROOM-02にスケッチを書き込む

ブラウザにIPアドレスを入力して土壌湿度センサーの値を表示する

水中から出した状態
Screenshot_2016-05-03-19-07-23.jpg

水中に入れた状態
Screenshot_2016-05-03-19-06-49.jpg

まとめ

RaspberryPi+ADコンバータで取得するよりも、関数ひとつで値が取得できるので、非常に楽。
次回は、twitter連携をしたい

jun1_0803
WEB系SE/PG。webサービスエンジニア。業務ではPHPを使ってますが、IoTと機械学習のためにpythonやrubyを勉強中
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした