- 電力消費を最小限に抑えるためのさまざまな方法
- 必要なコンポーネント
- ESP8266のスリープモードの種類
- ESP8266ディープスリープモードプログラミング
- ESP8266でのDeepSleepのテスト
IoT革命が日々活況を呈しているため、接続されるデバイスの数は急速に増加しています。将来的には、ほとんどのデバイスが相互に接続され、リアルタイムで通信するようになります。これらのデバイスが直面する問題の1つは、消費電力です。この電力消費要因は、IoTデバイスおよびIoTプロジェクトにとって重要かつ決定的な要因の1つです。
ESP8266はあらゆるIoTプロジェクトを構築するための最も人気のあるモジュールの1つであることがわかっているため、この記事では、あらゆるIoTアプリケーションでESP8266を使用しながら電力を節約する方法について学習します。ここでは、LM35温度センサーデータを15秒間隔でThingSpeakクラウドにアップロードし、その15秒間、ESP8266は電力を節約するためにDeepSleepモードのままになります。
電力消費を最小限に抑えるためのさまざまな方法
組み込みデバイスとIoTデバイスの消費電力を最適化する方法はいくつかあります。最適化は、ハードウェアとソフトウェアで実行できます。ハードウェアコンポーネントを最適化して消費電力を削減できない場合もありますが、コードの命令と関数を変更して最適化することで、ソフトウェア側でそれを実行できます。これだけでなく、開発者はクロック周波数を変更してマイクロコントローラーの消費電力を削減することもできます。データの交換がないときにハードウェアをスリープ状態にし、特定の間隔で定義されたタスクを実行するファームウェアを作成できます。スリープモードでは、接続されたハードウェアの消費電力が非常に少ないため、バッテリーが長持ちする可能性があります。消費電力の手法について詳しく知りたい場合は、マイクロコントローラーでの消費電力の最小化もお読みください。
ESP8266モジュールは最も広く使用されているWi-Fiモジュールで、スリープモードを含むさまざまなモードを持つ小さなサイズの多くの機能が付属しており、これらのモードにはハードウェアとソフトウェアの変更を使用してアクセスできます。ESP8266の詳細については、ESP826Wi-Fiモジュールを使用したIoTベースのプロジェクトを確認できます。その一部を以下に示します。
- ESP8266NodeMCUをAtmega16マイクロコントローラーとインターフェースしてEメールを送信する
- NodeMCUESP8266を使用してFirebaseReal-Timeデータベースに温度と湿度のセンサーデータを送信する
- Google FirebaseConsoleとESP8266NodeMCUを使用したIoT制御のLED
ここでは、ESP8266で利用可能なさまざまなスリープモードについて説明し、ディープスリープモードを使用して定期的にThingspeakサーバーに温度データを送信することでそれらを示します。
必要なコンポーネント
- ESP8266Wi-Fiモジュール
- LM35温度センサー
- ジャンパー線
ESP8266のスリープモードの種類
Esp8266モジュールは次のモードで動作します。
- アクティブモード:このモードでは、チップ全体の電源がオンになり、チップはデータを送受信できます。明らかに、これは最も電力を消費するモードです。
- モデム-スリープモード:このモードでは、CPUは動作可能であり、Wi-Fi無線は無効になっています。このモードは、PWMのように、CPUが動作している必要があるアプリケーションで使用できます。Wi-Fi AP(アクセスポイント)に接続している間はデータ転送なしでWi-Fiモデム回路をオフにして消費電力を最適化します。
- ライトスリープモード:このモードでは、CPUとすべての周辺機器が一時停止します。外部割り込みなどのウェイクアップは、チップをウェイクアップします。データ転送なしで、Wi-Fiモデム回路をオフにし、CPUを一時停止して、消費電力を節約できます。
- ディープスリープモード:このモードでは、RTCのみが機能し、チップの他のすべてのコンポーネントの電源がオフになります。このモードは、データが長い時間間隔で送信される場合に役立ちます。
接続LM35温度センサNodeMCUのA0ピンとを。
ESPモジュールのRSTピンがHIGHの場合、ESPモジュールは実行状態です。RSTピンでLOW信号を受信するとすぐに、ESPが再起動します。
ディープスリープモードを使用してタイマーを設定します。タイマーが終了すると、D0ピンがLOW信号をRSTピンに送信し、モジュールが再起動してウェイクアップします。
これで、ハードウェアの準備が整い、適切に構成されました。温度の読み取り値はThingspeakサーバーに送信されます。このために、thingspeak.comでアカウントを作成し、以下の手順を実行してチャネルを作成します。
次に、WriteAPIキーをコピーします。これはESPコードで使用されます。
ESP8266ディープスリープモードプログラミング
簡単に入手できるArduinoIDEを使用して、ESP8266モジュールをプログラムします。すべてのESP8266ボードファイルがインストールされていることを確認してください。
必要なすべての重要なライブラリを含めることから始めます。
#include
関数にアクセスするためのすべてのライブラリが含まれたら、API書き込みキーを割り当て、Wi-Fi名とパスワードを構成します。次に、データを保存する場所でさらに使用するために、すべての変数を宣言します。
String apiWritekey = "*************"; //ここでTHINGSPEAKWRITEAPIキーに置き換えますcharssid = "******"; // Wi-FiSSID名charpassword = "******"; // Wi-Fi Pasword
ここで、wifi.begin()関数を使用してモジュールをWi-Fiネットワークに接続する関数を作成し、whileループを使用してモジュールがWi-Fiに接続されなくなるまで継続的にチェックします。
void connect1(){ WiFi.disconnect(); delay(10); WiFi.begin(ssid、password); while(WiFi.status()!= WL_CONNECTED){
データをthingspeakサーバーに送信する別の関数を作成します。ここでは、送信する必要のあるAPI書き込みキー、フィールド番号、およびデータを含む文字列が送信されます。次に、client.print()関数を使用してこの文字列を送信します。
void data(){ if(client.connect(server、80)) { String tsData = apiWritekey; tsData + = "&field1 ="; tsData + = String(tempF); tsData + = "\ r \ n \ r \ n"; client.print( "POST / update HTTP / 1.1 \ n"); client.print( "ホスト:api.thingspeak.com \ n");
接続1関数を呼び出します。この関数は、Wi-Fiを接続する関数を呼び出し、温度を読み取り、摂氏に変換します。
void setup(){ Serial.begin(115200); Serial.println( "デバイスはウェイクアップモードです"); connect1(); int値= analogRead(A0); フロートボルト=(値/1024.0)*5.0; tempC =ボルト* 100.0;
次に、data()関数を呼び出して、thingspeakクラウドにデータをアップロードします。最後に、呼び出す重要な関数はESP.deepSleep()です。これにより、モジュールはマイクロ秒単位の定義された時間間隔でスリープ状態になります。
データ(); Serial.println( "15秒間の深いスリープ"); ESP.deepSleep(15e6);
すべてのタスクを一度実行し、定義された時間間隔の後にモジュールをリセットする必要があるため、ループ機能は空のままになります。
作業ビデオと完全なコードは、このチュートリアルの最後にあります。ESP8266モジュールにコードをアップロードします。プログラムをアップロードする前に、RSTとD0に接続されたワイヤを取り外してください。そうしないと、エラーが発生します。
ESP8266でのDeepSleepのテスト
プログラムをアップロードすると、15秒ごとに温度の読み取り値がThingSpeakクラウドにアップロードされ、モジュールがディープスリープモードになります。
これで、ESP8266モジュールでのディープスリープの使用に関するチュートリアルは完了です。ディープスリープは非常に重要な機能であり、ほとんどのデバイスに含まれています。このチュートリアルを参照して、この方法をさまざまなプロジェクトに適用できます。疑問や提案がある場合は、以下に書いてコメントしてください。また、あなたは私たちのフォーラムに到達することができます。