L'objectif de ce projet est de commander à distance un moteur à courant continu (DC) de 5 V à l'aide d'un Smartphone, en utilisant la communication Bluetooth avec une carte ESP32. Le Smartphone permet à l'utilisateur de démarrer ou d'arrêter le moteur, de choisir le sens de rotation (horaire ou antihoraire) et de régler sa vitesse. La carte ESP32 reçoit les commandes Bluetooth et les transmet au module L298N, qui fournit la puissance nécessaire pour piloter le moteur.

Le fonctionnement du système se déroule selon les étapes suivantes :
1- Connexion Bluetooth
L'utilisateur lance l'application mobile sur son Smartphone et établit une connexion Bluetooth avec la carte ESP32.
2- Envoi des commandes
Depuis l'application, l'utilisateur peut :
- démarrer ou arrêter le moteur ;
- sélectionner le sens de rotation (horaire ou antihoraire) ;
- régler la vitesse à l'aide d'un curseur.
3- Traitement par l'ESP32
La carte ESP32 reçoit les commandes Bluetooth, les interprète puis génère les signaux de commande appropriés.
4- Commande du module L298N
Le module L298N reçoit les signaux de l'ESP32 et alimente le moteur en contrôlant :
le sens de rotation grâce aux entrées IN1 et IN2 ;
la vitesse grâce à un signal PWM appliqué à l'entrée ENA.
5- Fonctionnement du moteur
Le moteur DC 5 V tourne dans le sens sélectionné par l'utilisateur et à la vitesse définie dans l'application mobile.
1- Carte ESP32

La carte ESP32 qui joue le rôle de cerveau du montage. Elle reçoit les commandes envoyées depuis un smartphone via Bluetooth, les traite, puis génère les signaux nécessaires pour contrôler le moteur. Grâce à sa connectivité intégrée, l’ESP32 permet une communication sans fil simple et rapide avec l’application mobile.
2- Module L298N

Le module L298N est un pont en H qui sert d’interface entre l’ESP32 et le moteur DC. Il permet d’amplifier les signaux de faible puissance provenant de la carte ESP32 afin de piloter un moteur plus puissant. Il assure également le contrôle du sens de rotation du moteur (avant et arrière) ainsi que la gestion de sa vitesse à l’aide du signal PWM.
3- Moteur DC 5V

Le moteur DC 5V est l’élément qui réalise le mouvement. Il transforme l’énergie électrique en énergie mécanique sous forme de rotation. Selon les commandes reçues, il peut tourner dans un sens ou dans l’autre, ce qui permet de contrôler un mécanisme ou un robot.
4- Alimentation Externe

L’alimentation externe est un élément essentiel dans ce projet, car elle permet de fournir l’énergie nécessaire au bon fonctionnement du moteur DC 5 V et de la carte d’extension pour moteur.
5- Câbles de Connexion (Jumper Wires)

Les fils de connexion permettent de relier les différents composants entre eux.
6- Plaque d'essai (Breadboard) :

On utilise la plaque d'essai pour faciliter le câblage des différents composants.


