0% found this document useful (0 votes)
19 views11 pages

WiFi Robot Remo-WPS Office

This document describes an Arduino code for controlling a robot car remotely over WiFi. It uses an ESP8266 module connected to motor drivers and sensors. The robot can be controlled using a web interface to send commands to move forward, backward, turn, change speed and sound a buzzer. It connects to WiFi as a client but if unable, switches to access point mode to allow direct connection.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views11 pages

WiFi Robot Remo-WPS Office

This document describes an Arduino code for controlling a robot car remotely over WiFi. It uses an ESP8266 module connected to motor drivers and sensors. The robot can be controlled using a web interface to send commands to move forward, backward, turn, change speed and sound a buzzer. It connects to WiFi as a client but if unable, switches to access point mode to allow direct connection.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11

/******************* WiFi Robot Remote Control Mode - L298N 2A ********************/

#include <ESP8266WiFi.h>

#include <ESP8266WebServer.h>

#include <ArduinoOTA.h>

// connections for drive Motor FR & BR

int enA = D1;

int in1 = D2;

int in2 = D3;

// connections for drive Motor FL & BL

int in3 = D4;

int in4 = D5;

int enB = D6;

const int buzPin = D7; // set digital pin D7 as buzzer pin (use active buzzer)

const int ledPin = D8; // set digital pin D8 as LED pin (use super bright LED)

const int wifiLedPin = D0; // set digital pin D0 as indication, the LED turn on if NodeMCU connected to
WiFi as STA mode

String command; // String to store app command state.

int SPEED = 1023; // 330 - 1023.

int speed_Coeff = 3;

ESP8266WebServer server(80); // Create a webserver object that listens for HTTP request on port 80

unsigned long previousMillis = 0;


String sta_ssid = "My car"; // set Wifi networks you want to connect to

String sta_password = ""; // set password for Wifi networks

