ESP32 - Voiture

L'une des choses les plus cool à essayer lorsque vous commencez avec l'ESP32 est de fabriquer une voiture robot. Dans ce guide, nous allons apprendre à utiliser l'ESP32 pour construire une voiture robot et à la contrôler avec une télécommande IR. Pour contrôler la voiture robot via le Web (Wifi), consultez le tutoriel ESP32 - Contrôle de voiture via le Web..

Voiture télécommandée IR ESP32

À propos de la voiture robotique

Dans le contexte de l'ESP32, la voiture robot est souvent appelée par différents noms tels que voiture robot, voiture RC, voiture télécommandée, voiture intelligente ou voiture DIY. Elle peut être contrôlée à distance sans aucun fil. Vous pouvez utiliser soit une télécommande spéciale qui utilise la lumière infrarouge, soit une application pour smartphone via Bluetooth ou WiFi. La voiture robot peut aller à gauche ou à droite ainsi qu'avancer ou reculer.

Une voiture 2WD (Deux Roues Motrices) pour ESP32 est un petit véhicule robotique que vous pouvez construire et contrôler à l'aide d'une carte ESP32. Elle se compose généralement des composants suivants :

  • Châssis : La base ou le cadre de la voiture, où tous les autres composants sont montés.
  • Roues : Les deux roues qui assurent la locomotion de la voiture. Elles sont attachées à deux moteurs à courant continu.
  • Moteurs : Deux moteurs à courant continu sont utilisés pour entraîner les deux roues.
  • Contrôleur de moteur : Le contrôleur de moteur est un composant essentiel qui fait l'interface entre l'ESP32 et les moteurs. Il reçoit les signaux de l'ESP32 et fournit la puissance et le contrôle nécessaires aux moteurs.
  • Carte ESP32 : Le cerveau de la voiture. Elle lit les entrées des capteurs et les commandes de l'utilisateur et contrôle les moteurs en conséquence.
  • Source d'alimentation : La voiture 2WD nécessite une source d'alimentation, généralement des batteries et un porte-batterie, pour alimenter les moteurs et la carte ESP32.
  • Récepteur sans fil : un module infrarouge, Bluetooth ou WiFi pour la communication sans fil avec une télécommande ou un smartphone.
  • Composants optionnels : Selon la complexité de votre projet, vous pouvez ajouter divers composants optionnels comme des capteurs (par exemple, des capteurs ultrasoniques pour éviter les obstacles, des capteurs de suivi de ligne), et plus encore.

Dans ce tutoriel, pour simplifier, nous utiliserons :

  • Kit de voiture 2 roues motrices (incluant châssis, roues, moteurs, porte-piles)
  • Pilote de moteur L9110S
  • Kit infrarouge IR (incluant contrôleur IR et récepteur IR)

Consultez la liste du matériel en haut de cette page.

Comment ça fonctionne

Voiture ESP32 2WD comment ça marche
  • L'ESP32 se connecte aux moteurs à courant continu de la voiture robot via le module de commande de moteur L9110S.
  • L'ESP32 se connecte à un récepteur IR.
  • La batterie alimente l'ESP32, les moteurs à courant continu, le contrôleur de moteur et le récepteur IR.
  • Les utilisateurs appuient sur les touches HAUT/BAS/GAUCHE/DROITE/OK de la télécommande IR.
  • L'ESP32 reçoit les commandes HAUT/BAS/GAUCHE/DROITE/OK via le récepteur IR.
  • L'ESP32 contrôle la voiture pour se déplacer en AVANT/ARRIÈRE/GAUCHE/DROITE/STOP en contrôlant le moteur à courant continu via le contrôleur de moteur.

Diagramme de câblage

Le schéma ci-dessous montre comment connecter l'ESP32, le contrôleur de moteur L9110S, les deux moteurs à courant continu et le récepteur IR, en utilisant une breadboard pour partager les lignes d'alimentation et de masse communes :

Schéma de câblage de la voiture robot 2WD ESP32 sur une breadboard

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, consultez les instructions dans le tutoriel suivant : Comment alimenter l'ESP32..

Remarque : Le schéma ci-dessus montre le câblage correct. En pratique, connecter plusieurs fils (comme les lignes VCC et GND partagées) dans le même trou de connecteur de l'ESP32 n'est pas facile. Une solution pratique consiste à utiliser une carte d'extension à bornier à vis pour ESP32 — plusieurs fils peuvent être fixés dans le même bornier à vis, ou un fil dans la vis et un autre dans la broche du connecteur adjacent.

Schéma de câblage de la voiture robot 2WD ESP32 utilisant un bornier à vis

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Le module L9110S alimente les moteurs directement depuis ses broches VCC et GND et ne possède pas de régulateur 5V intégré. Vous pouvez donc alimenter tout le système à partir d'une seule source — quatre piles de 1,5V (pour un total de 6V). Voici comment vous pouvez le faire :

  • Connectez la batterie de 6V aux broches VCC et GND du module L9110S pour alimenter les moteurs.
  • Connectez la même batterie de 6V aux broches Vin et GND de la carte ESP32 pour l'alimenter.
  • Assurez-vous que le module L9110S, la carte ESP32 et le récepteur IR partagent une masse (GND) commune.

Contrairement au L298N, le L9110S n'a pas de cavaliers d'activation ENA/ENB ni de bornier à vis 12V, ce qui simplifie le câblage.

