2022年9月4日日曜日

ESP32 wrover WiFi TamiyaBuggyCar


 








//ESP32_wrover_wifi-TamiyaBuggy

//Thanks to mukujii.sakura.ne.jp/esp1.html

//Thanks to www.freenove.com

//Thanks to http://nonbirikousaku.blog.fc2.com/blog-entry-36.html


#include <Wire.h>

#define DRV8830_ADDR 0x64

#define CONTROL 0x00


#include <ESP32Servo.h>

Servo myservo;

int posVal=0;

int servoPin=15;


#include <WiFi.h>

const char* ssid     = "";      

const char* password = "";

const char html[] =

"<!DOCTYPE html><html lang='ja'><head><meta charset='UTF-8'>\

<style>input {font-size:16pt;margin:16px;width:160px;}\

div {font-size:32pt;color:blue;text-align:center;width:600px;border:medium solid black;}</style>\

<title>ESP32wrover WiFiTamiyaBuggy</title></head>\

<body><div><p>WiFi_Controller</p>\

<form method='get'>\

<input type='submit' name='fl' value='ForwardLow' />\

<input type='submit' name='st' value='Stop' />\

<input type='submit' name='fh' value='ForwardHigh' /><br>\

<input type='submit' name='bl' value='BackLow' />\

<input type='submit' name='st' value='Stop' />\

<input type='submit' name='bh' value='BackHigh' /><br>\

<input type='submit' name='lh' value='LeftHigh' />\

<input type='submit' name='ce' value='Center' />\

<input type='submit' name='rh' value='RightHigh' /><br>\

<input type='submit' name='ll' value='LeftLow' />\

<input type='submit' name='ce' value='Center' />\

<input type='submit' name='rl' value='RightLow' /><br><br>\

</form></div></body></html>";


void MotorStop()

{

  Wire.beginTransmission(DRV8830_ADDR);

  Wire.write(CONTROL);

  Wire.write(0x00<<2|0x03); 

  Wire.endTransmission();   

}


void ForwardHigh()

{

  Wire.beginTransmission(DRV8830_ADDR);

  Wire.write(CONTROL);

  Wire.write(0x26<<2|0x01); //OUTPUT 3.05V

  Wire.endTransmission(); 

}


void ForwardLow()

{

  Wire.beginTransmission(DRV8830_ADDR);

  Wire.write(CONTROL);

  Wire.write(0x13<<2|0x01);   //OUTPUT 1.53V

  Wire.endTransmission(); 

}


void Center()

{

  myservo.write(90);

  delay(100); 

}


void BackHigh()

{

  Wire.beginTransmission(DRV8830_ADDR);

  Wire.write(CONTROL);

  Wire.write(0x26<<2|0x02); //OUTPUT 3.05V

  Wire.endTransmission();  

}


void BackLow()

{

  Wire.beginTransmission(DRV8830_ADDR);

  Wire.write(CONTROL);

  Wire.write(0x13<<2|0x02);   //OUTPUT 1.53V

  Wire.endTransmission();  

}


void RightHigh()

{

  myservo.write(160);

  delay(100);     

}


void RightLow()

{

  myservo.write(130);

  delay(100);    

}


void LeftHigh()

{

  myservo.write(20);

  delay(100);    

}


void LeftLow()

{

  myservo.write(50);

  delay(100);    

}


WiFiServer server(80);


void setup()

{  

  Serial.begin(115200);

  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();


  Wire.begin();

  

  myservo.setPeriodHertz(50);

  myservo.attach(servoPin,500,2500);


  Center();

}


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 /?fl")) {

              ForwardLow();              

            }

            if (currentLine.endsWith("GET /?fh")) {

              ForwardHigh();

            }

            if (currentLine.endsWith("GET /?bl")) {

              BackLow();

            }

            if (currentLine.endsWith("GET /?bh")) {

              BackHigh();

            }

            if (currentLine.endsWith("GET /?st")) {

               MotorStop();

            }

            if (currentLine.endsWith("GET /?lh")) {

               LeftHigh();

            }

            if (currentLine.endsWith("GET /?rh")) {

               RightHigh();

            }

            if (currentLine.endsWith("GET /?ll")) {

               LeftLow();

            }

            if (currentLine.endsWith("GET /?rl")) {

               RightLow();

            }                        

            if (currentLine.endsWith("GET /?ce")) {

               Center();

            }              

         }

      }

      

      client.stop();

      Serial.println("Client Disconnected.");

   }

}

0 件のコメント:

コメントを投稿