Simple Arduino 4WD Robot Car With L298N and IR Remote - V1.0

by sss2022 in Circuits > Arduino

1099 Views, 6 Favorites, 0 Comments

Simple Arduino 4WD Robot Car With L298N and IR Remote - V1.0

20260206_100536.jpg

In this project, we will build a simple 4-wheel robotic car (V1.0) using four DC motors, an Arduino Uno, and an L298N motor driver.

The motor speed is fixed in this first version, and the project focuses only on basic movement control. The robot can move forward, backward, turn left, turn right, and stop. Control is achieved using an infrared (IR) remote, making the system easy to understand and simple to implement.

This project is especially suitable for beginners who want to learn how to control DC motors with Arduino without dealing with speed regulation or complex control algorithms.

It is a great introduction to mobile robotics, motor drivers, and infrared communication with Arduino. It also provides a solid foundation that can be extended later by adding features such as speed control, sensors, or alternative control methods.

By the end of this tutorial, you will have a functional and reliable robot car that performs essential movements using a clear and straightforward logic. This version (V1.0) serves as the base for future improvements.

-------------------------------------------------------------------------------------------

Dans ce projet, nous allons réaliser une voiture robot simple à 4 roues (V1.0) en utilisant quatre moteurs à courant continu (DC), une carte Arduino Uno et un driver de moteurs L298N.

Dans cette première version, la vitesse des moteurs est fixe et le projet se concentre uniquement sur les déplacements de base : avancer, reculer, tourner à droite, tourner à gauche et s’arrêter. Le contrôle de la voiture se fait à l’aide d’une télécommande infrarouge (IR), ce qui rend le système facile à comprendre et à mettre en œuvre.

Ce projet est particulièrement adapté aux débutants qui souhaitent apprendre à piloter des moteurs DC avec Arduino sans aborder la régulation de vitesse ou les commandes complexes.

Il constitue une excellente introduction à la robotique mobile, à l’utilisation des drivers de puissance, ainsi qu’à la communication infrarouge avec Arduino. Il fournit également une base solide pouvant être améliorée par la suite en ajoutant des fonctionnalités comme le contrôle de vitesse, des capteurs ou d’autres modes de commande.

À la fin de ce tutoriel, vous obtiendrez une voiture robot fonctionnelle et fiable, basée sur une logique simple et claire. Cette version V1.0 servira de point de départ pour des versions plus avancées.

Supplies

-----------------------------------------------------------------------

  1. Arduino Uno development board
  2. USB Type-A to USB Type-B cable
  3. Four 6V DC motors with wheels
  4. Robot car chassis (4WD)
  5. L298N motor driver module
  6. IR Remote and Receiver (Kit HX1838)
  7. 2 × 3.7 V 18650 Li-ion rechargeable batteries
  8. 18650 battery holder with switch
  9. 9V battery
  10. 9V battery holder with male Jack connector
  11. Jumper wires

-----------------------------------------------------------------------

  1. Carte de développement Arduino Uno
  2. Câble USB Type-A vers USB Type-B
  3. Quatre moteurs à courant continu (DC) 6 V avec roues
  4. Châssis de voiture robot (4 roues)
  5. Module driver de moteurs L298N
  6. Télécommande et Récepteur Infrarouge (Kit HX1838)
  7. 2 piles rechargeables Li-ion 18650 (3,7 V)
  8. Support de batterie 18650 avec interrupteur
  9. Pile 9 V
  10. Support de pile 9V avec connecteur Jack male
  11. Fils de connexion

----------------------------------------------------------------------

L298N Module: DC Motor Control / Module L298N : Contrôle Des Moteurs DC

L298n_fritzing.png

The L298N is a dual H-bridge motor driver that allows an Arduino Uno to safely control DC motors without connecting them directly to the motor power supply.

In this project, it is used to control a 4-wheel robot car with four DC motors.

Because the L298N has two motor channels, the motors are grouped as follows:

  1. The two left motors are connected together and controlled as Motor A
  2. The two right motors are connected together and controlled as Motor B
  3. This configuration allows the robot to move forward, backward, or stop using simple digital signals.

Motor Direction Control (Arduino Pin Mapping)

The motor direction is controlled using four digital pins on the Arduino Uno:

Motor A – Left Side (2 motors)

  1. IN1 → Arduino pin 8
  2. IN2 → Arduino pin 9

Motor B – Right Side (2 motors)

  1. IN3 → Arduino pin 10
  2. IN4 → Arduino pin 11

Enable Pins (Fixed Speed Configuration)

To control the motors safely, the ENA and ENB jumpers must be removed from the L298N module.

  1. ENA → Arduino pin 5 (PWM)
  2. ENB → Arduino pin 6 (PWM)

In this project, speed control is not dynamic. Instead, a fixed PWM duty cycle is applied to both enable pins.

This keeps all four motors running at a constant and safe speed, while the IR remote is only used to control the direction (forward / backward / stop).

Direction logic:

  1. One input HIGH and the other LOW → motors rotate
  2. Reversed logic → motors rotate in the opposite direction
  3. Both inputs LOW or HIGH → motors stop

