ESP32をHTTPクライアントとして使用し、WiFiを介してリモートサーバーに情報を送信する
このチュートリアルでは、ESP32マイクロコントローラーをHTTPクライアントとして使用し、WiFi経由でリモートサーバーにデータを送信する方法を探ります。ESP32はWiFiとBluetoothの機能を組み合わせた強力な開発ボードで、IoTアプリケーションに最適です。このチュートリアルの終わりまでには、ユーザー定義のパラメーターでHTTPリクエストを送信し、サーバーからの応答を受信できるようになります。
私たちはESP32のプログラミングにArduino IDEを使用し、環境設定のための必要な手順を案内します。視覚的な手順については、関連するビデオ(ビデオは:00)をチェックすることをお勧めします。
ハードウェアの説明
このプロジェクトの主なコンポーネントはESP32マイクロコントローラー、具体的にはWROOM32モジュールです。このモジュールには、さまざまな入出力操作に使用できる38本のピンがあります。3.3ボルトで動作し、内蔵のWiFiおよびBluetooth機能を備えています。ESP32は多用途で、GPIOピンや通信プロトコルのおかげで多くのアプリケーションに使用できます。
ESP32に加えて、プログラミングとデバッグのためにUSB-to-シリアルコンバータが必要な場合があります。このモジュールは、マイクロコントローラが高い電圧源から安定した3.3Vの供給を受けることを保証する電圧レギュレータも含まれています。全体として、ESP32はさまざまなプロジェクトに適した豊富な機能を備えたマイクロコントローラです。
データシートの詳細
| 製造業者 | エスプレスシステムズ |
|---|---|
| 部品番号 | ESP32-WROOM-32 |
| ロジック/入出力電圧 | 3.3 V |
| 供給電圧 | 5 V (最大) |
| 出力電流(チャネルごと) | 12 mA |
| ピーク電流(チャネルごと) | 160 mA |
| PWM 周波数ガイダンス | 1 kHz |
| 入力論理閾値 | 0.3 * VDD(低), 0.7 * VDD(高) |
| 電圧降下 / RDS(on)/ 飽和度 | 0.5ボルト |
| 熱的限界 | 125 °C |
| パッケージ | QFN |
| ノート / バリアント | 複数のフラッシュサイズが用意されています |
- ESP32を損傷しないように、適切な電圧レベル(3.3V)を確保してください。
- 電源ピンの近くに適切なデカップリングコンデンサを使用して、安定した動作を確保してください。
- モジュールがピーク電流定格付近で動作する場合は、ヒートシンクを実装してください。
- ESP32の内蔵WiFiを利用して、簡単にネットワーク接続を行います。
- GPIOピンの設定には注意して、ショートサーキットを防いでください。
- 複雑な統合の前に、機能性を確認するためにシンプルなスケッチでテストしてください。
配線指示
このプロジェクトのためにESP32を配線するには、まずESP32のグラウンドピンを電源のグラウンドに接続します。次に、5Vの電源をESP32のVinまたはV5ピンに接続します。これにより内部の電圧レギュレーターに電力が供給され、マイクロコントローラーに3.3Vが供給されます。
HTTPクライアント機能を使用するには、ESP32がWiFiネットワークに接続されていることを確認してください。センサーやLEDのような追加コンポーネントを使用する場合は、適切なピンを接続する必要があります。例えば、LEDをGPIOピン2に接続し、電流を制限するために抵抗器を直列に接続します。LEDの長い脚(アノード)はピン2に接続し、短い脚(カソード)はグランドに接続します。
コード例とウォークスルー
提供されたコードスニペットでは、HTTPクライアントを初期化し、キー識別子を定義します。mainURL, リクエストを送信しているURLを保持しており、userユーザー情報を含む。コードは、ESP32を指定されたWiFiネットワークに接続するように設定します。
String mainURL ="http://ddas.cc/httpTest/?";
String user="user=ahmad22";ここ、mainURL私たちが目指しているのはエンドポイントですが、userHTTPリクエストで送信されるユーザーパラメータを保持します。
In thesetup()関数では、シリアル通信を開始し、WiFi接続を設定します。また、HTTPクライアントのインスタンスを作成することでHTTPリクエストの準備も行います。
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("Robojax", "Your password");
}このセクションでは、デバッグのためにシリアルモニターを初期化し、WiFiネットワークに接続します。認証情報は以下に定義されています。addAP()方法。
In theloop()関数では、成功したWiFi接続を確認し、HTTP GETリクエストを送信します。パラメータには、ユーザーと温度の値が含まれます。
if (http.begin(client, mainURL+user+"&temp="+temperature+"&type="+type)) {
int httpCode = http.GET();}このコードは、クエリパラメータを持つ完全なURLを構築し、GETリクエストを実行します。成功した場合、サーバーの応答を取得します。
デモンストレーション / 期待すること
ESP32の電源が入ってプログラムが実行されると、指定されたWiFiネットワークに接続し、サーバーにHTTP GETリクエストを送信する必要があります。出力はシリアルモニターで監視でき、HTTPステータスコードとサーバーからのレスポンスペイロードを見ることができます。一般的な問題には、WiFi資格情報の誤りや到達不可能なサーバーが含まれる場合があります(動画の12:30で)。
ビデオのタイムスタンプ
- 00:00 開始
- 00:53 イントロダクション
- 5Vおよび3.3Vピン
- 08:38 機能の説明
- 14:03 データシートのピン
- 17:00 ブリンク例
- 19:14 外部LEDを使用した点滅例
- 21:00 HTTPクライアントテスト
/*
* ESP32 HTTP Client example
* This example is part of Introduction to ESP32 WiFi, Bluetooth Microcontroller board
📚⬇️ Download and resource page https://robojax.com/RJT211
watch full video https://youtu.be/--Fj8QDlGuQ
*
* Updated/Written by Ahmad Shamshiri
* On August 25, 2019 in Ajax, Ontario, Canada
* Watch video instruction for this code:
* https://youtu.be/--Fj8QDlGuQ
*
*
Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place.
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
ESP8266WiFiMulti WiFiMulti;
String mainURL ="http://ddas.cc/httpTest/?";
String user="user=ahmad22";
float temperature=45.3;
char type='j';
void setup() {
Serial.begin(115200);
// Serial.setDebugOutput(true);
Serial.println();
Serial.println();
Serial.println();
for (uint8_t t = 4; t > 0; t--) {
Serial.printf("[SETUP] WAIT %d...\n", t);
Serial.flush();
delay(1000);
}
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("Robojax", "YOur password");
}
void loop() {
// wait for WiFi connection
if ((WiFiMulti.run() == WL_CONNECTED)) {
WiFiClient client;
HTTPClient http;
Serial.print("[HTTP] begin...\n");
if (http.begin(client, mainURL+user+"&temp="+temperature+"&type="+type)) { // HTTP
Serial.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
} else {
Serial.printf("[HTTP} Unable to connect\n");
}
}
delay(10000);
}
必要かもしれないもの
-
アリエクスプレスAliExpressからESP32カメラを購入する2s.click.aliexpress.com
リソースと参考文献
-
ドキュメンテーションESP32公式ドキュメントページdocs.espressif.com
ファイル📁
データシート(pdf)
-
esp32_datasheet_en
esp32_datasheet_en.pdf0.94 MB