ESP32 IoT部屋ステーション(リレー+DHT22)
スマホからランプをつけて、どこにいても部屋の温度と湿度をリアルタイムで確認できます。このプロジェクトは、アプリのIoTテンプレート部屋ステーションの手順ガイドです。ESP32、リレーモジュール、DHT22で組み立てます。マイ工房 › デバイス › デバイスを追加から部屋ステーションを選ぶと、Ohmiがあなたのデバイスキーでコードを用意します。このページのコードは見本で、キーとWi-Fi情報は仮の値です。

このデバイスをアプリから操作しよう
ESP32 または Raspberry Pi Pico W を Wi-Fi につなげば、スマホからオン/オフでき、計測値をリアルタイムで見られます。コードは Ohmi が用意するので、Wi-Fi 情報を入力して書き込むだけです。
アプリのテンプレート:部屋ステーション
- アプリのどこにある?ツールタブ、またはマイ工房 › デバイスから新しいデバイスを追加し、このテンプレートを選びます。
- Arduino ライブラリArduino IDE でライブラリマネージャを開き、BlueGraysIoT を検索してインストールします。
無料プランは 1 デバイス、1 グラフ、24 時間の履歴。プレミアムならデバイスとグラフを増やし、履歴も長く残せます。
回路図

ソースコード
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// ESP32 IoT部屋ステーション(リレー+DHT22)
4// ─────────────────────────────────────────
5// BlueGraysアプリのIoTテンプレート「部屋ステーション」です。リレーでランプをスマホからオン・オフし、DHT22が部屋の温度と湿度を2秒ごとにアプリへ送ります。本物のコードは、アプリの中でOhmiがあなたのデバイスキーを使って用意します(マイ工房›デバイス›デバイスを追加)。ここにあるコードは見本で、デバイスキーとWi-Fi情報は仮の値です。ライブラリマネージャ:BlueGraysIoT(依存ライブラリも一緒に)。ボードは2.4GHzのWi-Fiにだけつながります。リレーはLOWでオンになります。家庭用電源(100V)のランプは詳しい人と一緒につなぎ、まずはLEDで試してください。
6//
7// ピン:
8// GPIO26 -> リレーモジュール IN
9// 5V, GND -> リレーモジュール VCC, GND
10// リレー COM -> 5V、NO -> 220 Ω -> LED アノード、LED カソード -> GND
11// GPIO4 -> DHT22 OUT(データ)
12// 3V3, GND -> DHT22 VCC, GND
13// Pico W:リレー IN GP15、DHT22 OUT GP16
14
15/*
16 * 部屋ステーション · BlueGrays IoT
17 * BlueGrays · bluegrays.com
18 * このコードは共有しないでください。デバイスキーとWi-Fiのパスワードが含まれています。
19 */
20
21#include <BlueGraysIoT.h>
22#include <DHT.h>
23
24const char *DEVICE_KEY = "デバイスキー";
25const char *WIFI_NAME = "Wi-Fiの名前";
26const char *WIFI_PASSWORD = "Wi-Fiのパスワード";
27
28BlueGraysIoT bg(DEVICE_KEY);
29
30const int RELAY_PIN = 26;
31const bool RELAY_ACTIVE_LOW = true; // 多くのリレーモジュールはLOWでオンになります
32void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
33DHT dht(4, DHT22);
34unsigned long lastReadMs = 0;
35
36void setup() {
37 Serial.begin(115200);
38 pinMode(RELAY_PIN, OUTPUT);
39 setRelay(false);
40 bg.onSwitch("lamba", setRelay);
41 dht.begin();
42 bg.setDeadband("sicaklik", 0.1);
43 bg.setDeadband("nem", 1.0);
44 bg.setDebug(Serial);
45 bg.setLanguage(BG_LANG_EN);
46 bg.begin(WIFI_NAME, WIFI_PASSWORD);
47}
48
49void loop() {
50 bg.loop(); // ここで長いdelay()は使わないでください
51 if (millis() - lastReadMs >= 2000) {
52 lastReadMs = millis();
53 bg.send("sicaklik", dht.readTemperature());
54 bg.send("nem", dht.readHumidity());
55 }
56}
57よくある質問
このページのコードをそのままボードに書き込めますか?
書き込めますが、接続はできません。コードの中のデバイスキーとWi-Fi情報は仮の値です。アプリでマイ工房 › デバイス › デバイスを追加を開き、部屋ステーションを選ぶと、Ohmiがあなたのキー、ネットワーク名、パスワードでコードを用意します。そのコードをコピーして書き込みましょう。コード全体はあとからデバイス › コードとキーでも見られます。
Pico Wでも使えますか?
使えます。デバイスを追加するときにボードとしてPico Wを選んでください。コードは同じで、ピンだけが変わります。リレーはGP15、DHT22はGP16です。Arduino IDEのボードマネージャで「pico」パッケージをインストールします。このページの回路と写真はESP32で作りました。
本物の家庭用ランプ(100 V)をつないでもいいですか?
家庭用電源は感電や火事の原因になります。まずはこのページのようにLEDで試してください。本物のランプに進むなら、電気に詳しい人と一緒に行いましょう。プラグはコンセントから抜いておき、片側の線だけをリレーのCOMとNOに通し、むき出しの線を残さず、回路はふたのある箱に入れ、ランプの消費電力はモジュールに書かれた上限を超えないようにします。
Wi-Fiのパスワードとデバイスキーは安全ですか?
Wi-Fiのパスワードはスマホの中だけに残り、サーバーには送信されません。コードへの書き込みもスマホの中で行われます。デバイスキーは安全な接続のヘッダーでだけ送られ、シリアルモニタには表示されません。それでも両方ともコードの中に入っているので、アプリからコピーしたコードは人に見せないでください。キーを誰かに見られたら、キーを再発行で新しいキーにして、新しいコードを書き込みましょう。
