はじめに
こんにちは。今回はESP32とDHT22(or DHT11)を使って温湿度を計測し、Wi-Fi経由でWebブラウザ(Ambient)に送信・可視化する方法をまとめました。
「外出先で部屋の温度が分かったらいいのに…」そんなちょっとした願望を叶えるIoT温湿度計です。スマホからも見られるので、ペットの快適さチェックはもちろん、「あ、エアコンやストーブつけっぱなしだ!」なんて気づけるのも便利です。
配線画像
まずはESP32とDHT22をブレッドボードに接続します。
- DHT22 VCC → 5V(3.3Vでも可能だが5Vが安定)
- DHT22 GND → GND
- DHT22 DATA → GPIO13(例)
以下は配線写真です。配線がわかりやすいようにワイヤーをセンサの前に配置してますが、
センサが前に来るよう配線することをオススメします。

Ambientの設定手順
-
Ambientにログインし、新しいチャネルを作成

赤枠で囲っているチャネルIDとライトキーは、後程ソースコードにベタ書きするので控えておきましょう。
-
グラフ表示の設定を行う(温度・湿度の2系列)

ひとまず赤枠で囲っている箇所のみを設定すれば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 DHTTYPEをDHT11に変更します
動作確認
ファームウェアをESP32に書き込んだら動作確認です。
Ambientにアクセスし、先ほど作成したチャートにデータが反映されていることを確認しましょう。

カーソルを合わせると計測時点の温度が確認できます。


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

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

