マイクロコントローラーの内部メモリは小さいため、センサーで生成されたデータを長期間保存するには不十分です。外部メモリデバイスを使用するか、インターネットを使用してクラウドにデータを保存できます。また、人間が到達できない極端な状態の場所にセンサーを配置したり、頻繁に訪問することが困難な場合は、管理が困難になることがあります。この種の問題を修正するために、私たちは常に、その場所に物理的に存在することなく、どこからでもリアルタイムでセンサーデータを監視する方法を検討しています。
リアルタイムデータベースは、我々だけで、インターネットに接続することができ、クラウドサーバーとデータを交換できるようにすることができますいくつかのコントローラをインタフェースする必要がどここのシナリオで使用することができます。サーバーデータは、リアルタイムのシステム動作の監視、データベース分析、統計分析と処理、および将来のユースケースの解釈に役立ちます。この目的を果たすために利用できるIoTハードウェアプラットフォームとクラウドプラットフォームはたくさんあります。 IoTアプリケーションに適したプラットフォームを見つけるのが難しい場合は、リンクをたどってください。
以前は、ThingSpeak、Adafruit IO、およびその他の多くのIoTソフトウェアについて説明しました。今日は、温度と湿度のセンサーDHT11とNodeMCU ESP8266モジュールを使用して、GoogleのFirebaseデータベースサーバーにリアルタイムで温度と湿度を記録する同様のプロジェクトを構築します。
プロジェクトを2つのセクションに分けます。まず、ハードウェアコンポーネントを組み立て、ファームウェアをアップロードすることから始めます。次に、Firebaseを使用してNodeMCUをセットアップし、リアルタイムデータを交換します。ESP8266またはFirebaseを初めて使用する場合は、Firebaseを使用したLEDの制御に関する以前のチュートリアルに従ってください。
必要なコンポーネント
- NodeMCUESP8266モジュール
- DHT11温度および湿度センサー
回路図
DHT11温度および湿度センサー
DHT11モジュールは、校正されたデジタル信号出力を備えた湿度と温度の複合体を備えています。つまり、DHT11センサーモジュールは、湿度と温度を検知するための複合モジュールであり、校正されたデジタル出力信号を提供します。DHT11は、湿度と温度の非常に正確な値を提供し、高い信頼性と長期安定性を保証します。このセンサーは、抵抗型湿度測定コンポーネントとNTCタイプの温度測定コンポーネントを備え、8ビットマイクロコントローラーが組み込まれており、応答が速く、費用効果が高く、4ピン単列パッケージで利用できます。
以前はESP12Eを使用してWebサーバー上のDHT11の読み取り値を更新しましたが、DHT11を使用してArduino、PIC、Raspberryなどの他の多くのマイクロコントローラーとインターフェイスし、それらを使用して気象観測所を構築したすべてのDHT11ベースのプロジェクトを確認できます。
NodeMCUESP8266のライブ温度および湿度モニタリングのプログラミング
最後に、動作するビデオを含む完全なプログラムを示します。ここでは、コードのいくつかの重要な部分について説明します。
まず、ESP8266とfirebaseを使用するためのライブラリを含めます。
#include
以下のリンクに従って、ライブラリをダウンロードしてインストールします。
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
コンパイル中に、ArduinoJson.hライブラリがインストールされていないというエラーが発生した場合は、上記のリンクを使用してインストールしてください。
NodeMCUをプログラムして、DHT11センサーから読み取り値を取得し、5秒間隔でFirebaseにプッシュします。データをプッシュするためのパスを設定します。現在、2つのパラメータ、つまり。湿度と温度は、同じ親パスと異なる子パスで送信されます。
これらの2つのパラメータは、Firebaseと通信するために非常に重要です。これらのパラメータを設定すると、ESP8266とfirebase間のデータ交換が有効になります。プロジェクトのこれらのパラメータを見つけるには、Firebaseセットアップに関する以前のチュートリアルに従ってください。
#define FIREBASE_HOST "your-project.firebaseio.com" // FirebaseIDからのプロジェクト名アドレス #defineFIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // Firebaseから生成された秘密鍵
資格情報が正常に見つかったら、上記のコードに置き換えてください。
Wi-Fi SSIDとパスワードを入力して、ネットワークに接続します。
#define WIFI_SSID "network_name" //自宅または公共のWi-Fi名を入力します#defineWIFI_PASSWORD "password" // Wi- Fissidのパスワード
NodeMCUでDHTデータピンを定義します。NodeMCUでは任意のデジタルGPIOピンを使用できます。
#define DHTPIN D4
DHTライブラリは、すべてのDHTバリアント用に作成されており、DHT11やDHT22などに使用するDHTセンサーのオプションが付属しています。適切なDHTセンサーを選択して続行してください。
#define DHTTYPE DHT11 // dhtタイプをDHT11またはDHT22として選択 DHTdht(DHTPIN、DHTTYPE);
選択したWi-Fiネットワークに接続し、Firebaseデータベースサーバーにも接続します。
WiFi.begin(WIFI_SSID、WIFI_PASSWORD); Firebase.begin(FIREBASE_HOST、FIREBASE_AUTH);
NodeMCUのピンD4から読み取りを開始します。
dht.begin();
DHTセンサーから湿度と温度の読み取り値を取得し、フロート値として保存します。
float h = dht.readHumidity(); //温度または湿度の読み取りには約250ミリ秒かかります! float t = dht.readTemperature(); //温度を摂氏(デフォルト)として読み取ります
DHTセンサーが適切に配線されているか、損傷しておらず、コントローラーがセンサーから読み取り値を読み取れるかどうかを確認するだけです。読み取り値が表示されない場合は、センサーが損傷している可能性があります。エラーメッセージを表示して、先に進まずにもう一度確認してください。
if(isnan(h)-isnan(t)){//読み取りが失敗したかどうかを確認し、早期に終了します(再試行します)。 Serial.println(F( "DHTセンサーからの読み取りに失敗しました!")); 戻る; }
デバッグ用にセンサーデータをシリアルモニターに印刷し、温度と湿度の値を文字列形式で保存して、Firebaseに送信します。また、DHT11センサーからの2つの読み取りの間に必要な最小遅延は2秒であるため、常に2秒を超える遅延を使用することに注意してください。DHT11の詳細については、公式データシートをご覧ください。
Serial.print( "湿度:"); Serial.print(h); String fireHumid = String(h)+ String( "%"); //整数の湿度を文字列の湿度に変換します Serial.print( "%Temperature:"); Serial.print(t); Serial.println( "°C"); String fireTemp = String(t)+ String( "°C"); delay(4000);
最後に、温度と湿度のデータをパス「your-project.firebaseio.com/DHT11/Humidity/」のFirebaseに送信します。
Firebase.pushString( "/ DHT11 / Humidity"、fireHumid); //パスを設定して読み取り値を送信 Firebase.pushString( "/ DHT11 / Temperature"、fireTemp); //パスを設定して測定値を送信します
Firebaseアカウントのすべてのデータを確認できます。Firebaseの「 マイコンソール 」の「 プロジェクト 」の「 データベース 」セクションに移動するだけです。
データを送信および監視するためにFirebaseを設定するには、前のチュートリアルを参照してください。
このIoTベースの温度と湿度の監視のための完全なコードとビデオを以下に示します。