Code ESP32

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-car */ #include <DIYables_IRcontroller.h> // IR Remote Controller library #define IR_RECEIVER_PIN 13 // The ESP32 pin GPIO13 connected to IR receiver #define MOTOR_A_IA_PIN 14 // The ESP32 pin GPIO14 connected to the A-IA pin of the L9110S (Motor A) #define MOTOR_A_IB_PIN 27 // The ESP32 pin GPIO27 connected to the A-IB pin of the L9110S (Motor A) #define MOTOR_B_IA_PIN 33 // The ESP32 pin GPIO33 connected to the B-IA pin of the L9110S (Motor B) #define MOTOR_B_IB_PIN 32 // The ESP32 pin GPIO32 connected to the B-IB pin of the L9110S (Motor B) DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); pinMode(MOTOR_A_IA_PIN, OUTPUT); pinMode(MOTOR_A_IB_PIN, OUTPUT); pinMode(MOTOR_B_IA_PIN, OUTPUT); pinMode(MOTOR_B_IB_PIN, OUTPUT); } void loop() { Key17 key = irController.getKey(); if (key != Key17::NONE) { switch (key) { case Key17::KEY_UP: Serial.println("CAR - MOVING FORWARD"); CAR_moveForward(); break; case Key17::KEY_DOWN: Serial.println("CAR - MOVING BACKWARD"); CAR_moveBackward(); break; case Key17::KEY_LEFT: Serial.println("CAR - TURNING LEFT"); CAR_turnLeft(); break; case Key17::KEY_RIGHT: Serial.println("CAR - TURNING RIGHT"); CAR_turnRight(); break; case Key17::KEY_OK: Serial.println("CAR - STOP"); CAR_stop(); break; default: Serial.println("WARNING: unused key:"); break; } } } void CAR_moveForward() { digitalWrite(MOTOR_A_IA_PIN, HIGH); digitalWrite(MOTOR_A_IB_PIN, LOW); digitalWrite(MOTOR_B_IA_PIN, HIGH); digitalWrite(MOTOR_B_IB_PIN, LOW); } void CAR_moveBackward() { digitalWrite(MOTOR_A_IA_PIN, LOW); digitalWrite(MOTOR_A_IB_PIN, HIGH); digitalWrite(MOTOR_B_IA_PIN, LOW); digitalWrite(MOTOR_B_IB_PIN, HIGH); } void CAR_turnLeft() { digitalWrite(MOTOR_A_IA_PIN, HIGH); digitalWrite(MOTOR_A_IB_PIN, LOW); digitalWrite(MOTOR_B_IA_PIN, LOW); digitalWrite(MOTOR_B_IB_PIN, LOW); } void CAR_turnRight() { digitalWrite(MOTOR_A_IA_PIN, LOW); digitalWrite(MOTOR_A_IB_PIN, LOW); digitalWrite(MOTOR_B_IA_PIN, HIGH); digitalWrite(MOTOR_B_IB_PIN, LOW); } void CAR_stop() { digitalWrite(MOTOR_A_IA_PIN, LOW); digitalWrite(MOTOR_A_IB_PIN, LOW); digitalWrite(MOTOR_B_IA_PIN, LOW); digitalWrite(MOTOR_B_IB_PIN, LOW); }

Étapes rapides

  • Si c'est la première fois que vous utilisez un ESP32, consultez Installation du logiciel ESP32..
  • Installez la bibliothèque DIYables_IRcontroller sur Arduino IDE en suivant cette instruction
  • Réalisez le câblage comme le montre le schéma ci-dessus.
  • Déconnectez le fil du Vin sur l'ESP32 car nous alimenterons l'ESP32 via un câble USB lors du téléchargement du code.
  • Retournez la voiture vers le bas afin que les roues soient en haut.
  • Connectez la carte ESP32 à votre PC via un câble micro USB
  • Ouvrez Arduino IDE sur votre PC.
  • Sélectionnez la bonne carte ESP32 (par exemple, Module de développement ESP32) et le port COM.
  • Copiez le code fourni et ouvrez-le dans l'Arduino IDE.
  • Cliquez sur le bouton Upload dans l'Arduino IDE pour transférer le code à l'ESP32.
  • Utilisez la télécommande IR pour faire avancer, reculer, tourner à gauche, à droite ou arrêter la voiture.
  • Vérifiez si les roues se déplacent correctement selon vos commandes.
  • Si les roues se déplacent dans le mauvais sens, inversez les fils du moteur à courant continu sur le module L9110S.
  • Vous pouvez également voir les résultats sur le moniteur série dans l'Arduino IDE.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
CAR - MOVING FORWARD CAR - MOVING BACKWARD CAR - TURNING LEFT CAR - TURNING RIGHT CAR - STOP
Ln 11, Col 1
ESP32 Dev Module on COM15
2
  • Si tout se passe bien, débranchez le câble USB de l'ESP32, puis rebranchez le fil sur la broche Vin 5V. Cela alimentera l'ESP32 depuis la batterie.
  • Remettez la voiture dans sa position normale avec les roues sur le sol.
  • Amusez-vous à contrôler la voiture !

Explication du code

Vous pouvez trouver l'explication dans la ligne de commentaires du code Arduino ci-dessus.

Vous pouvez en apprendre davantage sur le code en consultant les tutoriels suivants :

Vous pouvez étendre ce projet en :

  • Ajout de capteurs d'évitement d'obstacles pour arrêter immédiatement la voiture si un obstacle est détecté.
  • Ajout d'une fonction pour contrôler la vitesse de la voiture (voir le tutoriel ESP32 - Moteur à courant continu.). Le code fourni contrôle la voiture à pleine vitesse.

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !