Sei sulla pagina 1di 3

#include <ESP8266WiFi.

h>
WiFiClient client;//define an object from WiFiClient
WiFiServer server(80);//define an object of WiFiServer Class
const char* ssid = "zzzzz";
const char* password = "12345678";
String command =""; // Command received from Android device
#define maximumSpeed 250

// Set Motor Control Pins


int rightMotor2 = 13; // D7 - right Motor -
int rightMotor1 = 15; // D8 - right Motor +
int leftMotor2 = 0; // D3 - left Motor -
int leftMotor1 = 2; // D4 - left Motor +
int enableA = 12; // D6 - enable Mortor Left // no need to be connected just
jumper the pins
int enableB = 14; // D5 - enable Mortor Right

void setup()
{
Serial.begin(115200);

pinMode(enableA, OUTPUT);
pinMode(enableB, OUTPUT);
pinMode(leftMotor1, OUTPUT);
pinMode(leftMotor2, OUTPUT);
pinMode(rightMotor1, OUTPUT);
pinMode(rightMotor2, OUTPUT);

digitalWrite(enableA,LOW);
digitalWrite(enableB,LOW);
digitalWrite(leftMotor1,LOW);
digitalWrite(leftMotor2,LOW);
digitalWrite(rightMotor1,LOW);
digitalWrite(rightMotor2,LOW);

connectWiFi();//independant function to connect with wifi


server.begin();//
}

void loop()
{
client = server.available();
if (!client) return;
command = checkClient ();//check for net

if (command == "forward" || command == "go" || command == "a go")


forwardMotor();
else if (command == "reverse" || command == "down"|| command == "down")
reverseMotor();
else if (command == "left" || command == "left") leftMotor();
else if (command == "right" || command == "right") rightMotor();
else if (command == "stop" || command == "stope" || command == "parar" ||
command == "parando") stopMotor();

sendBackEcho(command); // send command echo back to android device


command = "";
}
/* command motor forward */
void forwardMotor(void)
{

digitalWrite(leftMotor1,HIGH);
digitalWrite(leftMotor2,LOW);
digitalWrite(rightMotor1,HIGH);
digitalWrite(rightMotor2,LOW);
analogWrite(enableA,1000);
analogWrite(enableB,1000);
}

/* command motor backward */


void reverseMotor(void)
{
digitalWrite(enableA,HIGH);
digitalWrite(enableB,HIGH);

digitalWrite(leftMotor1,LOW);
digitalWrite(leftMotor2,HIGH);
digitalWrite(rightMotor1,LOW);
digitalWrite(rightMotor2,HIGH);
analogWrite(enableA,800);
analogWrite(enableB,800);
}

/* command motor turn left */


void leftMotor(void)
{

digitalWrite(leftMotor1,LOW);
digitalWrite(leftMotor2,HIGH);
digitalWrite(rightMotor1,HIGH);
digitalWrite(rightMotor2,LOW);
analogWrite(enableA,512);
analogWrite(enableB,512);

/* command motor turn right */


void rightMotor(void)
{

digitalWrite(leftMotor1,HIGH);
digitalWrite(leftMotor2,LOW);
digitalWrite(rightMotor1,LOW);
digitalWrite(rightMotor2,HIGH);
analogWrite(enableA,312);
analogWrite(enableB,312);
}

/* command motor stop */


void stopMotor(void)
{

digitalWrite(leftMotor1,LOW);
digitalWrite(leftMotor2,LOW);
digitalWrite(rightMotor1,LOW);
digitalWrite(rightMotor2,LOW);
}

/* connecting WiFi */
void connectWiFi()
{
Serial.println("Connecting to WIFI");
WiFi.begin(ssid, password);
while ((!(WiFi.status() == WL_CONNECTED)))
{
delay(300);
Serial.print("..");
}
Serial.println("");
Serial.println("WiFi connected to My Router");
Serial.println("NodeMCU Local IP In My Country is : ");
Serial.print((WiFi.localIP()));
}

/* check command received from Android Device */


String checkClient (void)
{
while(!client.available()) delay(1); //cheack for net conect
String request = client.readStringUntil('\r');
request.remove(0, 5);
request.remove(request.length()-9,9);
return request;
}

/* send command echo back to android device */


void sendBackEcho(String echo)
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");//stander htmal
client.println("<html>"); // start page
client.println(echo);
client.println("</html>");
client.stop();

delay(1);
}
//

Potrebbero piacerti anche