PROFESSORHULK
Published © GPL3+

WIFI Controlled Robot (CAR)

Using Node MCU for controlling movements of the robot(car) through wifi.

IntermediateFull instructions provided2 hours715
WIFI Controlled Robot (CAR)

Things used in this project

Hardware components

Node MCU
×1
L298N Motor Driver
×1
BO MOTOR AND WHEEL
×1
Battery Holder 18650 – 2 Cell
×1
18650 Battery Li-ion 3.7V Battery
×1
Breadboard (generic)
Breadboard (generic)
×1
Jumper Wire 30 wire Pack
×1
LED (generic)
LED (generic)
×1
Rocker Switch
×1
Chassis
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

wifi_control_robot(node_mcu)_bb_wzAa5k775C.png

Application

Wifi Control Car App

Code

Wifi_Controlled_Robot.ino

C/C++
// Modified by ProfessorHulk //
// WIFI Controlled Robot //
// Have a Query about it, you can reach us here (Insta ID : the_one_and_only_smasher_tech) //



#define LEFT_LED D1       // Led in NodeMCU at pin            GPIO5  (D1)
#define RIGHT_LED D2      // Led in NodeMCU at pin            GPIO16 (D2)
#define ENA   14          // Enable/speed motors Right        GPIO14 (D5)
#define ENB   12          // Enable/speed motors Left         GPIO12 (D6)
#define IN_1  15          // L298N in1 motors Right           GPIO15 (D8)
#define IN_2  13          // L298N in2 motors Right           GPIO13 (D7)
#define IN_3  2           // L298N in3 motors Left            GPIO2  (D4)
#define IN_4  0           // L298N in4 motors Left            GPIO0  (D3)

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>

String command;             //String to store app command state.
int speedCar = 800;         // 400 - 1023.
int speed_Coeff = 3;

const char* ssid = "PROFESSORHULK CAR";
ESP8266WebServer server(80);

void setup() {
 
 pinMode(ENA, OUTPUT);
 pinMode(ENB, OUTPUT);  
 pinMode(IN_1, OUTPUT);
 pinMode(IN_2, OUTPUT);
 pinMode(IN_3, OUTPUT);
 pinMode(IN_4, OUTPUT);
 pinMode(LEFT_LED, OUTPUT);    // LED pin as output. 
 pinMode(RIGHT_LED, OUTPUT);
  
  Serial.begin(115200);
 
// Connecting WiFi

  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
 
 // Starting WEB-server 
     server.on ( "/", HTTP_handleRoot );
     server.onNotFound ( HTTP_handleRoot );
     server.begin();    
}

void goAhead(){ 

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      digitalWrite(LEFT_LED, HIGH);
      digitalWrite(RIGHT_LED, HIGH);
      analogWrite(ENA, speedCar);
      
      

      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);
  }

void goBack(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      digitalWrite(LEFT_LED, HIGH);
      digitalWrite(RIGHT_LED, HIGH);
      analogWrite(ENA, speedCar);
      
      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);
  }

void goRight(){ 

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      digitalWrite(LEFT_LED, LOW);
      digitalWrite(RIGHT_LED, HIGH);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);
  }

void goLeft(){

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      digitalWrite(LEFT_LED, HIGH);
      digitalWrite(RIGHT_LED, LOW);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);
  }

void goAheadRight(){
      
      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      digitalWrite(LEFT_LED, LOW);
      digitalWrite(RIGHT_LED, HIGH);      
      analogWrite(ENA, speedCar/speed_Coeff);

      
      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar);
   }

void goAheadLeft(){
      
      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      digitalWrite(LEFT_LED, HIGH);
      digitalWrite(RIGHT_LED, LOW);      
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar/speed_Coeff);
  }

void goBackRight(){ 

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, HIGH);
      digitalWrite(LEFT_LED, LOW);
      digitalWrite(RIGHT_LED, HIGH);
      analogWrite(ENA, speedCar/speed_Coeff);

      digitalWrite(IN_3, HIGH);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);
  }

void goBackLeft(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      digitalWrite(LEFT_LED, HIGH);
      digitalWrite(RIGHT_LED, LOW);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, HIGH);
      analogWrite(ENB, speedCar/speed_Coeff);
  }

void stopRobot(){  

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, LOW);
      digitalWrite(LEFT_LED, LOW);
      digitalWrite(RIGHT_LED, LOW);
      analogWrite(ENA, speedCar);

      digitalWrite(IN_3, LOW);
      digitalWrite(IN_4, LOW);
      analogWrite(ENB, speedCar);
 }

void loop() {

    
    server.handleClient();
    
      command = server.arg("State");
      if (command == "F") goAhead();
      else if (command == "B") goBack();
      else if (command == "L") goLeft();
      else if (command == "R") goRight();
      else if (command == "I") goAheadRight();
      else if (command == "G") goAheadLeft();
      else if (command == "J") goBackRight();
      else if (command == "H") goBackLeft();
      else if (command == "0") speedCar = 400;
      else if (command == "1") speedCar = 470;
      else if (command == "2") speedCar = 540;
      else if (command == "3") speedCar = 610;
      else if (command == "4") speedCar = 680;
      else if (command == "5") speedCar = 750;
      else if (command == "6") speedCar = 820;
      else if (command == "7") speedCar = 890;
      else if (command == "8") speedCar = 960;
      else if (command == "9") speedCar = 1023;
      else if (command == "S") stopRobot();
}

void HTTP_handleRoot(void) {

if( server.hasArg("State") ){
       Serial.println(server.arg("State"));
  }
  server.send ( 200, "text/html", "" );
  delay(1);
}

Credits

PROFESSORHULK
9 projects • 9 followers

Comments