void setup(){

Serial.begin(115200); // set up Serial library at 115200 bps

Serial.println();

Serial.println("*WiFi Robot Remote Control Mode - L298N 2A*");

Serial.println("------------------------------------------------");

pinMode(buzPin, OUTPUT); // sets the buzzer pin as an Output

pinMode(ledPin, OUTPUT); // sets the LED pin as an Output

pinMode(wifiLedPin, OUTPUT); // sets the Wifi LED pin as an Output

digitalWrite(buzPin, LOW);

digitalWrite(ledPin, LOW);

digitalWrite(wifiLedPin, HIGH);

// Set all the motor control pins to outputs

pinMode(enA, OUTPUT);

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

pinMode(enB, OUTPUT);
// Set the speed to start, from 0 (off) to 1023 (max speed)

analogWrite(enA, SPEED);

analogWrite(enB, SPEED);

// Turn off motors - Initial state

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

// set NodeMCU Wifi hostname based on chip mac address

String chip_id = String(ESP.getChipId(), HEX);

int i = chip_id.length()-4;

chip_id = chip_id.substring(i);

chip_id = "wificar-" + chip_id;

String hostname(chip_id);

Serial.println();

Serial.println("Hostname: "+hostname);

// first, set NodeMCU as STA mode to connect with a Wifi network

WiFi.mode(WIFI_STA);

WiFi.begin(sta_ssid.c_str(), sta_password.c_str());
Serial.println("");

Serial.print("Connecting to: ");

Serial.println(sta_ssid);

Serial.print("Password: ");

Serial.println(sta_password);

// try to connect with Wifi network about 10 seconds

unsigned long currentMillis = millis();

previousMillis = currentMillis;

while (WiFi.status() != WL_CONNECTED && currentMillis - previousMillis <= 10000) {

delay(500);

Serial.print(".");

currentMillis = millis();

// if failed to connect with Wifi network set NodeMCU as AP mode

if (WiFi.status() == WL_CONNECTED) {

Serial.println("");

Serial.println("*WiFi-STA-Mode*");

Serial.print("IP: ");

Serial.println(WiFi.localIP());

digitalWrite(wifiLedPin, LOW); // Wifi LED on when connected to Wifi as STA mode

delay(3000);

} else {

WiFi.mode(WIFI_AP);
WiFi.softAP(hostname.c_str());

IPAddress myIP = WiFi.softAPIP();

Serial.println("");

Serial.println("WiFi failed connected to " + sta_ssid);

Serial.println("");

Serial.println("*WiFi-AP-Mode*");

Serial.print("AP IP address: ");

Serial.println(myIP);

digitalWrite(wifiLedPin, HIGH); // Wifi LED off when status as AP mode

delay(3000);

server.on ( "/", HTTP_handleRoot ); // call the 'handleRoot' function when a client requests URI "/"

server.onNotFound ( HTTP_handleRoot ); // when a client requests an unknown URI (i.e. something


other than "/"), call function "handleNotFound"

server.begin(); // actually start the server

ArduinoOTA.begin(); // enable to receive update/uploade firmware via Wifi OTA

void loop() {

ArduinoOTA.handle(); // listen for update OTA request from clients

server.handleClient(); // listen for HTTP requests from clients


command = server.arg("State"); // check HTPP request, if has arguments "State" then saved the
value

if (command == "F") Forward(); // check string then call a function or set a value

else if (command == "B") Backward();

else if (command == "R") TurnRight();

else if (command == "L") TurnLeft();

else if (command == "G") ForwardLeft();

else if (command == "H") BackwardLeft();

else if (command == "I") ForwardRight();

else if (command == "J") BackwardRight();

else if (command == "S") Stop();

else if (command == "V") BeepHorn();

else if (command == "W") TurnLightOn();

else if (command == "w") TurnLightOff();

else if (command == "0") SPEED = 330;

else if (command == "1") SPEED = 400;

else if (command == "2") SPEED = 470;

else if (command == "3") SPEED = 540;

else if (command == "4") SPEED = 610;

else if (command == "5") SPEED = 680;

else if (command == "6") SPEED = 750;

else if (command == "7") SPEED = 820;

else if (command == "8") SPEED = 890;

else if (command == "9") SPEED = 960;

else if (command == "q") SPEED = 1023;

}
// function prototypes for HTTP handlers

void HTTP_handleRoot(void){

server.send ( 200, "text/html", "" ); // Send HTTP status 200 (Ok) and send some text to the
browser/client

if( server.hasArg("State") ){

Serial.println(server.arg("State"));

void handleNotFound(){

server.send(404, "text/plain", "404: Not found"); // Send HTTP status 404 (Not Found) when there's no
handler for the URI in the request

// function to move forward

void Forward(){

analogWrite(enA, SPEED);

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

analogWrite(enB, SPEED);

}
// function to move backward

void Backward(){

analogWrite(enA, SPEED);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

analogWrite(enB, SPEED);

// function to turn right

void TurnRight(){

analogWrite(enA, SPEED);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

analogWrite(enB, SPEED);

// function to turn left

void TurnLeft(){

analogWrite(enA, SPEED);

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);
digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

analogWrite(enB, SPEED);

// function to move forward left

void ForwardLeft(){

analogWrite(enA, SPEED);

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

analogWrite(enB, SPEED/speed_Coeff);

// function to move backward left

void BackwardLeft(){

analogWrite(enA, SPEED);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

analogWrite(enB, SPEED/speed_Coeff);

}
// function to move forward right

void ForwardRight(){

analogWrite(enA, SPEED/speed_Coeff);

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

analogWrite(enB, SPEED);

// function to move backward right

void BackwardRight(){

analogWrite(enA, SPEED/speed_Coeff);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

analogWrite(enB, SPEED);

// function to stop motors

void Stop(){

analogWrite(enA, 0);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);
digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

analogWrite(enB, 0);

// function to beep a buzzer

void BeepHorn(){

digitalWrite(buzPin, HIGH);

delay(150);

digitalWrite(buzPin, LOW);

delay(80);

// function to turn on LED

void TurnLightOn(){

digitalWrite(ledPin, HIGH);

// function to turn off LED

void TurnLightOff(){

digitalWrite(ledPin, LOW);

You might also like