2026年8月30日日曜日

Arduino手習い(WiFi AP WEBサーバ)

 前回作ったプログラムはWiFiルータ経由でサーバとして機能するように出来ているので、1:1で直接携帯と通信する事は出来ない。そこを何とか出来ないかと調べてみた。そのようなサーバを構築するにはESP32がアクセスポイント(AP)として機能する必要があるとともにDHCPなど必要な機能を追加する必要がある。

何か良い例は無いかと探していたら「勝手な電子マン」さんのBlog「ESP32のアクセスポイント (つまりスタンドアローンWiFi-LAN)」を見つけた。

このBlogのsetup()部分を参考に、loop()は部分は前回のサーバプログラムを踏襲してプログラムを組んでみたら。ほとんど修正無く動いた。

使い方は、

  1. 先ずこのプログラムを書き込んだESP32を起動しサーバを立ち上げる。
  2. 次に携帯のWiFiの設定を開き、このプログラムで設定したSSID(ESP32-AP)に接続する(このときプログラム中で設定したパスワードが必要)。

  3. 携帯のブラウザを開きサーバのIPアドレスに接続すると前回と同じ画面が表示される。

 このとき携帯に割り振られるIPアドレスはサーバのIPアドレス+1だった。

とりあえず動いたので、setup()までのソースコードを紹介する。loop()部分は前回と同じなので省略した。 

/********************************************************
 * Original: Independent Access-Point - ESP32 simple example  
 *        Initial version V.00 Sept.26 2020
 *  https://a-tomi.hatenablog.com/entry/2020/09/27/212032
 *                                   by Akira Tominaga
 * Modified by MYcrosLip
********************************************************/
#include "WiFi.h"
const char ssid[]  = "ESP32-AP";  // *** set any ssid ***
const char pass[] =  "11223344";  // *** set any pw   ***
const IPAddress ip(192, 168, 11, 1);   // *** set any addr ***
const IPAddress subnet(255, 255, 255, 0);
WiFiServer server(80);
String header;

gpio_num_t LED = GPIO_NUM_5;
String output5State = "off";
const int output5 = 5;

unsigned long currentTime = millis();
unsigned long previousTime = 0;
const long timeoutTime = 2000;

void setup() {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);  
  digitalWrite(LED, LOW);
   delay(100);
  WiFi.softAP(ssid, pass);
   delay(100);
  WiFi.softAPConfig(ip, ip, subnet);
  IPAddress myIP = WiFi.softAPIP();
  server.begin();
  Serial.print("SSID= ");
  Serial.println(ssid);
  Serial.print("Fixed IP addr= ");
  Serial.println(myIP);
  Serial.println("Server starting!");
}


 

0 件のコメント:

コメントを投稿