In this tutorial, we will learn how to make an Arduino Mecanum Wheels Robot car. This is controlled by an Android mobile. The connection is via Bluetooth. Many people are amazed to see this Arduino Mecanum Wheels Robot car moving. It can perform omnidirectional movement. This is because of the special wheels used for it. I am using a 4 Wheel Smart Car Chassis kit to make this. It uses four Mecanum Wheels instead of the usual four.
You can watch the following video or read the written tutorial below.
Overview
The Arduino Mecanum Wheels Robot car that we create is entirely controlled by an Android app. The communication between the car and the mobile device is through Bluetooth. It can be controlled just like an RC car. It is unique because of the wheels it uses. Those wheels are Mecanum wheels. Also, two L298N Motor drivers are used for this because the four Mecanum wheels need to be controlled separately. Arduino Mecanum Wheels Robot car can be controlled by two control methods. The wireless control extends up to a maximum range of 15m-20m, providing flexibility and convenience in maneuvering the vehicle.
Components Needed
Before we begin, make sure you have gathered all the necessary components. The purchase links are in the description of my YouTube video.
- 4 Mecanum wheels
- 4-wheel chassis kit with DC motors
- 2 x L298N motor driver module
- HC-05 or HC-06 Bluetooth module
- Two 18650 Li-Ion batteries and a battery holder
- Jumper wires
- 12V DC Jack (Male, Female)
- Screwdriver and assorted screws
- Solder iron
- Glue gun
- Mobile device with the Bluetooth RC Control app installed


Assemble the 4 Wheel Smart Car Chassis kit
How to assemble the 4 Wheel Smart Car Chassis kit is explained in the post I have presented before. This can be assembled very easily. The link of that article is mentioned below. But instead of the usual four wheels, four Mecanum Wheels should be connected to the gear motors.
Link – How To Assemble 4WD Robot Smart Car Chassis Kits

Four Mecanum Wheels mounted on four-gear motors
Mount the 4 Mecanum wheels on the robot’s chassis. Make sure they are correctly aligned so that they can provide omnidirectional movement. Each wheel should be oriented diagonally to the chassis, creating an “X” pattern.
Attach the Mecanum Wheels to the chassis kit as shown in the images below.


Assemble the Parts
I connected the Bluetooth module, motor drives, battery, and Arduino board as shown below so that each wheel bears the weight equally. It is very important to assemble the accessories. Then the Arduino Mecanum Wheels Robot car can control the movements precisely.


Mecanum Wheels Robot Car Circuit Diagram
The next stage is connecting the electronics. You may find this circuit diagram quite complex. This is because the L298N uses two Motor Drivers. As depicted in the circuit diagram, the procedure for connecting the module wires is further explained below. You can download this circuit diagram. For that, click on the Download button below and download it.

Connecting the four-gear motors to the l298N Motor Drivers.
If you assembled the 4 Wheel Smart Car Chassis kit in the same way I did, connect the motor wires to the motor drive as mentioned below. If not, the direction of motor operation may change in some cases. It can be fixed by changing the motor connection wires of the motor drive. There are two motor drives here, so connect the motors carefully. It will be easier for you to watch my YouTube video. A good understanding can also be obtained by studying the circuit diagram.


Connect the front left gear motor and right gear motor to the first L298N Motor Driver as shown below.
- Connect the Front Left motor Red wire to the “OUT3” terminals on the First motor driver.
- Connect the Front Left motor Black wire to the “OUT4” terminals on the First motor driver.
- Connect the Front Right motor Red wire to the “OUT2” terminals on the First motor driver.
- Connect the Front Right motor Black wire to the “OUT1” terminals on the First motor driver.

Connect the back left gear motor and right gear motor to the second L298N Motor Driver as shown below.
- Connect the Back Left motor Red wire to the “OUT3” terminals on the Second motor driver.
- Connect the Back Left motor Black wire to the “OUT4” terminals on the Second motor driver.
- Connect the Back Right motor Red wire to the “OUT2” terminals on the Second motor driver.
- Connect the Back Right motor Black wire to the “OUT1” terminals on the Second motor driver.
Connect power to both L298N drives
Use two 3.7V 18659 li-ion batteries to provide power. Do not use more than two batteries. It cannot use 9V battery. If a 9V battery is used, only the ultrasonic sensor and servo motor will work. Gear motor not working. The reason for that is that the 9V battery does not have enough amperage.
- Connect the wires from the Battery holder Red wire (+) to the 12V in terminals on the First motor driver and Second motor driver.
- Connect the wires from the Battery holder Black wire (-) to the GND terminals on the First motor driver and Second motor driver.

