工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ESP8266とDHT22で作るWi-Fi気象観測ステーション – ThingSpeak連携

必要な部品と材料

Espressif ESP8266 ESP-01 モジュール × 1
DHT22 温湿度センサー (AM2302) × 1
ブレッドボード × 1
ジャンパーワイヤー × 1式
UDOO USB/シリアル デバッグモジュール (またはFT232RL等のUSB-シリアル変換) × 1
Arduino UNO × 1 (ESP-01への書き込み用プログラマーとして使用)
3.3V 安定化電源 (LDO: AMS1117-3.3等、ESP-01用) × 1
抵抗 10kΩ × 1 (DHT22データライン プルアップ)

プロジェクト概要

ESP8266 (ESP-01) 単体で動作するWi-Fi接続の気象観測ステーションです。DHT22センサーで温度・湿度を測定し、定期的に ThingSpeak クラウドへデータ送信。長期間の環境データを自動記録・可視化できます。Arduino UNOはESP-01へのファームウェア書き込み用プログラマーとしてのみ使用し、本番動作時は不要です。

ハードウェア接続

ESP-01 ピンアサイン (8ピン)

ピン機能接続先
1GND電源GND、USB-シリアルGND
2TXUSB-シリアル RX
3GPIO2DHT22 データ (プルアップ 10kΩ to 3.3V)
4CH_PD (EN)3.3V (常時HIGHで有効)
5GPIO0書き込み時: GND / 通常時: 3.3V (またはフロート)
6RST通常時: 3.3V (またはフロート)
7RXUSB-シリアル TX
8VCC3.3V電源 (最大170mAピーク、平均80mA)

DHT22 接続

重要: 電源設計

ESP8266は送信時に最大 170mA 以上のピーク電流を要求します。PCのUSBポート (500mA限界) や Arduino UNO の 3.3V出力 (150mA限界) では不安定になります。**必ず専用の3.3V LDO (AMS1117-3.3, LM1117-3.3, AP2112等) を外部電源 (5V以上) から供給し、入出力に 10μF+0.1μF のバイパスコンデンサを配置してください。**

ThingSpeak 設定

  1. ThingSpeak でアカウント作成 → 新規チャネル作成
  2. フィールド1: Temperature、フィールド2: Humidity 等を設定
  3. Write API Key と Channel ID をメモ
  4. 書き込み間隔: 最短 15秒 (無料プラン)。コードでは20秒間隔に設定

Arduino IDE で ESP-01 へ書き込み

  1. Arduino IDE → ファイル → 環境設定 → 追加ボードマネージャURL: https://arduino.esp8266.com/stable/package_esp8266com_index.json
  2. ツール → ボード → ボードマネージャー → 「esp8266」インストール
  3. ツール → ボード → 「Generic ESP8266 Module」選択
  4. 設定: Flash Mode: DOUT, Flash Size: 1M (512K SPIFFS), CPU: 80MHz, Upload Speed: 115200
  5. GPIO0=GND、RST=GND→3.3V で書き込みモード起動 → 書き込み実行
  6. 書き込み後、GPIO0=3.3V (またはフロート) に戻して再起動

スケッチ (temphumwifi.ino)


#include <ThingSpeak.h>
#include <DHT.h>
#include <ESP8266WiFi.h>

#define DHTPIN 2        // GPIO2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// ThingSpeak設定 (ご自身の値に変更)
unsigned long myChannelNumber = 167319;
const char *myWriteAPIKey = "XXXP9V86RWR7R9Y";

// Wi-Fi設定
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

WiFiClient client;

void setup() {
  Serial.begin(115200);
  delay(10);
  dht.begin();

  // Wi-Fi接続
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi connected");
  Serial.println(WiFi.localIP());

  ThingSpeak.begin(client);
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature(); // 摂氏

  if (isnan(h) || isnan(t)) {
    Serial.println("DHT読み取り失敗");
    delay(2000);
    return;
  }

  Serial.print("Humidity: "); Serial.println(h);
  Serial.print("Temp: "); Serial.println(t);

  // ThingSpeak送信 (フィールド1:湿度、フィールド2:温度)
  ThingSpeak.writeField(myChannelNumber, 1, h, myWriteAPIKey);
  delay(20000); // 15秒以上空ける (無料プラン制限)
  ThingSpeak.writeField(myChannelNumber, 2, t, myWriteAPIKey);
  delay(20000);
}

動作確認

  1. シリアルモニター (115200bps) で「WiFi connected」とIPアドレス確認
  2. ThingSpeakチャネルページでグラフ表示確認
  3. 長期運用時は定期的な再起動 (ウォッチドッグタイマー活用) 推奨

拡張アイデア (Step 6: さらにセンサー追加)

センサー測定項目接続備考
BMP280 / BME280気圧、温度、湿度I2C (GPIO4/5)高度計算も可能
BH1750照度 (lux)I2C日照時間記録
MQ-135大気質 (CO2等)アナログ (ADC: A0)ESP-01はADC 1chのみ (TOUTピン)
風速計/雨量計風速、降水量GPIO割り込みパルスカウント
土壌水分センサー土壌湿度ADC農業IoT向け

ThingSpeakは1チャネル8フィールドまで対応。複数センサー統合に最適。

トラブルシューティング

参考リソース

製造プロセス

  1. Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
  2. Raspberry Piで気象観測ステーションを構築し、日次天気データをメール送信
  3. Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
  4. Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
  5. 湿度センサーの検証とキャリブレーションで精密測定を実現
  6. Windows 10 IoT CoreとSHT15センサーで高精度な温湿度モニタリング
  7. Arduino Portenta H7にMAX6675でサーモカップル温度センサーを接続する
  8. DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
  9. ESP8266・Arduino・超音波センサーで作るスマートIoTジャー:リアルタイム中身監視
  10. 川の健康を見守る:Arduinoベース水質監視システム「MyRiver」
  11. DFRobot静電容量式指紋センサーをArduino/ESP8266で使う – 登録・認証・削除の完全ガイド