#371中級IoT

ESP32 IoT部屋ステーション(リレー+DHT22)

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

0.0(0)
1 完了
ESP32 IoT部屋ステーション(リレー+DHT22)
ソファから立たずに明かりをつけたい、外出先から部屋の温度を知りたい、そんな人にぴったりのプロジェクトです。ボードがリレーでランプをオン・オフし、温湿度センサーが数秒ごとに測った値をスマホに送り、グラフにたまっていきます。コードはアプリが用意するので、あなたは配線して書き込むだけ。最初はランプの代わりにLEDで試すので、家庭用電源にさわる前に配線と安全のことを学べます。
IoT · リモート操作最初のデバイスは無料

このデバイスをアプリから操作しよう

ESP32 または Raspberry Pi Pico W を Wi-Fi につなげば、スマホからオン/オフでき、計測値をリアルタイムで見られます。コードは Ohmi が用意するので、Wi-Fi 情報を入力して書き込むだけです。

アプリのテンプレート:部屋ステーション

  • アプリのどこにある?ツールタブ、またはマイ工房 › デバイスから新しいデバイスを追加し、このテンプレートを選びます。
  • Arduino ライブラリArduino IDE でライブラリマネージャを開き、BlueGraysIoT を検索してインストールします。
アプリを無料でダウンロード

無料プランは 1 デバイス、1 グラフ、24 時間の履歴。プレミアムならデバイスとグラフを増やし、履歴も長く残せます。

回路図

ESP32 IoT部屋ステーション(リレー+DHT22) - Circuit

ソースコード

C++ (Arduino IDE)
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のパスワードはスマホの中だけに残り、サーバーには送信されません。コードへの書き込みもスマホの中で行われます。デバイスキーは安全な接続のヘッダーでだけ送られ、シリアルモニタには表示されません。それでも両方ともコードの中に入っているので、アプリからコピーしたコードは人に見せないでください。キーを誰かに見られたら、キーを再発行で新しいキーにして、新しいコードを書き込みましょう。