Power and Output Connections

  1. +12V (Vmotor): Connected to the 7.4 V battery pack (2×18650)
  2. GND: Connected to the Arduino Uno GND (common ground)
  3. OUT1 & OUT2: Connected to the left motors
  4. OUT3 & OUT4: Connected to the right motors

-------------------------------------------------------------------------------------------

Le L298N est un driver de moteurs à double pont en H qui permet à une carte Arduino Uno de contrôler des moteurs à courant continu (DC) en toute sécurité, sans les connecter directement à l’alimentation des moteurs.

Dans ce projet, il est utilisé pour piloter une voiture robot à 4 roues, équipée de quatre moteurs DC.

Comme le L298N dispose de deux canaux moteurs, les moteurs sont regroupés de la manière suivante :

  1. Les deux moteurs du côté gauche sont connectés ensemble et contrôlés comme Moteur A
  2. Les deux moteurs du côté droit sont connectés ensemble et contrôlés comme Moteur B

Cette configuration permet à la voiture robot de avancer, reculer ou s’arrêter à l’aide de simples signaux numériques.

Contrôle du sens de rotation (Correspondance des broches Arduino)

Le sens de rotation des moteurs est contrôlé à l’aide de quatre broches numériques de l’Arduino Uno :

Moteur A – Côté gauche (2 moteurs)

  1. IN1 → broche Arduino 8
  2. IN2 → broche Arduino 9

Moteur B – Côté droit (2 moteurs)

  1. IN3 → broche Arduino 10
  2. IN4 → broche Arduino 11

Broches d’activation (Vitesse fixe)

Pour contrôler les moteurs en toute sécurité, les cavaliers ENA et ENB doivent être retirés du module L298N.

  1. ENA → broche Arduino 5 (PWM)
  2. ENB → broche Arduino 6 (PWM)

Dans ce projet, le contrôle de la vitesse n’est pas dynamique.

Un rapport cyclique PWM fixe est appliqué aux deux broches d’activation afin de faire tourner les moteurs à une vitesse constante et sécurisée.

La télécommande infrarouge (IR) est utilisée uniquement pour contrôler le sens de déplacement de la voiture : avancer, reculer ou s’arrêter.

Logique de direction

  1. Une entrée HIGH et l’autre LOW → les moteurs tournent
  2. Logique inversée → les moteurs tournent dans le sens opposé
  3. Les deux entrées LOW ou HIGH → les moteurs s’arrêtent

Alimentation et sorties moteurs

  1. +12V (Vmotor) : connecté au pack batterie 7,4 V (2×18650)
  2. GND : connecté au GND de l’Arduino Uno (masse commune obligatoire)
  3. OUT1 & OUT2 : connectés aux moteurs du côté gauche
  4. OUT3 & OUT4 : connectés aux moteurs du côté droit



Circuit Diagram / Schéma

Schéma_4dcmotor_arduino.png

Wiring Diagram

Part of the wiring diagram was created using Tinkercad.

However, Tinkercad does not include all the components used in this project, especially the L298N motor driver module. The diagram shown still helps to understand the general wiring principle and the main connections of the project.

IR Remote Control Functionality

The robot car is controlled using an IR (infrared) remote control.

Each button on the remote corresponds to a specific action:

  1. Up arrow (↑): the car moves forward
  2. Down arrow (↓): the car moves backward
  3. Left arrow (←): the car turns left
  4. Right arrow (→): the car turns right
  5. OK : the car stops

When a button is pressed, the IR receiver sends the signal to the Arduino, which then controls the motors through the L298N motor driver.

IR Receiver (HX1838) – Power Supply and Connection

The HX1838 infrared receiver is a commonly used 38 kHz IR receiver and is fully compatible with the Arduino Uno.

It can be powered using either 5 V or 3.3 V, depending on your setup:

  1. VCC → 5V or 3.3V on the Arduino Uno
  2. GND → GND on the Arduino Uno
  3. OUT (Signal) → a digital pin on the Arduino (for example, D4)

The output signal of the HX1838 is compatible with the Arduino’s digital inputs, regardless of the selected supply voltage.

-------------------------------------------------------------------------------------------

Schéma de câblage

Une partie du schéma de câblage a été réalisée à l’aide de Tinkercad.

Cependant, Tinkercad ne contient pas tous les composants utilisés dans ce projet, notamment le module driver de moteurs L298N. Le schéma présenté permet néanmoins de comprendre le principe général du câblage et les connexions essentielles du projet.

Fonctionnement de la télécommande IR

La voiture robot est contrôlée à l’aide d’une télécommande infrarouge (IR).

Chaque bouton de la télécommande correspond à une action précise :

  1. Flèche vers le haut (↑) : la voiture avance
  2. Flèche vers le bas (↓) : la voiture recule
  3. Flèche vers la gauche (←) : la voiture tourne à gauche
  4. Flèche vers la droite (→) : la voiture tourne à droite
  5. Bouton OK : la voiture s’arrête

