忘備録(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コントロールカーが動きます。