シームレスMQTT統合:NodeMCU DHT22センサーとRaspberry Pi 3 B+ブローカー
NodeMCU マイクロコントローラーと DHT22 温湿度センサーを、MQTTブローカーとして動作する Raspberry Pi 3 B+ と連携させる拡張性の高いIoTソリューションを展開。データは IoT MQTT Panel App でリアルタイム可視化。
本ガイドでは、ハードウェア接続、ソフトウェアセットアップ、コード構造を解説。MQTTトピック編集のみでセンサーノード追加・削除が可能。ネットワーク断時、各NodeMCUはローカルで継続パブリッシュ。後でブローカー再接続時にバッファデータをリカバリー。
1. ネットワークアーキテクチャ
典型レイアウトではRaspberry PiをLAN配置、各NodeMCUを同一Wi-Fiルーター配下に配置。センサーは10秒ごとに値読み取り、/room1/temperature や /room1/humidity 等の個別トピックへパブリッシュ。ブローカーはポート1883でリッスンし、メッセージをMQTT Panel Appへ転送。
2. ソフトウェア前提条件
2.1 Arduino IDEライブラリ
- PubSubClient – ESP8266用MQTTクライアント
- DHT Sensor Library – DHT22/11ドライバー
- Adafruit Unified Sensor – 汎用センサーインターフェース
- ESP8266WiFi – Wi-Fi接続
2.2 Raspberry Pi Python依存関係
- Python組み込み
timeモジュール - MQTTクライアント:
pip install paho-mqtt– Steves Internet Guide でクイックスタート
3. ファームウェア書き込み
提供スケッチをNodeMCUに書き込み、Raspberry PiでPythonスクリプト実行してトピック購読、データをCSV保存で後続分析用に蓄積。
4. NodeMCUスケッチ概要
#include <ESP8266WiFi.h> // ESP8266 Wi-Fiライブラリ
#include <PubSubClient.h> // MQTTクライアント
#include "DHT.h" // DHTセンサーライブラリ
const char* mqtt_server = "Broker_IP_Address"; // Pi IPに置換
const char* clientID = "room1"; // ノード識別子
const char* topicT = "/room1/temperature"; // 温度トピック
const char* topicH = "/room1/humidity"; // 湿度トピック
const char* willTopic = "/room1/status"; // Willトピック
const char* willMessage = "0"; // 0 = 切断
int willQoS = 0;
boolean willRetain = true;
int counter = 0;
const char* swversion = "1.0";
WiFiClient wifiClient;
PubSubClient client(mqtt_server, 1883, wifiClient);
DHT dhtA(2, DHT22); // DHT22をNodeMCUピンD4 (GPIO2) に接続
void setup() {
Serial.begin(9600);
Serial.print(swversion);
dhtA.begin();
delay(2000); // Wi-Fi安定待ち
if (client.connect(clientID, "", "", willTopic, willQoS, willRetain, willMessage, true)) {
Serial.println("Connected to MQTT broker");
}
}
Broker_IP_Address をPiのローカルIP(例:192.168.1.200)に置換。Piで ifconfig wlan0 実行で確認可能。
willTopic と willMessage で、ノード予期せぬ切断時にブローカーが検知可能。保持「0」ステータスをパブリッシュし、パネルで可視化。
5. Raspberry Pi購読スクリプト
Pythonスクリプトがブローカーへ持続接続、関連トピック購読、着信データをCSVファイル書き込みで後続分析用に保存。
6. システム拡張
新規部屋追加はスケッチ複製し、clientID、topicT、topicH、willTopic を新部屋名に変更、別NodeMCUへ書き込みのみ。MQTT Panel AppでUIにトピック追加すれば自動検出。
ネットワーク接続喪失時、NodeMCUはローカルブローカーキューへパブリッシュ継続。接続復旧時にメッセージフラッシュ、データ損失ゼロを保証。
アップデートはフォローで。システム全体デモ動画をお楽しみに。
製造プロセス
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
- Raspberry Pi 3 B+ – アップデートされた機能、仕様、購入ガイド
- Raspberry Pi と Python でロボットを構築:完全ガイド
- 電気めっき vs 陽極酸化:金属表面処理の主な違い
- 鉄系金属と非鉄系金属:主な違い、用途、特性を徹底解説
- ブレージング vs 半田付け:温度・強度・冶金学的違いを完全解説
- 穴あけ・ボーリング・リーマーの違い:3つの穴加工を完全使い分け
- シェーパー vs プレーナー:構造・動作・用途の決定的違い
- 遠心ポンプと往復ポンプの違い:構造・性能・用途を徹底比較