トラ技にESP32の特集があったので、それを参考にしてWiFiコントロール・カーを製作してみました。
				その忘備録です。
				SimpleWiFiServerを利用して、WiFiコントロール・カーを製作しました。
				 なお、今回使用したESP32は、アリババで購入したESP32-DEVKIT ESP-WROOM-32開発ボード($7で800円前後)を
				使用しました。
			
 ・Arduino IDEを取得。
				 ・Arduino IDEでESP-WROOM-32を使用するためのライブラリをインストール。
				 ・サンプルスケッチ「SimpleWiFiServer」を書き換える。
				 ・ESP32-DevKitとモーター駆動回路
				 ・Webを通してWiFiコントロール・カーを前後左右に動かす。
			


 以下のような手持ちの部品を使用して作りました。
								・ESP32-DEVKIT ESP-WROOM-32開発ボード
								・DCモータードライバーMP4212を2個
								・ピンソケット2X19 PIN(ESP32-DEVKIT挿入用)
								・ピンソケット2X10 PIN(MP4212用)
								・基板1枚
								・ちびモーターギア+プーリー、タイヤセット 2セット
								  「ちっちゃいものくらぶ」 tiisai.dip.jp/?page_id=449 で
								 販売されているもの。
								・モバイルバッテリー
								・USB電源ケーブル
								・なんでもキャスター1個
								・スペーサー4個
								・台木
							

 左図は、WiFiコントロール・カーを遠隔操作するためのWeb画面です。
								各ボタンをクリックすることにより、Wi-Fiを通してWiFiコントロール・カーを動かします。
							
1.次の画面が表示されます。
							
						2.画面上のタブ「SOFTWARE」をクリックすると、次の「Download the Arduino IDE」画面が
							表示されますので、右上の「Windows installer」をクリックします。
							
						3.次の「Contribute to the Arduino Software」画面が表示されますので、画面下の
							「JUST DOWNLOAD」をクリックしてダウンロードします。
							
						4.2017/11月現在で、「arduino-1.8.5-windows.exe」がダウンロードされます。
						5.この「arduino-1.8.5-windows.exe」をダブルクリックして、「Arduino IDE」を
							インストールします。
						6.使用許諾の画面では、「I Agree」をクリック。
						7.次のインストール・オプション画面では、「Next」をクリックします。
						8.インストール先の画面では、インストール先を「C:\Arduino」に変更します。
						  (Windowsのユーザ・アクセス制御機能の影響を受けないようにするため)
						9.「Install」をクリックします。
					
Arduino IDEにはESP-WROOM-32を開発するためのライブラリは入っていないので、 自分でダウンロードしてArduino IDEに追加インストールします。
1.GitHub のWebページを開き、
						画面右の「Clone or download」をクリックし、「Download ZIP」をクリックしてZIPファイルを
						ダウンロードします。
							
						2.「Arduino core for the ESP32」は、Arduino IDEの機能に対応していないので手動で
							インストールします。
						 (1) C:\Arduino\hardware フォルダにespressifフォルダを作成。
						 (2) espressifフォルダの中に、esp32フォルダを作成。
						 (3) esp32フォルダの中に、「Arduino core for the ESP32」のZIPファイルを解凍。
						 (4) 解凍したファイルの中の「tools」フォルダを開き、その中の「get.exe」を管理者権限で実行。
						 (5) コマンドプロンプトが表示されて実行されるので、終了するまで待ってコマンドプロンプトをEnd。
						3.Arduino IDEを起動し、ボードを「ESP32 Dev Module」を選択します。
						 (1)「ツール」、「ボード」、「ESP32 Dev Module」の順で選択。
						4.シリアルポートを選択
						 (1) ESP32-DevKitを接続していない状態で、「ツール」?「シリアルポート」で表示されている
							ポートを確認します
						 (2) ESP32-DevKitを接続し、同様に「シリアルポート」を確認すると新たに増えた番号が
							ESP32-DevKitのシリアルポートなので選択します。
					