Alimentation du Module L298N :
Connectez VCC (12V) du module L298N à la source d'alimentation (batterie 9V ou deux piles de 3.7V).
Connectez GND du module L298N à la masse de l’alimentation (batterie 9V).
Contrôle de Direction et de Vitesse :
Connectez IN1 et IN2 du L298N aux broches numériques de l'ESP32 (par exemple, GPIO 21 et GPIO 21) pour contrôler la direction.
Connectez ENA à une broche PWM de l'ESP32 (par exemple, GPIO 23) pour le contrôle de la vitesse.
Connexion du Moteur DC :
Connectez le moteur DC entre OUT1 et OUT2 du module L298N.
Ce programme permet de contrôler un moteur DC à distance via Bluetooth BLE en utilisant une carte ESP32. Il utilise un smartphone comme interface de commande et ajuste le sens de rotation ainsi que la vitesse du moteur.
On doit importer :
- la bibliothèque DCMotor pour contrôler le moteur.
- les deux bibliothèques :ble_uart_peripheral.py et ble_advertising.py pour la communication Bluetooth
|
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# Importation des modules nécessaires from machine import UART from DCMotor import DCMotor from machine import Pin, PWM from time import sleep import bluetooth from ble_uart_peripheral import BLEUART import time import utime # --------------------------------------------------- # Configuration du moteur DC # --------------------------------------------------- frequency = 15000 # fréquence du signal PWM (contrôle de vitesse) # Définition des broches de commande du moteur pin1 = Pin(22, Pin.OUT) pin2 = Pin(21, Pin.OUT) # Broche d’activation PWM (contrôle vitesse) enable = PWM(Pin(23), frequency) # Création de l’objet moteur DC dc_motor = DCMotor(pin1, pin2, enable) # Version avec limites de vitesse (min=350, max=1023) dc_motor = DCMotor(pin1, pin2, enable, 350, 1023) # --------------------------------------------------- # Configuration Bluetooth BLE UART # --------------------------------------------------- # Création de l’objet Bluetooth BLE ble = bluetooth.BLE() # Création du service UART sur BLE (communication série sans fil) uart = BLEUART(ble) # --------------------------------------------------- # Initialisation du moteur # --------------------------------------------------- # Faire tourner le moteur à vitesse minimale au démarrage dc_motor.forward(1) # --------------------------------------------------- # Fonction appelée à chaque réception de données Bluetooth # --------------------------------------------------- def on_rx(): # Lecture des données reçues via Bluetooth UART uart_in = uart.read() # Conversion des bytes en chaîne de caractères data = uart_in.decode('utf-8', 'ignore').strip() # --------------------------------------------------- # Découpage du message reçu # Format attendu : "sensxxxxxvitesse" # --------------------------------------------------- vitesse = data[5:len(data)] # extraction de la vitesse sens = data[0:5] # extraction du sens (avant/arrière) # Suppression des chiffres dans la partie "sens" sens = ''.join(c for c in sens if not(c.isdigit())) # Extraction uniquement des chiffres dans la vitesse vitesse = ''.join(c for c in vitesse if c.isdigit() or c == '.') # Conversion de la vitesse en entier vitesse = int(vitesse) # --------------------------------------------------- # Contrôle du moteur selon la commande reçue # --------------------------------------------------- if sens == 'sensd' : # sens direct (avant) dc_motor.forward(vitesse) if sens == 'sensi' : # sens inverse (arrière) dc_motor.backwards(vitesse) # --------------------------------------------------- # Liaison de l’interruption Bluetooth à la fonction on_rx # --------------------------------------------------- uart.irq(handler=on_rx) # --------------------------------------------------- # Fermeture de la connexion UART (optionnel ici) # --------------------------------------------------- uart.close() |

Cette application est une interface de commande d’un moteur DC via Bluetooth, généralement utilisée avec une carte comme l’ESP32.
Au lancement, l’utilisateur voit plusieurs boutons en haut de l’écran : Scanner, Connect, Disconnect et Stop. Le bouton Scanner permet de rechercher les appareils Bluetooth disponibles, tandis que Connect établit la connexion avec la carte ESP32. Disconnect sert à couper la communication, et Stop permet d’arrêter immédiatement le moteur en cas de besoin.
Au centre de l’application, la section “Control Motor” affiche l’état du moteur. L’utilisateur peut choisir le sens de rotation grâce à deux options : Sens horaire (rotation vers la droite) et Sens anti-horaire (rotation vers la gauche). Ces choix déterminent la direction envoyée à la carte ESP32.
En dessous, un curseur (slider) permet de régler la vitesse du moteur. La valeur de vitesse affichée change en temps réel (par exemple Speed: 0 au départ), et elle est envoyée sous forme de donnée numérique vers le microcontrôleur.
Ainsi, cette application permet de contrôler facilement un moteur à distance depuis un smartphone, en choisissant la direction et en ajustant la vitesse de manière interactive.
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
Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info