ESP8266 WiFi モジュールと Arduino を使用して HTTP クエリを作成するライブラリ

ESP8266 WiFi モジュールと Arduino を使用して HTTP クエリを作成するライブラリ

ESP8266 WiFi モジュールと Arduino を使用して HTTP クエリを作成するライブラリ

マイクロコントローラーとの間で情報を送受信する簡単な方法は、情報を Web サーバーに集中させることです。これは、たとえばデータベースに直接アクセスする方法ほど効率的ではありませんが、特にマイクロコントローラーをベースにしたプロジェクトを考慮し、ユビキタス性 (クラウド上のデータ) とシンプルさ (クラウド上のデータ) という利点を追加する場合には、十分に効果的です。本システムによる情報の送信は、HTTP POSTリクエストを発行し、HTTP GETリクエストの応答内容を解析して受信することで行われます。

目次

    El ESP8266 WiFi モジュール これは非常に経済的なオプションであり、マイクロコントローラーでの使用に非常に適したパフォーマンスを備え、AT コマンドでの作業が非常に簡単です。

    HTTP リクエストでの使用を体系化するために、睡眠管理デバイス プロジェクト (SleepManager と呼んでいます) のニーズをサポートする小さなライブラリを開発しました。このライブラリは、オブジェクトへの拡張を可能にする Web サーバー上にそのインフラストラクチャを基盤としているためです。 IoT として クラウドサービス。 UDP リクエストなどの他のサービスをライブラリに追加することは難しくありません。 NTP 経由の時刻同期 ただし、リンクされたテキストで説明しているように、これは私のニーズにとって重要ではなく、このライブラリの使用例で示すように、その目的のために準備された Web ページへの HTTP リクエストで問題なく解決できます。

    ライブラリの動作は、デバイスが利用可能な場合に AT コマンドを送信し、ポイント WiFi アクセスやサーバーが参照されています。

    このライブラリは、ESP8266 WiFi モジュールがデータ受信の警告として +IPD コードを返し、サーバーから返された情報で小さなバッファを埋めるという事実を利用します。睡眠管理デバイス プロジェクトでは、サーバーから返されたごくわずかなデータを分析する必要があるため、節約するために、バッファーとバッファーを介して実行されるポインターは特に小さくなっています。これは、ライブラリを再利用して大量のデータを処理するために最初に変更する必要があるものの XNUMX つです。

    パブリックとして公開される関数により、(1) モジュールのステータスを知ることができます。モジュールが接続されているかどうか、バッファーにデータがあるかどうか、およびその量、ESP8266 モジュールが要求された操作を完了したかどうかです。 ; (2) DHCP サーバーを使用してネットワーク上の WiFi アクセス ポイントに接続し、(3) HTTP GET および POST リクエストを実行します。ただし、ご覧のとおり、コードは他のものを非常に簡単に追加できるように設計されています。

    内部機能に関しては、最初に XNUMX つの行列が構築されます。XNUMX つは AT 命令で、もう XNUMX つは成功とエラーの予想される応答です。その後、ライブラリを使用するプログラムは、その関数を時々呼び出す必要があります。 enviar これは、注文が利用可能でビジーでない場合はモジュールに、また関数に注文を送信する役割を果たします。 受け取る ESP8266 モジュール (および該当する場合はそれを介した HTTP サーバー) からの応答を処理します。

    信号損失によりモジュールが切断される可能性があるため、メイン プログラムは ESP8266 モジュールが WiFi アクセス ポイントに接続されているかどうかを確認できます (関数を使用) 接続) そうでない場合は接続を試みます (関数を使用) 接続_WiFi)

    要求された操作が終了したかどうかを知るために、プログラムは関数を使用できます。 操作_終了しました その場合は別のものを送信するか、関数が使用された結果のデータを使用します 読み取りバッファ、操作が完了するまで ESP8266 モジュールに到着したデータで満たされたバッファの内容を返します。 バッファーの長さ これは、サーバーが送信されると警告したこのデータの量を報告します (モジュール自体からの情報を割り引くことができるように)

    以下の例では、ESP8266 WiFi モジュールで HTTP クエリ ライブラリを使用して、一定の時間間隔ごとにデータ (アナログ入力の読み取りから取得されるパーセンテージ) をサーバーに送信します。応答の受信を期待していないため、バッファーは使用されず、操作が正しく完了するだけで十分です。このシステムは、センサーの読み取り結果をサーバーに保存するために睡眠管理デバイス プロジェクトで使用しているものです。

    次の例では、HTTP GET クエリを使用してサーバーの時刻をクエリし、推定応答時間を追加することでマイクロ制御デバイスの時刻と同期します。実際、デバイスの時間がサーバーの時間より大きいことを確認し、デバイスの一部であるリアルタイム クロックの時間が正確であるか、ダウンロードによって失われたかを簡単に確認するために、さらに 4 ~ 6 秒が追加されます。 。 バッテリー。

    多くのテストの後、私はこのシステムが ESP8266 WiFiモジュールとの時刻同期 私のニーズには十分に正確です。最悪の場合、エラーは 10 秒未満ですが、私の場合はあまり関係ありません。

    コードに見られるように、読み取りによってバッファーがリセットされ、新しいデータを格納できるようにするため、最初にバッファーの長さをクエリする必要があります。

    バッファの内容が読み取られると、この例では時刻を取得するために処理されます。まず、中かっこ間のテキストが選択されます (サーバーは次のコマンドを使用して応答します) PHP echo “{“.time().”}”) lo transforma en un “objeto tiempo” y de él obtiene en formato humano la fecha y la hora.

    次のサンプル プログラムはユーザーのクエリからインスピレーションを得たもので、サービスを使用してパブリック IP アドレスを検索するために使用されます。 CheckIP AWS(アマゾンウェブサービス) XNUMX分ごとに。

    前の例と同様に、使用されるネットワーク構成 (この例では 192.168.1.X)、SSID、WiFi キーに応じて変更する必要がある一連の仮定が行われます。 IP アドレスはあまり洗練されていません。よりオーソドックスな方法でそれを行う API があるかもしれませんが、IP アドレスは HTTP GET リクエストに対する応答の最後の行であると想定されています。


    あなたができます Arduino Uno で HTTP クエリ用の ESP8266 ライブラリをダウンロードする (コンソールなし) ここから次のことができます Arduino 用 ESP8266 HTTP クエリ ライブラリをダウンロードする コンソールを使用するもの。つまり、ソフトウェアによってシリアル ポートを実装するか、マザーボードなどのハードウェアとして使用する必要があります。 Arduinoメガ o Arduinoのレオナルド.

    コメントを投稿

    見逃したかもしれません