Connect the power to the Arduino UNO
The Arduino board is also powered by the battery holder.
- Connect the wires from the Battery holder Red wire (+) to the VIN Pin of the Arduino board.
- Connect the wires from the Battery holder Black wire (-) to the GND Pin of the Arduino board.

Connect the Arduino UNO to both L298N Drivers
In this way, connect the digital pins of the Arduino board and the inputs of the two L298N motor drivers by jumper wires.
First L298N Motor Driver,
- Connect the IN1 pin of the motor driver to digital pin D5 on the Arduino.
- Connect the IN2 pin of the motor driver to digital pin D4 on the Arduino.
- Connect the IN3 pin of the motor driver to digital pin D3 on the Arduino.
- Connect the IN4 pin of the motor driver to digital pin D2 on the Arduino.
Second L298N Motor Driver,
- Connect the IN1 pin of the motor driver to digital pin D9 on the Arduino.
- Connect the IN2 pin of the motor driver to digital pin D8 on the Arduino.
- Connect the IN3 pin of the motor driver to digital pin D7 on the Arduino.
- Connect the IN4 pin of the motor driver to digital pin D6 on the Arduino.

Connecting the Bluetooth module ( HC-05 or HC-06 ) to the Arduino board
Hc-05 and HC-06 Bluetooth modules can be applied to the Arduino Bluetooth RC Car.

