6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ESP32】部屋の温湿度をWi-Fi経由でWebブラウザに表示してみた(自作IoT)

6
Posted at

はじめに

こんにちは。今回はESP32とDHT22(or DHT11)を使って温湿度を計測し、Wi-Fi経由でWebブラウザ(Ambient)に送信・可視化する方法をまとめました。

「外出先で部屋の温度が分かったらいいのに…」そんなちょっとした願望を叶えるIoT温湿度計です。スマホからも見られるので、ペットの快適さチェックはもちろん、「あ、エアコンやストーブつけっぱなしだ!」なんて気づけるのも便利です。

配線画像

まずはESP32とDHT22をブレッドボードに接続します。

  • DHT22 VCC → 5V(3.3Vでも可能だが5Vが安定)
  • DHT22 GND → GND
  • DHT22 DATA → GPIO13(例)

ブレッドボードビュー
ブレッドボードビュー.png

以下は配線写真です。配線がわかりやすいようにワイヤーをセンサの前に配置してますが、
センサが前に来るよう配線することをオススメします。
20251123_061050088_iOS.jpg

Ambientの設定手順

  1. Ambientの会員登録を行う(無料)
    会員登録.png
     

  2. Ambientにログインし、新しいチャネルを作成
    チャネル作成2.png
    赤枠で囲っているチャネルIDとライトキーは、後程ソースコードにベタ書きするので控えておきましょう。
     

  3. グラフ表示の設定を行う(温度・湿度の2系列)
    チャート作成2.png
    ひとまず赤枠で囲っている箇所のみを設定すればOKです。
    温度と湿度でそれぞれチャートが必要です。今回はd1を温度、d2を湿度で設定してください。

ソースコード

#include <WiFi.h>
#include <Ambient.h>
#include <DHT.h>

#define channelId xxxxx // AmbientのチャネルID
#define writeKey "xxxxxxxxxxx" // Ambientのライトキー

WiFiClient client;
Ambient ambient;

#define DHTPIN 13
#define DHTTYPE DHT22 // DHT11を使用する場合はDHT11に定義変更
DHT dht(DHTPIN, DHTTYPE);

const char *ssid = "x"; // Wi-FiのSSID
const char *password = "x"; // Wi-FiのPW

void setup() {
  Serial.begin(115200);
  delay(2000);

  // Wi-Fi接続
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("[INFO] Connecting to WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\n[INFO] Connected!");

  // Ambient初期化
  ambient.begin(channelId, writeKey, &client);

  // DHT初期化
  dht.begin();
}

void loop() {

  // DHT22から温湿度を取得
  float t = dht.readTemperature(); // 温度
  float h = dht.readHumidity();    // 湿度

  if (isnan(t) || isnan(h)) {
    // 計測失敗
    Serial.println("[ERROR] Measurement failed!");
    delay(2000);
    return;
  }

  // 計測成功
  Serial.println("[INFO] Temperature: " + String(t, 1) + "C   Humidity: " + String(h, 1) + "%");

  // Ambientに送信
  ambient.set(1, t);
  ambient.set(2, h);

  if (ambient.send()) {
    // 送信成功
    Serial.println("[INFO] Ambient Send Success!");
  } else {
    // 送信失敗
    Serial.println("[ERROR] Ambient Send Failed!");
  }

  delay(60000); // 1分間隔で送信
}

備考

  • AmbientのチャネルIDとライトキーはチャネル作成時に控えていたキーに書き換えます
  • Wi-FiのSSIDとPWも使用するルータの情報に書き換えます
  • DHT11を使用する場合、#define DHTTYPEDHT11 に変更します

動作確認

ファームウェアをESP32に書き込んだら動作確認です。
Ambientにアクセスし、先ほど作成したチャートにデータが反映されていることを確認しましょう。
プレビュー2.png
カーソルを合わせると計測時点の温度が確認できます。
温度.png
湿度.png

シリアルモニタにデバッグ表示させているので、Wi-Fi接続できない!Ambientへ送信できない!となった場合はチャネルIDなどを見直しましょう。
以下は正常動作の例です。
シリアルモニタ.png

まとめ

今回はESP32とDHT22の計測値をWebに飛ばして、PCやスマホから温度・湿度をチェックできるようにしました。
これで「エアコンやヒーターの消し忘れ」を気にせずに済みます。ヤッタ-!

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?