湿度と温度は、農場、温室、医療、産業、家庭、オフィスなどの多くの場所で測定するための非常に一般的なパラメータです。Arduinoを使用した湿度と温度の測定についてはすでに説明し、データをLCDに表示しました。
このIoTプロジェクトでは、ThingSpeakを使用してインターネット経由で湿度と温度を監視 し、ThingSpeakサーバーを使用してインターネット経由で現在の湿度と温度のデータを表示します。これは、Arduino、DHT11センサーモジュール、ESP8266WIFIモジュールおよびLCD間のデータ通信によって実現されます。摂氏スケールの温度計とパーセンテージスケールの湿度計は、LCDディスプレイを介して周囲の温度と湿度を表示し、世界中のどこからでもライブモニタリングのためにThingSpeakサーバーに送信します。
作業とThingSpeakのセットアップ:
このIoTベースのプロジェクトには4つのセクションがあり、最初に湿度と温度のセンサーDHT11が湿度と温度のデータを検知します。次に、Arduino Unoは、DHT11センサーのデータをパーセンテージと摂氏スケールの適切な数値として抽出し、Wi-Fiモジュールに送信します。 3番目に、Wi-FiモジュールESP8266はデータをThingSpeakのサーバーに送信します。そして最後に、ThingSpeakはデータを分析し、グラフ形式で表示します。オプションのLCDは、温度と湿度を表示するためにも使用されます。
ThingSpeakは、ArduinoのIoTベースのプロジェクトに非常に優れたツールを提供します。ThingSpeakサイトを使用することで、どこからでもインターネット経由でデータを監視できます。また、ThingSpeakが提供するチャネルとWebページを使用して、インターネット経由でシステムを制御することもできます。ThingSpeak 「を収集」センサからのデータ、「分析および視覚化」データと「行為」反応を誘発することによって。ここでは、ESP8266WIFIモジュールを使用してThingSpeakサーバーにデータを送信する方法について説明します。
1.まず、ユーザーはThingSpeak.comでアカウントを作成し、サインインして[開始]をクリックする必要があります。
2.次に、[チャネル]メニューに移動し、同じページの[新しいチャネル]オプションをクリックして、さらに処理を進めます。
3.これで、チャネルを作成するためのフォームが表示されます。選択に応じて名前と説明を入力します。次に、フィールド1とフィールド2のラベルに「湿度」と「温度」を入力し、両方のフィールドのチェックボックスをオンにします。また、フォームの下の[公開]オプションのチェックボックスをオンにして、最後にチャンネルを保存します。これで、新しいチャネルが作成されました。
4. [APIキー]タブをクリックして、書き込みAPIキーと読み取りAPIキーを保存します。ここでは、書き込みキーのみを使用しています。このキーをコードの char * api_key にコピーする必要があります。
5.その後、[データのインポート/エクスポート]をクリックし、チャネルフィードの更新GETリクエストURLをコピーします。これは次のとおりです。
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6.ここで、ユーザーは、 postUrl を「update?api_key = SIWOYBX26OXQ1WMS&field1 = 0」として httpGet 関数を使用して「api.thingspeak.com」を開き、データフィードまたは更新要求アドレスを使用してデータを送信する必要があります。
データを送信する前に、ユーザーはこのクエリ文字列または postUrl を以下に示すように温度と湿度のデータフィールドで編集する必要があります。ここでは、 httpGet を使用してサーバーにデータを送信した後、GETリクエストを使用してサーバーに送信する必要がある文字列に両方のパラメーターを追加しました。以下の完全なコードを確認してください。
sprintf(postUrl、 "update?api_key =%s&field1 =%s&field2 =%s"、api_key、humidStr、tempStr); httpGet( "api.thingspeak.com"、postUrl、80);
プロセス全体は、この記事の最後にあるビデオセクションで説明されています。
このプロジェクトの作業は、DHT11からデータをフェッチするための単線シリアル通信に基づいています。最初にArduinoは開始信号をDHTモジュールに送信し、次にDHTはデータを含む応答信号を送信します。Arduinoは、最初に湿度、2番目に温度の2つの部分でデータを収集して抽出し、16x2LCDとThingSpeakサーバーに送信します。ThingSpeakは、以下のようにデータをグラフ形式で表示します。
DHT11センサーとArduinoとのインターフェースについて詳しくは、こちらをご覧ください。
回路の説明:
このThingSpeakの温度と湿度の監視プロジェクトへの接続は非常に簡単です。ここでは、液晶ディスプレイを使用して温度と湿度を表示します。これは、4ビットモードでArduinoに直接接続されています。 LCDのピン、つまりRS、EN、D4、D5、D6、およびD7は、Arduinoデジタルピン番号14、15、16、17、18、および19に接続されています。このLCDはオプションです。
DHT11センサーモジュールはArduinoのデジタルピン12に接続されています。Wi-FiモジュールESP8266のVccピンとGNDピンは3.3Vに直接接続され 、ArduinoのGNDとCH_PDも3.3Vに接続されています。ESP8266のTxピンとRxピンは、Arduinoのピン2と3に直接接続されています。ソフトウェアシリアルライブラリは、Arduinoのピン2と3でシリアル通信を可能にするためにもここで使用されます。ESP8266Wi-FiモジュールのArduinoへのインターフェースについてはすでに詳しく説明しました。
プログラミングパート:
このプロジェクトのプログラミング部分は、すべての操作を実行するために非常に重要な役割を果たします。まず、必要なライブラリと初期化変数を含めます。
#include "dht.h" // dhtのライブラリを含める#include
その後、Write APIキーを入力し、いくつかの文字列を取得します。
char * api_key = "SIWOYBX26OXQ1WMS"; // ThingSpeakからWriteAPIキーを入力しますstaticchar postUrl; int humi、tem; void httpGet(String ip、String path、int port = 80);
では 、ボイドループ() 関数で、我々は、温度と湿度を読み取り、LCD上でこれらの測定値を示しています。
void send2server() 関数は、データをサーバーに送信するために使用されます。Send2server関数は、20秒ごとに呼び出すタイマー割り込みサービスルーチンです。更新関数を呼び出すと、タイマー割り込みサービスルーチンが呼び出されます。
void send2server(){char tempStr; charhumidStr; dtostrf(tem、5、3、tempStr); dtostrf(humi、5、3、humidStr); sprintf(postUrl、 "update?api_key =%s&field1 =%s&field2 =%s"、api_key、humidStr、tempStr); httpGet( "api.thingspeak.com"、postUrl、80); }