//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.");
}
}