Arduino IDEを使用したESP32 Webサーバー

Arduino Idewo Shi Yongshitaesp32 Websaba



ESP32 は、GPIO ピンを使用して複数のデバイスに接続できるマイクロコントローラー ボードです。 Wi-FiおよびBluetoothインターフェースを内蔵したデュアルコアプロセッサを搭載しています。これらの両方の機能により、ESP32 は IoT プロジェクトの設計に適したボードになります。 ESP32 ボードの主な機能の 1 つは、既存のアクセス ポイントに接続できることです。それだけでなく、アクセス ポイントを作成して、他のデバイスがそれに接続できるようにすることもできます。

この ESP32 の記事では、ESP32 ボードをアクセス ポイントに接続し、その Web サーバーを設計する方法を検討します。その Web サーバーを使用して、リレー モジュールの助けを借りて LED と AC 機器を制御します。

コンテンツ:

1. ESP32 Webサーバー

Web サーバーには、Web ページを処理して Web クライアントに送信できる特別なプログラムがあります。 Web サイトを開くには、Web ブラウザを使用します。この Web ブラウザは Web クライアントとも呼ばれます。あなたが見たいWebサイトは、Webサーバーと呼ばれる別のコンピュータに保存されています。







Web サーバーと Web クライアントは相互に通信するために、HTTP と呼ばれる共通言語を使用します。その仕組みは次のとおりです。Web クライアントは、HTTP リクエストを使用して Web サーバーに Web ページを要求します。 Web サーバーは、要求された Web ページを送り返します。 Web ページが存在しない場合は、エラー メッセージが表示されます。



ESP32 では、ネットワーク経由で他のデバイスに接続できるだけでなく、Web サーバーを作成し、受信したリクエストに応答することもできるため、Web サーバーを設計できます。 ESP32 は 3 つの異なるモードで動作できるため、これがすべて可能になります。



  • アクセス・ポイント
  • ステーションとアクセスポイントの両方

ESP32 の 3 つのモードすべてについて理解するには、この記事を参照してください。





Arduino IDEを使用してESP32アクセスポイント(AP)を設定する方法

2. Arduino IDEを使用してESP32 Webサーバーを作成する方法

Arduino IDE を使用して ESP32 Web サーバーを作成するには、ESP32 をアクセス ポイントに接続し、Web サーバーの IP アドレスを生成します。 HTML と CSS を適用してサーバー インターフェイスを設計できます。



ESP32 アクセス ポイントの動作を理解したら、Arduino IDE コードを使用して ESP32 Web サーバーを簡単に設計できます。 ESP32 Web サーバー コードは、ESP32 Wi-Fi ライブラリを使用します。このライブラリには ESP32 をアクセス ポイントに接続するために必要な重要な関数がすべて含まれているため、作業が容易になります。

Arduino IDE コードを使用して ESP32 Web サーバーを設計してみましょう。

3. ESP32 Web サーバー コード

ESP32 Web サーバー コードには、アクセス ポイントとの ESP32 接続とサーバーの IP アドレスの取得が含まれます。 IP アドレスを取得したら、同じネットワークに接続して ESP32 Web サーバーにアクセスする必要があります。そこから LED やその他のデバイスを制御できます。

Arduino IDE を開き、ESP32 ボードをそれに接続します。

Arduino IDE への ESP32 ボードのインストール

ESP32 ボードが接続されたら、次のコードをボードにアップロードします。

/**************

Linuxhint.com
LEDを制御するESP32 Webサーバー

**************/
// ライブラリをインポートする のために Wi-Fi接続
#include
// Wi-Fi名とパスワードを入力してください
定数文字 * ssid = 「ESP32」 ;
定数文字 * パスワード = 「123456789」 ;
// ポート番号を選択してください のために ウェブサーバー
WiFiサーバーサーバー ( 80 ) ;
// Web リクエストを保存する変数を作成する
文字列ヘッダー。
// 出力のステータスを保存する変数を作成する
文字列出力26状態 = 'オフ' ;
文字列出力27状態 = 'オフ' ;
// 出力ピンを変数に割り当てます。
const int 出力 26 = 26 ;
const int 出力27 = 27 ;
unsigned long currentTime = ミリ秒 ( ) ;
符号なしの長い以前の時間 = 0 ;
// を選択してください 時間 限界 のために ウェブリクエスト ミリ秒
const long timeoutTime = 2000年 ;
セットアップを無効にする ( ) {
シリアルの開始 ( 115200 ) ;
// 出力ピンを設定する として 出力
  pinMode ( 出力26、出力 ) ;
  pinMode ( 出力27、出力 ) ;
// 出力をオフにする
デジタル書き込み ( 出力26、LOW ) ;
デジタル書き込み ( 出力27、LOW ) ;
// Wi-Fiネットワークに接続する
シリアルプリント ( 「に接続しています」 ) ;
Serial.println ( ssid ) ;
WiFi.begin ( ssid、パスワード ) ;
// 待って それまで 接続が確立されました
その間 ( WiFi.ステータス ( ) = WL_CONNECTED ) {
遅れ ( 500 ) ;
シリアルプリント ( 「。」 ) ;
}
Serial.println ( 「」 ) ;
Serial.println ( 「WiFiが接続されました。」 ) ;
Serial.println ( 'IPアドレス: ' ) ;
Serial.println ( WiFi.localIP ( ) ) ;
サーバーの開始 ( ) ;
}

ボイドループ ( ) {
WiFiClient クライアント = サーバー.利用可能 ( ) ; // チェック のために 新しいクライアント
もし ( クライアント ) { // クライアントが接続されている場合、
現在の時間 = ミリ秒 ( ) ;
前の時間 = 現在の時間;
Serial.println ( 「新しいクライアントです。」 ) ; // シリアルポートに通知する
文字列 currentLine = 「」 ; // クライアントデータを保存する文字列を作成する
その間 ( クライアント接続済み ( ) && 現在の時刻 - 前の時刻 = 0 ) {
Serial.println ( 「GPIO 26 オン」 ) ;
出力26状態 = 'の上' ;
デジタル書き込み ( 出力26、HIGH ) ;
} それ以外 もし ( header.indexOf ( 「/26/オフを取得」 ) > = 0 ) {
Serial.println ( 「GPIO 26 オフ」 ) ;
出力26状態 = 'オフ' ;
デジタル書き込み ( 出力26、LOW ) ;
} それ以外 もし ( header.indexOf ( 「/27/を取得」 ) > = 0 ) {
Serial.println ( 「GPIO 27 オン」 ) ;
出力27状態 = 'の上' ;
デジタル書き込み ( 出力27、HIGH ) ;
} それ以外 もし ( header.indexOf ( 「/27/オフを取得」 ) > = 0 ) {
Serial.println ( 「GPIO 27 オフ」 ) ;
出力27状態 = 'オフ' ;
デジタル書き込み ( 出力27、LOW ) ;
}

client.println ( 「」 ) ;
client.println ( '<ヘッド><メタ名= ビューポート 「コンテンツ」 =デバイス幅、初期スケール= 1 >' ) ;
client.println ( '<リンク リリース=' アイコン ' href=' データ:、 >' ) ;
// ボタンのスタイルを設定する CSS
client.println ( '