Hi, I need help with my project, I'm trying to build a RC car with Wi-Fi using ESP 01 and Arduino Mega 2560. I'm programming the ESP 01 with another Arduino. So far I've managed to create an access point for the ESP 01, which looks like this:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char* ssid = "RC_Auticko";
const char* password = "12345678";
ESP8266WebServer server(80);
void handleRoot() {
String page = "<html><body><h1>RC Auticko</h1>";
page += "<a href=\"/forward\"><button>Vpred</button></a><br>";
page += "<a href=\"/backward\"><button>Zpet</button></a><br>";
page += "<a href=\"/left\"><button>Leva</button></a><br>";
page += "<a href=\"/right\"><button>Prava</button></a><br>";
page += "<a href=\"/stop\"><button>Stop</button></a>";
page += "</body></html>";
server.send(200, "text/html", page);
}
void setup() {
Serial.begin(9600); // Spojení s Arduinem
WiFi.softAP(ssid, password);
server.on("/", handleRoot);
server.on("/forward", []() {
server.send(200, "text/html", "<html><body><h1>Vpred</h1><a href=\"/\">Zpet</a></body></html>");
Serial.println("FORWARD");
});
server.on("/backward", []() {
server.send(200, "text/html", "<html><body><h1>Zpet</h1><a href=\"/\">Zpet</a></body></html>");
Serial.println("BACKWARD");
});
server.on("/left", []() {
server.send(200, "text/html", "<html><body><h1>Leva</h1><a href=\"/\">Zpet</a></body></html>");
Serial.println("LEFT");
});
server.on("/right", []() {
server.send(200, "text/html", "<html><body><h1>Prava</h1><a href=\"/\">Zpet</a></body></html>");
Serial.println("RIGHT");
});
server.on("/stop", []() {
server.send(200, "text/html", "<html><body><h1>Stop</h1><a href=\"/\">Zpet</a></body></html>");
Serial.println("STOP");
});
server.begin();
}
void loop() {
server.handleClient();
}
And code for arduino wich looks like this:
#include <SD.h>
#include <TMRpcm.h>
#include <SPI.h>
// SD karta
#define SD_ChipSelectPin 53
TMRpcm tmrpcm;
// Motor A
const int motorPin1 = 5; // L293D - pin 14
const int motorPin2 = 6; // L293D - pin 10
// Motor B
const int motorPin3 = 10; // L293D - pin 7
const int motorPin4 = 9; // L293D - pin 2
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600); // Debug přes USB
Serial1.begin(9600); // Komunikace s ESP-01
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD karta nenalezena nebo chyba inicializace.");
return;
}
tmrpcm.speakerPin = 11;
tmrpcm.setVolume(5);
tmrpcm.play("5.wav");
}
void loop() {
if (!tmrpcm.isPlaying()) {
tmrpcm.play("5.wav");
}
if (Serial1.available()) {
String command = Serial1.readStringUntil('\n');
command.trim();
Serial.println("Přijatý příkaz: " + command);
if (command == "FORWARD") {
forward();
} else if (command == "BACKWARD") {
backward();
} else if (command == "LEFT") {
left();
} else if (command == "RIGHT") {
right();
} else if (command == "STOP") {
stopMotors();
}
}
}
void forward() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
}
void backward() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
}
void left() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
}
void right() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
}
void stopMotors() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
Which works pretty well, but when I press some of these buttons, it's a little slow and the motors just shake a little. The reproductor part works, but the button does not work properly. Thanks for any advicies.
