目指せ電子工作・IoT開発 ESP-WROOM-02でWiFi通信してIoTしてみる!

前回から引き続きESP-WROOM-02を使っていきます!今回は温湿度センサーの測定値をWiFiでインターネット上にアップする、IoTやってみます🔥

目次

今回のやってみたこと!

前回から引き続いてESP-WROOM-02で遊んでいきます。

今回は温湿度センサー達で温湿度測定して、測定データをWiFiでインターネット上にアップしてグラフ化してみます。グラフ化等についてはAmbientというサービスを利用して行います!

ちなみに今回組んだ回路たちとAmbientでグラフ化した画像のツイートです。
お家の中の3地点を測定するために、3つ回路を組みました。

https://twitter.com/TaachimalKo/status/1511902403804631046

トピックス

Ambient

AmbientはIoT用のクラウドサービスです。 マイコンから送られたセンサーデーターを受信し、蓄積し、可視化(グラフ化)します。 

https://ambidata.io/

Ambientを使うとマイコンからデータを送ってグラフ化することが非常に簡単にできます。Ambientにデータを送るためのライブラリ(Arduino、Pythonなど)が公開されているのと、チュートリアルが大変充実しているため、Arduino系やRaspberryPiなどで手軽にIoTを行うにはもってこいのサービスだと思います。

この記事で行った実験レベルの内容であれば無料で利用することができます。

下のリンクからもAmbientのサイトに飛べます。

https://ambidata.io/

温湿度センサー

ありあわせのセンサーを使ったので、3回路とも温湿度センサーが異なります😅

使った温湿度センサーを簡単に紹介します🌡️

使ったセンサー

DHT11モジュール
DHT20
BME280モジュール
DHT11モジュールDHT20BME280モジュール
動作電圧3~5.5 V2.2~5.5 V3~5.5 V
温度 (精度)0~50 ℃ (±2 ℃)-40~80 ℃ (±0.5 ℃)-40~85 ℃ (±1 ℃)
相対湿度 (精度)20~90 %RH (± 5 %RH)0~100 %RH (± 3 %RH)0~100 %RH (± 3 %RH)
気圧 (精度)300~1100 hPa (±1hPa)
通信方式1-wireI2CI2C,SPI
備考Miuzei Arduino
スターターキットの同梱品
秋月電子通販コード:M-16732秋月電子通販コード:K-09421

使ったライブラリ

DHT11のライブラリ

DHT20のライブラリ

BME280のライブラリ

今回の回路図

3地点で測定を行うので、3回路用意しました💪
それぞれの回路の画像とブレッドボード図、使ったものリストをつらつら載せておきます‼

A地点_DHT11モジュール

電源に充電可能なニッケル水素電池を使ってみてます。

No.パーツ名個数備考
1ESP-WROOM-02のDIP化キット1秋月電子の通販コード:K-09758
2ニッケル水素電池(1.2V)4
3電池ケース1
4DHT11モジュール1
5三端子レギュレーター BA033CC0T1秋月電子の通販コード:I-13675
6積層セラミックコンデンサー 0.1μF1
7電解コンデンサー 47μF1レギュレータOUT側の発振防止用
8タクトスイッチ2モード変更とリセットボタン用
9赤色LED1電源確認用
10緑色LED1お試しスケッチ用
11抵抗 10kΩ4プルアップ・プルダウン用
12抵抗 330Ω2LED用の抵抗
13ブレッドボード1
14ジャンプワイヤー必要な分

B地点_DHT20

電源にモバイルバッテリーを使ってみてます。

USB変換モジュールは似た画像のものを使用しています。DHT20の画像はDHT11のもので代用しています。
No.パーツ名個数備考
1ESP-WROOM-02のDIP化キット1秋月電子の通販コード:K-09758
2USBシリアル変換モジュールキット1秋月電子の通販コード:K-09951
3DHT201秋月電子通販コード:M-16732
4三端子レギュレーター BA033CC0T1秋月電子の通販コード:I-13675
5積層セラミックコンデンサー 0.1μF1
6電解コンデンサー 47μF1レギュレータOUT側の発振防止用
7タクトスイッチ2モード変更とリセットボタン用
8赤色LED1電源確認用
9緑色LED1お試しスケッチ用
10抵抗 10kΩ6プルアップ・プルダウン用
11抵抗 330Ω2LED用の抵抗
12ブレッドボード1
13USBmicroBケーブル1
14ジャンプワイヤー必要な分
15モバイルバッテリー

C地点_BME280モジュール

ESP-WROOM-02の開発ボードの「ESPr® Developer」を使ってみてます。
その関係で、3端子レギュレータは5.0V出力のものを使用しています。

No.パーツ名個数備考
1ESPr® Developer1スイッチサイエンスで購入
2BME280モジュール1秋月電子通販コード:K-09421
39V電池1
4三端子レギュレーター NJM7805FA15.0V電源作る用。秋月電子の通販コード:I-08678
5積層セラミックコンデンサー 0.1μF1
6電解コンデンサー 47μF1レギュレータOUT側の発振防止用
7タクトスイッチ2モード変更とリセットボタン用
8赤色LED1電源確認用
9緑色LED1お試しスケッチ用
10抵抗 330Ω2LED用の抵抗
11ブレッドボード1
12ジャンプワイヤー必要な分