1.「ファイル」⇒「スケッチ例」⇒「ESP32 Dev Module用のスケッチ例 WiFi」⇒「SimpleWiFiServer」
						の順にクリックするとサンプルプログラム「SimpleWiFiServer」が開きます。
						2.次のように「SimpleWiFiServer」を書き換えます。
						 なお、const char* ssid     = "yokohama";の" "の中には、使用しているWiFiルーターのSSIDを入れ、
						 const char* password = "12345678";の" "の中には、使用しているWiFiルーターのパスワードを入れます。
					
/* WiFi-Control-Car */	
#include <WiFi.h>
const char* ssid     = "yokohama";      //アクセスポイントのSSID
const char* password = "12345678";     //アクセスポイントのパスワード
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);
   pinMode(0, OUTPUT);
   pinMode(2, OUTPUT);
   pinMode(4, OUTPUT);
   pinMode(5, OUTPUT);
   delay(10);
   Serial.println();
   Serial.println();
   Serial.print("Connecting to ");
   Serial.println(ssid);
   WiFi.begin(ssid, password);
   while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
   }
   Serial.println("");
   Serial.println("WiFi connected.");
   Serial.println("IP address: ");
   Serial.println(WiFi.localIP());
   server.begin();
}
void loop(){
   WiFiClient client = server.available();
   if (client) {
      Serial.println("New Client.");
      String currentLine = "";
      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.ESP32-DevKitをUSBでパソコンに接続します。
						  *USBドライバーはパソコンに入っているものとします。
						  *ESP32-DevKitをパソコンに接続する際、USBハブに接続しないで直接パソコンのUSBに接続した方が
						   無難だと思います。
						   WiFiに接続する際に500~800mAの電流が流れるようなので、その方が良いかと思います。
						2.上記プログラムをESP32に書き込みます。「ツール」をクリックして、
						 (1)ボードは、「ESP32 Dev Module」を選択。
						 (2)シリアルポートを選択。
						 (3)ツールバーの「→」をクリックするとコンパイルと書き込みを一度に行います。
						3.不具合について
						 (1)コンパイラ中に、下段のメッセージ欄に「libraries/BLEに無効なライブラリ」と表示されると思います。
						  その原因と対処法が次のWebサイトで丁寧に説明されていますので確認してください。
						   Arduino core for the ESP32 の
							インストール方法
						 (2)プログラムの書込み中に、「複数のライブラリがあります」とエラーが表示されます。
						  原因は、メニューの「スケッチ」⇒「ライブラリーをインクルード」をクリックすると、ライブラリーの一覧
						 が表示され、その下の方に「WiFi」が2つ表示されています。
						  Arduino IDEに初めから入っているWiFiライブラリーとESP32のメーカーEspressif社提供のWiFiライブラリーが
						 同じ名前「wifi」で表示されています。
						 今回は、Espressif社提供のWiFiライブラリーを使いますので、Arduino IDEに初めから入っているWiFiライブラリーを
						次の手順で削除しました。
						 ①「C:\Arduino\libraries」にある「WiFi」ホルダーを他のディレクトリに移動しました。(後で使用するかも
							しれないので残しておく)
						 ②「C:\Arduino\hardware\espressif\esp32\libraries」にある「WiFi」ホルダーはそのままです。
						 ③ それぞれのライブラリーに入っているヘッダーファイル「WiFi.h」は互換性が無いようです。
						4.画面右にあるツールバーの「虫眼鏡」をクリックするとシリアルモニターが開き、正しくWiFi
						接続されていると、IPアドレスが次のように表示されます。記録しておきます。
					
シリアルモニターの表示内容
Connecting to <yokohama> ・・・・・・ WiFi connected. IP address: 192.168.0.5

1.モーターは、ちびモーターを使用しました。
						 *ちびモーターの駆動には30mA程の電流が流れるようです。
						2.モータードライバーは、MP4212を使用しました。(現在販売中止)
						3.左右のモーターは、基台に逆に取り付けています。
					
1.WiFiコントロール・カーの電源を入れます。
						2.ブラウザーに、記録したIPアドレスを入力します。
							
						3.次のWebコントロール画面が表示されます。
							
						4.各ボタンをクリックすると、その通りにWiFiコントロールカーが動きます。