Un robot voiture à deux roues contrôlé par un ESP32 utilise le Wi-Fi pour recevoir des commandes (via une application ou une interface web) et pilote les moteurs grâce à un module L298N. Ce type de robot est couramment utilisé dans des projets éducatifs, des expériences de robotique ou des démonstrations d'automatisation.
Le Wi-Fi intégré de l’ESP32 permet de créer un serveur web pour recevoir des commandes (comme avant, arrière, gauche, droite, stop) depuis un smartphone, une tablette ou un PC.
1. Initialisation
L'ESP32 s’allume, se connecte au réseau Wi-Fi (ou crée un point d’accès).
L'utilisateur accède à l'interface de contrôle via un navigateur ou une application.
2. Réception des Commandes
Les commandes envoyées par l'utilisateur (via Wi-Fi) sont interprétées par l'ESP32.
Par exemple :
Commande "Avant" → Les moteurs tournent dans le même sens pour avancer.
Commande "Gauche" → Un moteur tourne tandis que l'autre est arrêté ou tourne dans le sens inverse.
3. Pilotage des Moteurs
L'ESP32 envoie des signaux numériques et PWM au module L298N :
Direction : IN1/IN2 et IN3/IN4 déterminent si les moteurs avancent ou reculent.
Vitesse : ENA et ENB reçoivent des signaux PWM pour contrôler la vitesse.
4. Déplacement du Robot
Les roues se déplacent selon la direction et la vitesse définies, permettant à la voiture de se déplacer en avant, en arrière, de tourner ou de s’arrêter.
Le robot est constitué de :
ESP32 :
Il agit comme le contrôleur principal, recevant les commandes via Wi-Fi (par une application ou un navigateur) et contrôlant le module L298N.
Module L298N :
Pilote les moteurs DC pour déplacer la voiture dans différentes directions.
Kit robot voitures de 2 roues
Moteurs DC (2 moteurs pour les roues).
Châssis : Structure du robot avec deux roues motrices et une roue folle.
Batterie :
Fournit l’énergie aux moteurs et à l’ESP32.
âblage et connecteurs :
Des fils électriques et des connecteurs seront nécessaires pour relier les différents composants entre eux
Plaque d'essai (Breadboard) :
On utilise la plaque d'essai pour faciliter le câblage des différents composants.
- Connecter la broche N°5 de la carte ESP32 à la broche IN1 du module L298N.
- Connecter la broche N°4 de la carte ESP32 à la broche IN2 du module L298N.
- Connecter la broche N°23 de la carte ESP32 à la broche IN3 du module L298N.
- Connecter la broche N°22 de la carte ESP32 à la broche IN4 du module L298N.
- Connecter la broche GND de la carte ESP32 à la broche GND du module L298N.
- Connecter la broche 5V de la carte ESP32 à la borne (+) du module de l’alimentation
- Connecter la broche GND de la carte ESP32 à la borne (-) du module de l’alimentation
- Connecter la broche 12V du module L298N à la borne (+) du module de l’alimentation
Voici un code simplifié pour contrôler la voiture via une interface web :
1- la bibliothèque DCMotor.py pour commander le module L298N.
2- Copiez le code suivant dans le fichier boot.py de la carte ESP32.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# Complete project details at https://RandomNerdTutorials.com from dcmotor import DCMotor from machine import Pin, PWM from time import sleep try: import usocket as socket except: import socket from machine import Pin import network import esp esp.osdebug(None) import gc gc.collect() ssid = '***********' # login du WIFI password = '***********' # mot de passe du WIFI station = network.WLAN(network.STA_IF) station.active(True) station.connect(ssid, password) while station.isconnected() == False: pass print('Connection successful') print(station.ifconfig()) #led = Pin(2, Pin.OUT) frequency = 15000 pin1 = Pin(5, Pin.OUT) pin2 = Pin(4, Pin.OUT) pin3 = Pin(23, Pin.OUT) pin4 = Pin(22, Pin.OUT) enable = PWM(Pin(18), frequency) enable1 = PWM(Pin(21), frequency) dc_motor = DCMotor(pin1, pin2, enable) dc_motor = DCMotor(pin1, pin2, enable, 350, 1023) dc_motor1 = DCMotor(pin3, pin4, enable1) dc_motor1 = DCMotor(pin3, pin4, enable1, 350, 1023) |
3- Copiez le code contenant le serveur web dans le fichier main.py de la carte ESP32.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# Complete project details at https://RandomNerdTutorials.com def web_page(): html = """<html><head> <title>ESP Web Server</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" href="data:,"> <style>html{font-family: Helvetica; display:inline-block; margin: 0px auto; text-align: center;} h1{color: #0F3376; padding: 2vh;}p{font-size: 1.5rem;}.button{display: inline-block; background-color: #e7bd3b; border: none; border-radius: 4px; color: white; padding: 16px 30px; text-decoration: none; font-size: 10px; margin: 2px; cursor: pointer;} .button2{background-color: #4286f4;}.button3{background-color: red;}</style></head><body> <h1>ESP Web Server</h1> <strong>Commander une voiture</strong></p> <table> <tr><td></td><td><p><a href="/?direction=avant"><button class="button button2">AVANT</button></a></p></td><td></td></tr> <tr><td><p><a href="/?direction=gauche"><button class="button button2">GAUCHE</button></a></p></td><td><p><a href="/?direction=off"><button class="button button3">STOP</button></a></p></td> <td><p><a href="/?direction=droite"><button class="button button2">DROITE</button></a></p></td></tr> <tr><td></td><td><p><a href="/?direction=arriere"><button class="button button2">ARRIERE</button></a></p></td><td></td></tr> </body></html> </table> """ return html s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('', 80)) s.listen(5) while True: conn, addr = s.accept() print('Got a connection from %s' % str(addr)) request = conn.recv(1024) request = str(request) print('Content = %s' % request) direction_avant = request.find('/?direction=avant') direction_stop = request.find('/?direction=off') direction_droite = request.find('/?direction=droite') direction_gauche = request.find('/?direction=gauche') direction_arriere = request.find('/?direction=arriere') if direction_avant == 6: #si on clique sur le bouton Avant dc_motor.forward(80) # la voiture avance dc_motor1.forward(80) if direction_stop == 6: #si on clique sur le bouton Stop dc_motor.stop() # la voiture s'arrête dc_motor1.stop() if direction_droite == 6: #si on clique sur le bouton droite dc_motor.forward(10) # la voiture tourne à droite dc_motor1.forward(80) if direction_gauche == 6: #si on clique sur le bouton gauche dc_motor.forward(80) # la voiture tourne à gauche dc_motor1.forward(10) if direction_arriere == 6: #si on clique sur le bouton arriere dc_motor.backwards(80) # la voiture recule dc_motor1.backwards(80) response = web_page() conn.send('HTTP/1.1 200 OK\n') conn.send('Content-Type: text/html\n') conn.send('Connection: close\n\n') conn.sendall(response) conn.close() |
Exécution du programme
Pour commander la voiture par wifi, on ouvre un navigateur web et on saisit l’adresse IP de la carte Esp32 pour obtenir une interface de commandement comme dans l’image ci-dessous.
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info