Making NodeMCU Esp8266 Wifi Car | Mobile control car

In this post, I will show you how you can make a Wi-Fi Car Using NodeMCU esp8266. Here I Am Using ESP8266[installed in nodeMCU ] To Communicate With Smartphone And L298N Motor Driver Module To Control Motor.

VIDEO

MATERIAL REQUIRED

NodeMCU Car Is Controlled By Using Android Mobile Phone Instead Of Any Other Method Like Buttons, Gesture, Etc. Here Only Needs To Touch Button In Android Phone To Control The Car In Forward, Backward, Left And Right Directions. So Here Android Phone Is Used As Transmitting Device And NodeMCU ESP8266 Placed In Car Is Used As Receiver. Android Phone Will Transmit Command Using Its In-Built Wi-fi To Car So That It Can Move In The Required Direction Like Moving Forward, Reverse, Turning Left, Turning Right And Stop.

For Any Query, You Can also Contact Me.

Connection Diagram

NodeMCU Car Circuit Diagram

Assembling

first of all, fix BO Motors on MDF Board as shown in the image.you can use hot glue to fix them. You can also use screws to fix them.

Connect Lift Side Two Motors In Parallel And As Well As The Right Side Motors.

Now, fix l298N motor driver on MDF board as shown in the image and connect BO motors wire to the motor driver as shown in the diagram.

fix the node mCU on mDF board and connect the node MCU to l298N motor driver using jumper wire with the help of diagram.connect the power connector as well

Node MCU Programming

Assembling Part Has Been Done, So Finaly It’s The Time Of Programming.

Connect NodeMCU to PC

Connect NodeMCU To Pc Using USB Cable.

before upload the code we have to setup the arduino ide for node MCU ESP 8266.

Searching for esp8266

So, first of all, open the Arduino ide and go to file>preferences Or press Ctrl + Comma Now in the bottom of preferences window you will see the Additional Board Manager Urls block.now remove the old link and paste the following url in the Additional board manager URLs block.

Url Is: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Installing Esp8266 in Arduino ide

go to tools>board>board manager and in board manager window search for ESP8266 and then install the latest version of esp8266.

the setup has been done for node MCU in arduino ide. so finaly its the time to upload the code.

Selecting NodeMCU In Arduino ide

Then go to tools>Board and select for node MCU 1.0[esp-12E module]

Selecting Port in Arduino ide for NodeMCU

Now go to tools>port and select the latest port[ in my case it is com6 ]

Now Copy The Below-Written Code And Paste In Arduino Ide.

NodeMCU Car Code

#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 = "NodeMCU 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); 
  
  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);
      analogWrite(ENA, speedCar);

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

void goBack(){ 

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

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

void goRight(){ 

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

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

void goLeft(){

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

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

void goAheadRight(){
      
      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, 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);
      analogWrite(ENA, speedCar);

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

void goBackRight(){ 

      digitalWrite(IN_1, HIGH);
      digitalWrite(IN_2, LOW);
      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);
      analogWrite(ENA, speedCar);

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

void stopRobot(){  

      digitalWrite(IN_1, LOW);
      digitalWrite(IN_2, 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);
}


Uploading Code In NodeMCU

Now Click On Upload Button To Upload The Code.

After Successful Upload Disconnect NODE MCU from Pc.

Setup

Fixing Battery On The Body Of Node MCU Car

fix the battery on MDF board as shown in the image.

Fixing Wheels In Node MCU Car

Now I Secure The Wheel On The Shaft Of The Gear Motor.

Connecting Battery To Node MCU Car

now I connect the battery, Make sure to check polarity.

Connecting Node MCU to WIFI

turn on wifi of your smartphone and connect your wifi to node MCU.

Node MCU Car Application

now Download the nodemCU car application and Then Open It. In further Post I will Tell You How You Can Use This App.

Download NodeMCU Car Application.

Play With Node MCU Car

Now this is the screen to play with your car, you can run you car from the joystick and you can also change the speed with the slider.

I hope you enjoyed the post. if you like this post or you have any doubt let me know in the comment section. To Connected with Us, You Can Also Subscribe Our Channel.

17 thoughts on “Making NodeMCU Esp8266 Wifi Car | Mobile control car”

  1. the “Download Node MCU Car Application.” points to Arduino code. I am looking for the Android smartphone app. Thanks

  2. Fine, I done my firsr ioT project with great sucess without hazzile. Hats of .. ..GREAT JOB. Very good explanation .Thanks A iOT.

Leave a Reply

Your email address will not be published. Required fields are marked *