Guide pas-à-pas pour débutant • ESP32-WROOM-32D • L298N • 4 moteurs DC • 4 capteurs ToF • Batterie 3S
Tu débutes en électronique ? Lis ça d'abord !
Ce guide te montre exactement quel fil va où. Chaque connexion est expliquée avec la couleur du fil et pourquoi on le branche là. Prends ton temps, fais une connexion à la fois, et vérifie au multimètre avant d'allumer.
Tu as besoin : d'un fer à souder, du fil à souder (étain), du fil de câblage (plusieurs couleurs), un multimètre, et de la patience.
Mini-vocabulaire
GND (Ground / Masse)
Le fil de référence 0V. Tous les composants partagent le même GND — c'est le « retour » du courant.
VCC / VIN
L'entrée d'alimentation positive d'un composant (ex: 3.3V, 5V, ou 12V selon le composant).
GPIO (General Purpose Input/Output)
Les broches programmables de l'ESP32. Chaque broche a un numéro (ex: GPIO21).
I2C (SDA + SCL)
Un protocole de communication à 2 fils. SDA = données, SCL = horloge. Plusieurs capteurs partagent le même bus.
PWM (Pulse Width Modulation)
Un signal qui contrôle la vitesse des moteurs en allumant/éteignant très rapidement.
Pull-up (résistance de tirage)
Une résistance qui maintient un signal au niveau HAUT (3.3V) quand personne ne parle sur le fil. Nécessaire pour I2C.
⚠️ Avertissements CRITIQUES — Lire avant de brancher quoi que ce soit
1. RETIRER les jumpers ENA/ENB du L298N
Sur la carte L298N, il y a 2 petits cavaliers en plastique (jumpers) sur les broches ENA et ENB. Retire-les avec les doigts ou une pince. Si tu les laisses, l'ESP32 ne pourra pas contrôler la vitesse des moteurs.
2. Régler le LM2596 à EXACTEMENT 5.0V
Le module LM2596 a un petit potentiomètre (vis bleue). Avant de brancher l'ESP32, branche le LM2596 à la batterie, allume, et tourne la vis avec un tournevis. Mesure la sortie avec un multimètre jusqu'à lire exactement 5.0V. Trop haut = ESP32 grillé.
3. Encodeurs en 3.3V, PAS en 5V !
Le fil bleu de chaque encodeur (VCC) doit aller au rail 3.3V. Si tu branches en 5V, les signaux de 5V envoyés aux GPIO de l'ESP32 vont le détruire définitivement (les GPIO supportent max 3.3V).
4. GPIO 34/35/36/39 = Entrée seule
Ces 4 broches ne peuvent que recevoir des signaux (pas en envoyer). C'est parfait pour les encodeurs. Elles n'ont pas de résistance pull-up interne, mais les encodeurs ont la leur — donc pas de souci.
Code couleur des fils
Utilise ces couleurs pour tes fils. Ça rend le débogage 10× plus facile !
Rouge = 12V (batterie)
Orange = 5V (sortie LM2596)
Jaune = 3.3V (sortie ESP32)
Noir = GND (masse)
Bleu = I2C / capteurs
Vert = Signaux moteur
Violet = Signaux encodeur
Schéma Général — Vue d'ensemble
Ce schéma montre comment tous les blocs sont connectés entre eux. Les détails fil par fil sont plus bas.
Table Complète des GPIO de l'ESP32
Voici chaque broche utilisée sur l'ESP32. La colonne "Fil" indique la couleur à utiliser.
GPIO
Fonction
Connecté à
Fil
Explication pour débutant
2
LED
LED intégrée ESP32
—
La petite lumière bleue sur la carte ESP32. Clignote pour indiquer l'état du robot. Pas de fil à brancher.
4
XSHUT Left
VL53L0X Gauche
bleu
Contrôle l'allumage du capteur gauche. Permet de lui donner une adresse I2C unique (0x31).
5
XSHUT Right
VL53L0X Droite
bleu
Contrôle l'allumage du capteur droit. Adresse I2C = 0x32.
14
ENA (PWM)
L298N ENA
vert
Contrôle la vitesse des moteurs gauche. Le PWM envoie des impulsions rapides — plus c'est large, plus le moteur tourne vite.
15
XSHUT Front
VL53L0X Avant
bleu
Contrôle l'allumage du capteur avant. Adresse I2C = 0x30.
16
XSHUT Rear
VL53L0X Arrière
bleu
Contrôle l'allumage du capteur arrière. Adresse I2C = 0x33.
21
SDA
Bus I2C (4× ToF)
bleu
Fil de données I2C. Les 4 capteurs ToF partagent ce même fil. Besoin d'une résistance pull-up 4.7kΩ vers 3.3V.
22
SCL
Bus I2C (4× ToF)
bleu
Fil d'horloge I2C. Aussi partagé par les 4 capteurs. Besoin d'une résistance pull-up 4.7kΩ vers 3.3V.
25
IN3
L298N IN3
vert
Direction moteurs droite (signal A). IN3 + IN4 ensemble déterminent si le côté droit avance ou recule.
26
IN1
L298N IN1
vert
Direction moteurs gauche (signal A). IN1 + IN2 ensemble déterminent si le côté gauche avance ou recule.
27
IN2
L298N IN2
vert
Direction moteurs gauche (signal B).
32
ENB (PWM)
L298N ENB
vert
Contrôle la vitesse des moteurs droite.
33
IN4
L298N IN4
vert
Direction moteurs droite (signal B).
34
Encodeur M1
M1 Signal A (jaune)
violet
Reçoit les impulsions de l'encodeur du moteur avant-gauche. Chaque impulsion = le moteur a tourné un petit peu.
35
Encodeur M3
M3 Signal A (jaune)
violet
Impulsions de l'encodeur du moteur arrière-gauche.
36
Encodeur M2
M2 Signal A (jaune)
violet
Impulsions de l'encodeur du moteur avant-droit.
39
Encodeur M4
M4 Signal A (jaune)
violet
Impulsions de l'encodeur du moteur arrière-droit.
VIN
Alimentation
LM2596 VOUT (5V)
orange
L'ESP32 reçoit son courant ici. Doit être exactement 5.0V (mesuré au multimètre) !
GND
Masse
GND commun
noir
Le « retour » du courant. Un seul fil GND de l'ESP32 vers le rail GND commun suffit.
3V3
Sortie 3.3V
Rail 3.3V perfboard
jaune
L'ESP32 produit du 3.3V ici. On l'utilise pour alimenter les encodeurs et les capteurs ToF.
Câblage pas-à-pas — Dans l'ordre
Fais les connexions dans cet ordre. Chaque étape est détaillée avec les fils exacts à brancher.
1 Chaîne d'alimentation (12V)
C'est le courant qui vient de la batterie et alimente tout le système.
IN1/IN2 contrôlent la direction du côté gauche : IN1=HIGH + IN2=LOW = avancer, IN1=LOW + IN2=HIGH = reculer. IN3/IN4 font pareil pour le côté droit. ENA/ENB contrôlent la vitesse avec un signal PWM (0 à 255 = arrêt à pleine vitesse).
CRITIQUE : Régler à 5.0V AVANT de brancher l'ESP32 !
1) Branche le LM2596 à la batterie (via le rail 12V). 2) Allume l'interrupteur. 3) Avec un multimètre sur les bornes OUT+ et OUT−, tourne la vis bleue du potentiomètre jusqu'à lire exactement 5.0V. 4) Seulement ensuite, branche le fil orange vers l'ESP32 VIN.
4 ESP32 — Alimentation
Orange Rail 5V perfboard → ESP32 VIN
Noir Rail GND perfboard → ESP32 GND
Jaune ESP32 3V3 → Rail 3.3V perfboard (R1)
VIN accepte du 5V et le convertit en 3.3V interne pour le processeur. 3V3 est la sortie 3.3V de l'ESP32. On l'utilise pour alimenter les encodeurs et les capteurs ToF via le perfboard.
5 Moteurs (6 fils chacun)
Chaque moteur JGB37-520 a 6 fils. Voici ce que chacun fait :
RougeMoteur + → se branche aux sorties OUT du L298N (pour faire tourner le moteur)
BlancMoteur − → se branche aux sorties OUT du L298N (l'autre borne)
BleuEncodeur VCC → Rail 3.3V du perfboard (PAS 5V !)
NoirEncodeur GND → Rail GND du perfboard
JauneSignal A → ESP32 GPIO (c'est celui qu'on utilise pour compter les tours)
VertSignal B → Non connecté (on n'a pas besoin du 2e canal)
Branchement par moteur :
Moteur
Position
Rouge + Blanc
Jaune (Signal A)
M1
Avant-gauche
OUT1 / OUT2 du L298N
GPIO34
M2
Avant-droit
OUT3 / OUT4 du L298N
GPIO36
M3
Arrière-gauche
OUT1 / OUT2 du L298N (parallèle avec M1)
GPIO35
M4
Arrière-droit
OUT3 / OUT4 du L298N (parallèle avec M2)
GPIO39
Parallèle ? Ça veut dire que M1 et M3 partagent les mêmes bornes OUT1/OUT2. Tu branches le rouge de M1 ET le rouge de M3 ensemble sur OUT1. Pareil pour les blancs sur OUT2. Idem pour M2+M4 sur OUT3/OUT4.
Pourquoi ? Le L298N n'a que 2 canaux (A et B), mais on a 4 moteurs. En les mettant en parallèle, 2 moteurs du même côté tournent exactement à la même vitesse, ce qui fait avancer le robot droit.
ENCODEURS EN 3.3V !
Le fil bleu de chaque moteur (encodeur VCC) doit aller au rail 3.3V. Si tu le branches en 5V, le signal de l'encodeur sera en 5V et les GPIO de l'ESP32 (qui ne supportent que 3.3V max) seront détruits définitivement.
6 Capteurs ToF VL53L0X (I2C)
Les 4 capteurs de distance partagent le même bus I2C (SDA + SCL). On les différencie grâce à la broche XSHUT.
Fils communs (les 4 capteurs) :
Jaune ToF VCC → Rail 3.3V du perfboard
Noir ToF GND → Rail GND du perfboard
Bleu ToF SDA → ESP32 GPIO21 (SDA)
Bleu ToF SCL → ESP32 GPIO22 (SCL)
Fils XSHUT (un par capteur, tous différents) :
Capteur
XSHUT →
Adresse I2C
Orientation
ToF Avant
GPIO15
0x30
Pointe devant le robot
ToF Gauche
GPIO4
0x31
Pointe à 90° vers la gauche
ToF Droite
GPIO5
0x32
Pointe à 90° vers la droite
ToF Arrière
GPIO16
0x33
Pointe derrière le robot
Pourquoi XSHUT ? Les 4 capteurs VL53L0X ont tous la même adresse I2C par défaut (0x29). On ne peut pas avoir 4 composants avec la même adresse sur le même bus ! La broche XSHUT permet d'allumer les capteurs un par un : on allume le premier, on lui donne l'adresse 0x30, puis le deuxième (0x31), le troisième (0x32), et le quatrième (0x33).
Pull-ups I2C : Le bus I2C a besoin de 2 résistances de 4.7kΩ (une sur SDA, une sur SCL) connectées vers 3.3V. Elles sont sur le perfboard.
7 Pull-ups I2C (sur le perfboard)
Résistance 4.7kΩ entre 3.3V et SDA (GPIO21)
Résistance 4.7kΩ entre 3.3V et SCL (GPIO22)
Sans ces résistances, les capteurs ToF ne fonctionneront pas. Le bus I2C a besoin de ces pull-ups pour maintenir le signal haut quand personne ne communique. C'est comme un « ressort » qui ramène le fil à 3.3V.
Ordre de test (très important !)
Ne branche pas tout d'un coup. Teste étape par étape !
1. Branche la batterie → interrupteur. Mesure 12V sur le rail. 2. Branche le LM2596. Règle à 5.0V. Mesure avec le multimètre. 3. Branche l'ESP32 (VIN + GND). Vérifie que la LED bleue clignote au démarrage. 4. Upload un sketch de test basique (ex: blink). Si ça marche, l'ESP32 est bien alimenté. 5. Branche UN moteur. Teste qu'il tourne avec un sketch simple. 6. Branche les 3 autres moteurs et teste. 7. Branche UN capteur ToF. Teste qu'il retourne des distances. 8. Branche les 2 autres ToF et teste. 9. Teste les encodeurs un par un. 10. Tout fonctionne ? Upload le code du robot !
Si quelque chose ne marche pas
Pas de courant : Vérifie que l'interrupteur est allumé. Vérifie les soudures avec le multimètre en mode « continuité » (le bip). ESP32 ne démarre pas : Mesure le VIN. Est-ce bien 5.0V ? Vérifie le GND. Moteur ne tourne pas : As-tu retiré les jumpers ENA/ENB ? Vérifie le câblage IN1-IN4 et ENA/ENB. Capteur ToF ne répond pas : Vérifie les pull-ups I2C. Vérifie que XSHUT est bien câblé. Lance un scan I2C dans le Serial Monitor.