In this way, connect the Arduino board and the Bluetooth module by jumper wires.
- Connect the VIN (power) pin of the Bluetooth module to the 5V pin on the Arduino.
- Connect the GND (ground) pin of the Bluetooth module to the GND pin on the Arduino.
- Connect the TXD pin of the Bluetooth module to RX pin on the Arduino.
- Connect the RXD pin of the Bluetooth module TX pin on the Arduino.
When uploading the code to the Arduino board, the TX and RX wires of the Arduino board that are connected to the Bluetooth Module’s RXD and TXD should be temporarily disconnected. After the code is successfully uploaded, connect the wires again.
Upload the Arduino Sketch
- Before uploading the code, disconnect the RX and TX pins of the HC-05 Bluetooth module.
- After uploading the code, connect them again
Arduino Bluetooth RC car can be made without front light, backlight and horn. No need to modify Arduino code. Copy the following Arduino code and paste it into the new sketch in the Arduino IDE. Select the board and port and upload the code. If this is difficult to do, watch a tutorial video.
You can download the Arduino code and open it directly through the Arduino IDE. Click the Download button below to download the Arduino code
//MECANUM WHEELS ROBOT
//ROBOT LK
#define IN_11 2 // L298N #1 in 4 motor Front Right
#define IN_12 3 // L298N #1 in 3 motor Front Right
#define IN_13 4 // L298N #1 in 2 motor Front Left
#define IN_14 5 // L298N #1 in 1 motor Front Left
#define IN_21 6 // L298N #2 in 4 motor Back Left
#define IN_22 7 // L298N #2 in 3 motor Back Left
#define IN_23 8 // L298N #2 in 2 motor Back Right
#define IN_24 9 // L298N #2 in 1 motor Back Right
//ROBOT LK
int command; //Int to store app command state.
boolean state = 1;
void stopRobot() {
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, LOW);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, LOW);
digitalWrite(IN_24, LOW);
digitalWrite(IN_23, LOW);
digitalWrite(IN_22, LOW);
digitalWrite(IN_21, LOW);
}
void back() {
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, HIGH);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, HIGH);
digitalWrite(IN_24, HIGH);
digitalWrite(IN_23, LOW);
digitalWrite(IN_22, HIGH);
digitalWrite(IN_21, LOW);
}
void forward () {
digitalWrite(IN_11, HIGH);
digitalWrite(IN_12, LOW);
digitalWrite(IN_13, HIGH);
digitalWrite(IN_14, LOW);
digitalWrite(IN_24, LOW);
digitalWrite(IN_23, HIGH);
digitalWrite(IN_22, LOW);
digitalWrite(IN_21, HIGH);
}
void left() {
digitalWrite(IN_11, HIGH);
digitalWrite(IN_12, LOW);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, HIGH);
digitalWrite(IN_24, LOW);
digitalWrite(IN_23, HIGH);
digitalWrite(IN_22, HIGH);
digitalWrite(IN_21, LOW);
}
void right() {
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, HIGH);
digitalWrite(IN_13, HIGH);
digitalWrite(IN_14, LOW);
digitalWrite(IN_24, HIGH);
digitalWrite(IN_23, LOW);
digitalWrite(IN_22, LOW);
digitalWrite(IN_21, HIGH);
}
void superleft () {
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, HIGH);
digitalWrite(IN_13, HIGH);
digitalWrite(IN_14, LOW);
digitalWrite(IN_24, LOW);
digitalWrite(IN_23, HIGH);
digitalWrite(IN_22, HIGH);
digitalWrite(IN_21, LOW);
}
void superright () {
digitalWrite(IN_11, HIGH);
digitalWrite(IN_12, LOW);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, HIGH);
digitalWrite(IN_24, HIGH);
digitalWrite(IN_23, LOW);
digitalWrite(IN_22, LOW);
digitalWrite(IN_21, HIGH);
}
void forwardright () {
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, LOW);
digitalWrite(IN_13, HIGH);
digitalWrite(IN_14, LOW);
digitalWrite(IN_24, LOW);
digitalWrite(IN_23, LOW);
digitalWrite(IN_22, LOW);
digitalWrite(IN_21, HIGH);
}
void forwardleft () {
digitalWrite(IN_11, HIGH);
digitalWrite(IN_12, LOW);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, LOW);
digitalWrite(IN_24, LOW);
digitalWrite(IN_23, HIGH);
digitalWrite(IN_22, LOW);
digitalWrite(IN_21, LOW);
}
void backleft () {
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, HIGH);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, LOW);
digitalWrite(IN_24, HIGH);
digitalWrite(IN_23, LOW);
digitalWrite(IN_22, LOW);
digitalWrite(IN_21, LOW);
}
void backright () {
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, LOW);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, HIGH);
digitalWrite(IN_24, LOW);
digitalWrite(IN_23, LOW);
digitalWrite(IN_22, HIGH);
digitalWrite(IN_21, LOW);
}
void setup() {
Serial.begin (9600);
pinMode(IN_11, OUTPUT);
pinMode(IN_12, OUTPUT);
pinMode(IN_13, OUTPUT);
pinMode(IN_14, OUTPUT);
pinMode(IN_21, OUTPUT);
pinMode(IN_22, OUTPUT);
pinMode(IN_23, OUTPUT);
pinMode(IN_24, OUTPUT);
}
//ROBOT LK
void loop() {
if (Serial.available()) {
command = Serial.read();
if (command == 'X') {
state = 1;
} else if (command == 'x') {
state = 0;
}
if (command == 'B') {
back();
} else if (command == 'F') {
forward();
} else if (command == 'R' && state == 1) {
superright ();
} else if (command == 'L' && state == 1) {
superleft ();
} else if (command == 'R' && state == 0) {
right ();
} else if (command == 'L' && state == 0) {
left ();
} else if (command == 'G') {
forwardleft ();
} else if (command == 'I') {
forwardright ();
} else if (command == 'H') {
backright ();
} else if (command == 'J') {
backleft ();
} else {
stopRobot();
}
}
}
//robot lk
Code language: PHP (php)
Control Your Robot Car
Pair your mobile device with the HC-05 Bluetooth module and open the Bluetooth RC Control app. Connect to the module and start controlling your Mecanum wheels robot car wirelessly. The app’s interface will allow you to send commands to your robot car for forward, backward, left, right, Super left, Super right, forward left, forward right, backward left, backward right and stop movements. If you find it difficult to connect Bluetooth properly, watch my YouTube video. The link to the Android app is given below.
Mobile App Link: https://play.google.com/store/apps/de…
- If the above link does not work, download the app from this Button



forward, backward, left, and right movements.

Super left, Super right, forward left, forward right, backward left, backward right movements.
Conclusion
By following this guide, you’ve successfully built a mobile Bluetooth-controlled robot car with Mecanum wheels. This is a special robot car by applying Mecanum wheels to make it look like an Arduino Bluetooth car. The wireless control extends up to a maximum range of 15m-20m, providing flexibility and convenience in maneuvering the vehicle. Try to modify this Arduino Mecanum Wheels Robot Car and create a new creation.