書き込んだスケッチ

今回のスケッチは3つの回路に合わせて、部分部分コメントアウトを解除して使う形にしました。

AmbientのチャネルIDとライトキーはAmbientにデータを送信するのに必要なものです。今回は3地点測定するために3チャネル利用したので、それぞれのIDとキーを確認して入力します。

WiFiのSSIDとパスワードも環境に合わせて入力します。

//ESP-WROOM-02_Temperature / humidity sensor
//温湿度センサーで3地点測定
//https://jcomet.com/

//ライブラリインクルード
#include <ESP8266WiFi.h>
#include "Ambient.h"

//使うセンサに合わせてコメントアウトを解除する①~④
//①
// //DHT11用定義
// #include <DHT.h> 
// #define DHTPIN 4       // センサとつなげるデジタルピンを定義
// #define DHTTYPE DHT11  // 使用するセンサの型定義
// DHT dht(DHTPIN, DHTTYPE);  //センサを初期化
// unsigned int channelId = xxxxx; // AmbientのチャネルID
// const char* writeKey = "xxxxx"; // ライトキー

// //DHT20用定義
// #include "DHT20.h"
// #define datapin 14 
// #define clockpin 12
// DHT20 DHT20;
// unsigned int channelId = xxxxx; // AmbientのチャネルID
// const char* writeKey = "xxxxx"; // ライトキー

// //BME280用定義
// #include <BME280I2C.h>
// #include <Wire.h>
// BME280I2C bme;
// unsigned int channelId = xxxxx; // AmbientのチャネルID
// const char* writeKey = "xxxxx"; // ライトキー
//////////////////////////////////////////////////////////////

//WiFiの設定
WiFiClient client;
Ambient ambient;
const char* ssid = "xxxxx";
const char* password = "xxxxx";



void setup() {
//WiFi設定
  WiFi.begin(ssid, password);  //  Wi-Fi APに接続
  while (WiFi.status() != WL_CONNECTED) {  //  Wi-Fi AP接続待ち
    delay(100);
  }
  ambient.begin(channelId, writeKey, &client); // チャネルIDとライトキーを指定してAmbientの初期化

//②
// //DHT11
//   dht.begin(); //センサー開始

// //DHT20
//   DHT20.begin(datapin, clockpin);
//   Wire.setClock(400000);

// //BME280
//  Wire.begin();
//  bme.begin();
///////////////////////////////////////

pinMode(16, OUTPUT); //Ambient送信確認用のLED

}

void loop() {
 digitalWrite(16, HIGH);
 
//③
//  send_dht11();
//  send_dht20();
//  send_BME280();
//////////////////////

 delay(1*1000);
  ambient.send(); // データをAmbientに送信
 digitalWrite(16, LOW);
  delay(5*60*1000);
}

//④
// void send_dht11(){
//   float humi11 = dht.readHumidity(); //湿度の読み取り
//   float tempc11 = dht.readTemperature(); //温度(摂氏)の読み取り
//   ambient.set(1, tempc11); // 温度をデータ1にセット
//   ambient.set(2, humi11); // 湿度をデータ2にセット
// }

// void send_dht20(){
//   DHT20.read();
//   float humi20 = DHT20.getHumidity(); //湿度の読み取り
//   float tempc20 = DHT20.getTemperature(); //温度(摂氏)の読み取り
//   ambient.set(1, tempc20); // 温度をデータ1にセット
//   ambient.set(2, humi20); // 湿度をデータ2にセット

// }

// void send_BME280(){
//   float temp(NAN), hum(NAN), pres(NAN);
//   BME280::TempUnit tempUnit(BME280::TempUnit_Celsius);
//   BME280::PresUnit presUnit(BME280::PresUnit_Pa);

//   bme.read(pres, temp, hum, tempUnit, presUnit);
//   ambient.set(1, temp); // 温度をデータ1にセット
//   ambient.set(2, hum); // 湿度をデータ2にセット
//   ambient.set(3, pres); // 気圧をデータ3にセット

// }
/////////////////////////////////////////////////

実践結果

測定結果の画像(左軸が温度、右軸が相対湿度)_左からA地点、B地点、C地点。C地点はのみ気圧も測定できるBME280を使用している。

お家の中の3地点(3部屋)で朝から晩まで測定を行った結果の図です。
測り初めに少しブレがありましたが、おおよそいい感じに測れているのかなといった印象です。
湿度のグラフを見ると、ちょうど部屋を移動したりしたタイミングで変化がみられるので面白いなと思いました🤭

次やるときは、センサーを同じものにして部屋間の温湿度差を見てみるのも面白いかなと思ってます。

感想

「ESP-WROOM-02を使ってIoTしてみる!」がやっとできました😊
電源を準備して、スケッチ書き込み、IoTする仕組みを調べて実践する…めっちゃ勉強になりました🙌

今回は、Ambientというサービスを利用してデータの蓄積とグラフ化を行いましたが、少し前に何とか購入できたRaspberryPiを使ってみるのも勉強になって面白いかなと思ってます!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

趣味で楽しみながら電子工作やプログラミングをちょこちょこやってます!
ブログでは遊んでみたこと、やってみたこと&雑記を配信中です!
よろしくお願いします!!

コメント

コメントする

CAPTCHA


目次