Lorsque l’utilisateur appuie sur une touche, le récepteur IR reçoit le signal et l’Arduino commande les moteurs via le L298N pour effectuer le mouvement correspondant.

Récepteur infrarouge (HX1838) – Alimentation et connexion

Le HX1838 est un récepteur infrarouge 38 kHz très utilisé avec Arduino et parfaitement compatible avec l’Arduino Uno.

Il peut être alimenté indifféremment en 5 V ou en 3,3 V, selon la configuration choisie :

  1. VCC → 5V ou 3.3V de l’Arduino Uno
  2. GND → GND de l’Arduino Uno
  3. OUT (Signal) → une broche numérique de l’Arduino (par exemple D4)

Le signal de sortie du HX1838 est compatible avec les entrées numériques de l’Arduino, quelle que soit la tension d’alimentation utilisée.

Powering the Arduino Uno and DC Motors / Alimentation De La Carte Arduino Uno Et Des Moteurs DC

20260206_144220.png

In this project, the power supply is intentionally separated to ensure stable and reliable operation of the robot car.

The Arduino Uno is powered independently using a 9V battery, connected through a female DC jack connector. This power source is used only for the logic and control part of the system. The Arduino Uno includes an onboard voltage regulator that safely converts the 9V input into the required operating voltages for the microcontroller and connected modules.

The DC motors and the L298N motor driver module are powered by a separate 7.4V battery pack (2 × 18650 Li-ion batteries). This battery configuration is better suited for supplying the higher current required by the motors during operation.

Even though two different power sources are used, it is essential to connect the ground (GND) of the Arduino Uno and the ground of the L298N together. This common ground ensures correct signal reference between the control signals coming from the Arduino and the motor driver.

Using separate power supplies helps prevent voltage drops, unwanted resets of the Arduino, and improves the overall stability and reliability of the robot.

-------------------------------------------------------------------------------------------

Dans ce projet, l’alimentation est séparée afin d’assurer un fonctionnement stable et sécurisé du robot.

La carte Arduino Uno est alimentée indépendamment à l’aide d’une pile 9 V, connectée via un connecteur jack femelle. Cette méthode permet d’alimenter correctement la logique de l’Arduino sans interférer avec la partie puissance du système. La tension de 9 V est appliquée à l’entrée jack de l’Arduino, qui dispose d’un régulateur intégré pour fournir une tension adaptée aux composants internes.

Les moteurs et le module L298N, quant à eux, sont alimentés par une batterie séparée de 7,4 V (2 × 18650), capable de fournir le courant nécessaire au bon fonctionnement des moteurs.

Il est important de noter que, même avec des sources d’alimentation différentes, la masse (GND) de l’Arduino et celle du L298N doivent être reliées ensemble afin de garantir une référence commune pour les signaux de commande.

Cette séparation des alimentations permet d’éviter les chutes de tension, les redémarrages intempestifs de l’Arduino et d’améliorer la fiabilité globale du robot.

Libraries / Bibliothèques

biblio_irremote.png
2_tools_arduino.png
COM7.png

1- Open Arduino IDE, then go to Library Manager , search for "IRremote" and install the "IRremote" package by Shirriff, z3t0, ArminJo.

2- Once the installation is complete, add and select the Arduino Uno board you are using from the Tools > Boards menu.

3- Go to Tools > Port, and select the port corresponding to your board.

-------------------------------------------------------------------------------------------

1- Ouvrez l’Arduino IDE, puis allez dans Library Manager . Recherchez "IRremote" et installez le paquet "IRremote" de Shirriff, z3t0, ArminJo.

2- Une fois l’installation terminée, ajoutez et sélectionnez la carte Arduino Uno que vous utilisez dans le menu Tools > Boards.

3- Allez dans Tools > Port, puis choisissez le port correspondant à ta carte.

Source Code / Code Source

In this project, the speed of the robot car is fixed. We do not change the motor speed during operation.

To achieve this, a constant PWM duty cycle is applied to the enable pins of the L298N motor driver.

The duty cycle is set to 150, which provides a stable and safe speed for the four DC motors. This means that the IR remote control is only used to control the direction of the car (forward, backward, left, right, and stop), while the speed remains the same at all times.

-------------------------------------------------------------------------------------------

Dans ce projet, la vitesse de la voiture est fixe. Nous ne modifions pas la vitesse des moteurs pendant le fonctionnement.

Pour cela, un rapport cyclique PWM constant est appliqué aux broches d’activation du driver de moteurs L298N.

Le rapport cyclique est fixé à 150, ce qui permet d’obtenir une vitesse stable et sécurisée pour les quatre moteurs à courant continu. La télécommande infrarouge (IR) est utilisée uniquement pour contrôler le sens de déplacement de la voiture (avancer, reculer, tourner à gauche, tourner à droite et s’arrêter), tandis que la vitesse reste identique en permanence.

Video / Vidéo

Simple Arduino 4WD Robot Car With L298N and IR Remote - V1.0 / Voiture télécommandée à quatre roues