How to make a WIFI controlled car using Nodemcu and Blynk app – Step by step instructions
Hello guys, welcome back. In this tutorial, we are going to talk about how to make a WiFi-controlled car using Nodemcu. Nodemcu ESP8266 board and Blynk application are mainly used for this. Also, this can be easily controlled by your smartphone. We have described to you step-by-step how to do this through this tutorial.
Process of this WIFI-controlled car
When this WIFI-controlled car is powered on, the Nodemcu board connects to the Blynk cloud via a WiFi connection. Then, when you press the Commands (Forward, Backward, Left, Right) buttons on the interface created in the Blynk app, those values will be sent to the Nodemcu board via the Blynk cloud. Then, the gear motors rotate according to those values. The L298N motor driver board is used for this. Also, the speed of these motors can be controlled by the slider created in the Blynk app.
So, let’s make this smart car step by step. The required components are as follows.
- Nodemcu ESP8266 x 1 — Our Store / Amazon
- L298N motor driver x 1 — Our Store / Amazon
- Gear motor x 4 — Our Store / Amazon
- Robot wheel x 4 — Our Store / Amazon
- Battery holder x 1 — Our Store / Amazon
- Li-ion battery x 2 — Amazon /
- Jumper wires — Our Store / Amazon
- Breadboard x 1 — Our Store / Amazon
- Foamboard piece — Amazon /
Disclosure: These Amazon links are Affiliate links. As an Amazon Associate, I earn from qualifying purchases.
Step 1
Firstly, identify these components.
Step 2
Secondly, glue the gear motors to the foam board, To do this, use the Glue gun.
Step 3
Thirdly, attach the motor driver board to the top of the foam board. Afterward, connect the gear motors to the Motor driver board. For that, use the circuit diagram below.
Step 4
OK, now glue the breadboard as follows. Then, attach the Nodemcu board to the breadboard.
Step 5
Next, connect the motor driver board to the Nodemcu board. For that, use the above circuit diagram.
Step 6
Now, connect the battery holder with the GND and 12v terminals on the motor drive board. After, glue it as follows.
Step 7
OK. let’s set up the Blynk application. To do this. download and install this app on your smartphone using the App Store or Play Store. After, follow the steps below.
- First, run the Blynk app on your smartphone. Then, click the “New project” button and enter the project name as you like. After, select the device and connection type. Finally, click the “Confirm” button.
- OK, now we add to the widget interface. To do this, click the “+” button and add four “Styled buttons”. After, arrange them as follows.
- Now, let’s set up these buttons. First, click the up button and enter the button name as you like. After, change the PIN value to “virtual V0”. Change the edge type to “PILL” mode.
- Second, click the down button and enter the button name as you like. After, change the PIN value to “virtual V1”. Change the edge type to “PILL” mode.
- Third, click the left button and enter the button name as you like. After, change the PIN value to “virtual V2”. Change the edge type to “PILL” mode.
- Last, click the right button and enter the button name as you like. After, change the PIN value to “virtual V3”. Change the edge type to “PILL” mode.
- Then, we can see the buttons as follows.
- Then, click again the “+” button and add a slider widget. After, click this widget and name it as you like. Change the PIN to “virtual V4”.
- Lastly, arrange these buttons as follows.
Step 8
Next, connect this smart car to the computer. OK. let’s now create the program for this smart car. It is as follows. First, download and install the libraries below.
/*Nodemcu ESP8266 WIFI control car.
* This code created by sritu hobby team.
* https://srituhobby.com
*/
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
//Motor PINs
#define ENA D0
#define IN1 D1
#define IN2 D2
#define IN3 D3
#define IN4 D4
#define ENB D5
bool forward = 0;
bool backward = 0;
bool left = 0;
bool right = 0;
int Speed;
char auth[] = ""; //Enter your Blynk application auth token
char ssid[] = ""; //Enter your WIFI name
char pass[] = ""; //Enter your WIFI passowrd
void setup() {
Serial.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENB, OUTPUT);
Blynk.begin(auth, ssid, pass);
}
BLYNK_WRITE(V0) {
forward = param.asInt();
}
BLYNK_WRITE(V1) {
backward = param.asInt();
}
BLYNK_WRITE(V2) {
left = param.asInt();
}
BLYNK_WRITE(V3) {
right = param.asInt();
}
BLYNK_WRITE(V4) {
Speed = param.asInt();
}
void smartcar() {
if (forward == 1) {
carforward();
Serial.println("carforward");
} else if (backward == 1) {
carbackward();
Serial.println("carbackward");
} else if (left == 1) {
carturnleft();
Serial.println("carfleft");
} else if (right == 1) {
carturnright();
Serial.println("carright");
} else if (forward == 0 && backward == 0 && left == 0 && right == 0) {
carStop();
Serial.println("carstop");
}
}
void loop() {
Blynk.run();
smartcar();
}
void carforward() {
analogWrite(ENA, Speed);
analogWrite(ENB, Speed);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void carbackward() {
analogWrite(ENA, Speed);
analogWrite(ENB, Speed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void carturnleft() {
analogWrite(ENA, Speed);
analogWrite(ENB, Speed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void carturnright() {
analogWrite(ENA, Speed);
analogWrite(ENB, Speed);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void carStop() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
Code explanation
First, WIFI and Blynk libraries are included.
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
This code defines the PINs that connect the motor driver board to the Nodemcu board.
//Motor PINs
#define ENA D0
#define IN1 D1
#define IN2 D2
#define IN3 D3
#define IN4 D4
#define ENB D5
After, these variables were created to put the blynk application command button values.
bool forward = 0;
bool backward = 0;
bool left = 0;
bool right = 0;
int Speed;
OK, now we enter the Blynk application “Auth token” and WIFI contact information. For that, use your details.
char auth[] = “”; //Enter your Blynk application auth token
char ssid[] = “”; //Enter your WIFI name
char pass[] = “”; //Enter your WIFI passowrd
In the setup function, the serial monitor and Blynk library begin. Also, motor driver board PINs are set as output PINs.
void setup() {
Serial.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENB, OUTPUT);
Blynk.begin(auth, ssid, pass);
}
This code gets the values through the Blynk application.
BLYNK_WRITE(V0) {
forward = param.asInt();
}
BLYNK_WRITE(V1) {
backward = param.asInt();
}
BLYNK_WRITE(V2) {
left = param.asInt();
}
BLYNK_WRITE(V3) {
right = param.asInt();
}
BLYNK_WRITE(V4) {
Speed = param.asInt();
}
This “smartcar” function is the main code of this program. Through this code, the Blynk app button values are checked using the IF condition. That is,
- If the forward variable value is 1, the smart car moves forward.
- If the backward variable value is 1, the smart car moves backward.
- If the left variable value is 1, the smart car moves left.
- If the right variable value is 1, the smart car moves right.
void smartcar() {
if (forward == 1) {
carforward();
Serial.println(“carforward”);
} else if (backward == 1) {
carbackward();
Serial.println(“carbackward”);
} else if (left == 1) {
carturnleft();
Serial.println(“carfleft”);
} else if (right == 1) {
carturnright();
Serial.println(“carright”);
} else if (forward == 0 && backward == 0 && left == 0 && right == 0) {
carStop();
Serial.println(“carstop”);
}
}
In the loop function, called the “smartcar” function and Blynk library.
void loop() {
Blynk.run();
smartcar();
}
These functions used the gear motor forward, backward, left, and right.
void carforward() {
analogWrite(ENA, Speed);
analogWrite(ENB, Speed);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void carbackward() {
analogWrite(ENA, Speed);
analogWrite(ENB, Speed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void carturnleft() {
analogWrite(ENA, Speed);
analogWrite(ENB, Speed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void carturnright() {
analogWrite(ENA, Speed);
analogWrite(ENB, Speed);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void carStop() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
Step 9
OK, now select board and port. Afterward, upload this code to the Nodemcu board.
Step 10
OK, the Blynk app and program are done. Now, unplug the USB cable and install the smart car wheels.
Step 11
Lastly, attach the batteries to the battery holder and turn ON your smart car. Now, run the Blynk app project we created earlier. OK, enjoy this project. The full video guide is given below. So, we will meet in the next tutorial. Have a good day.
How to make a WIFI controlled car using Nodemcu and Blynk app – Step by step instructions
minimum how many volt battery is required to run this project
9v batteries are good for this project
Sir When i used the code it showing error that the D0 is not in the scope
It is your error. Check again your program.
DO was not declared in this scope. How to fix this problem sir?
I checked my program. Please check your program and upload it
thanks a lot , for this amazing tutorial & helping with code !!!!!!!!
Your welcome.
i am getting error , urlk was not declared in this scope
how to fix this error. pls help me bro
Please check again that program and try again.
i made same circuit but motor shows no activity
Please check your gear motors
Our blynk always disconnected when we press the widget. please help me
Please check your WIFI connection details
c:\Users\Dhruthi\Documents\Arduino\libraries\Blynk\src/Blynk/BlynkApi.h:39:6: error: #error “Please specify your BLYNK_TEMPLATE_ID and BLYNK_TEMPLATE_NAME”
39 | #error “Please specify your BLYNK_TEMPLATE_ID and BLYNK_TEMPLATE_NAME”
| ^~~~~
exit status 1
Compilation error: exit status 1
this is the error i am receiving
Check your Blynk Auth token and WIFI details.
I am looking to use this on a WiFi network where I have a username and password to access WiFi. How could I add this to the code below?
char auth[] = “”; //Enter your Blynk application auth token
char ssid[] = “”; //Enter your WIFI name
char pass[] = “”; //Enter your WIFI password
Please visit our basic tutorial