忘備録(1)は、SimpleWiFiServerを利用してWiFiコントロール・カーを製作しましたが、WiFiルーターが変われば
ルーターのSSIDとパスワードが変わるので、スケッチをコンパイルし直さなければなりません。そこで、
ESP32とArduinoのコアを使用してsoft-APを設定すれば、従来のルーターの接続を必要としません。
これを使えば、ESP-WROOM-32がWiFiルーターとなるので、外部のWiFiルーターは必要ありません。
プログラムでアクセスポイントのSSIDとPasswordを設定すれば、使っているコンピュータで利用可能な
ネットワークを確認し、設定したアクセスポイントに接続すればよいことになります。
1.ヘッダーファイルは、そのまま「WiFi.h」を使用します。
2.soft-APを設定するので、それに接続することができるネットワーク名(SSID)とパスワード、
及びIPアドレスを次の例のように
グローバル定数で指定します。
const char*ssid = "ESP32AP-WiFi"
const char*password = "esp32apwifi"
const IPAddress ip(192,168,30,3);
と適宜自分で設定します。
3.その後soft-APモード WiFi.softAP(ssid, password) を使って、WiFi.softAP(ESP32AP-WiFi,
esp32apwifi)とします。


1号機は、出来るだけ廉価にできるよう以下の部品を使用して作りました。
・ESP32-DEVKIT ESP-WROOM-32開発ボード
・DCモータードライバーは、フルブリッジドライバーBD6211F-E2を2個使用
・ピンソケット2X19 PIN(ESP32-DEVKIT挿入用)
・基板1枚
・ちびモーターギア+プーリー、タイヤセット 2セット
基板の両側に1cmx1cmの角材を付けて、それにちびモーターを設置。
・モバイルバッテリー(100均の電池式モバイルバッテリー)
・USB電源ケーブル
・なんでもキャスター1個
WiFiコントロール・カーを遠隔操作するためのWeb画面は、1号機と2号機ともに同じです。

・1号機では電源を100均の電池式モバイルバッテリーを使いましたが、容量が少ないので
モバイルバッテリーを¥300の物に変更しました。
・ DCモータードライバーは、AlliExpressで¥65で購入したMCGICMのNL91105モジュール
(デュアルDCモータードライバー)に変更しました。
次のビデオは、soft-APモードを利用した2号機を稼働させています。
例として、ネットワーク名(SSID)、パスワード、IPアドレスを次のように設定しました。
SSID:ESP32AP-WiFi
Password:esp32apwifi
IP-Address:192,168,30,3
以下のスケッチをESP32-DevKitに書き込みます。
/* WiFi-Control-Car(softAP) */
#include <WiFi.h>
const char ssid[] = "ESP32AP-WiFi";
const char pass[] = "esp32apwifi";
const IPAddress ip(192,168,30,3);
const IPAddress subnet(255,255,255,0);
const char html[] =
"<!DOCTYPE html><html lang='ja'><head><meta charset='UTF-8'>\
<style>input {margin:8px;width:80px;}\
div {font-size:16pt;color:red;text-align:center;width:400px;border:groove 40px orange;}</style>\
<title>WiFi_Car Controller</title></head>\
<body><div><p>Tank Controller</p>\
<form method='get'>\
<input type='submit' name='le' value='左' />\
<input type='submit' name='fo' value='前' />\
<input type='submit' name='ri' value='右' /><br>\
<input type='submit' name='st' value='停止' /><br>\
<input type='submit' name='bl' value='後左' />\
<input type='submit' name='ba' value='後ろ' />\
<input type='submit' name='br' value='後右' /><br><br>\
</form></div></body></html>";
void stop(){
digitalWrite(0, LOW);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
WiFiServer server(80);
void setup()
{
Serial.begin(115200);
WiFi.softAP(ssid,pass);
delay(100);
WiFi.softAPConfig(ip,ip,subnet);
IPAddress myIP = WiFi.softAPIP();
pinMode(0, OUTPUT);
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
delay(10);
server.begin();
Serial.print("SSID: ");
Serial.println(ssid);
Serial.print("AP IP address: ");
Serial.println(myIP);
Serial.println("Server start!");
}
void loop(){
WiFiClient client = server.available();
if (client) {
String currentLine = "";
Serial.println("New Client.");
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
client.print(html);
client.println();
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
if (currentLine.endsWith("GET /?fo")) {
stop();
digitalWrite(0, HIGH);
digitalWrite(4, HIGH);
}
if (currentLine.endsWith("GET /?le")) {
stop();
digitalWrite(0, HIGH);
}
if (currentLine.endsWith("GET /?ri")) {
stop();
digitalWrite(4, HIGH);
}
if (currentLine.endsWith("GET /?ba")) {
stop();
digitalWrite(2, HIGH);
digitalWrite(5, HIGH);
}
if (currentLine.endsWith("GET /?bl")) {
stop();
digitalWrite(2, HIGH);
}
if (currentLine.endsWith("GET /?br")) {
stop();
digitalWrite(5, HIGH);
}
if (currentLine.endsWith("GET /?st")) {
stop();
}
}
}
client.stop();
Serial.println("Client Disconnected.");
}
}

1.100均の電池式モバイルバッテリーを使用したので、電源部に100μ、10μのコンデンサを
入れておきました。
2.図の緑の線は、ピンコードの部分です。
1.WiFiコントロール・カーの電源を入れます。
2.パソコンのネットワーク接続設定をクリックすると図のようにWiFi一覧リストに、設定した
新しいリスト「ESP32AP-WiFi」が表示されます。

3.このSSIDで設定したパスワード「esp32apwifi」を入力し、ネットワークに接続します。
4.ネットワークへの接続が完了したらブラウザーで図のように、設定したIPアドレスを入力します。

5.図のようなコントロールカーの操作画面がWeb画面に表示されますので、各ボタンをクリックすると、
その通りにWiFiコントロールカーが動きます。