Programmation de la voiture
Préparer Arduino IDE
- Installez les cartes ESP32 depuis le gestionnaire de cartes.
- Installez la bibliothèque ESP32Servo.
BluetoothSerialest déjà incluse avec les cartes ESP32.
Comprendre le programme
Le smartphone envoie une lettre par Bluetooth. La carte lit cette lettre et agit :
| Lettre | Action |
|---|---|
F |
Avancer |
B |
Reculer |
S |
Stop |
L |
Tourner à gauche |
R |
Tourner à droite |
C |
Roues droites |
Attention : chaque voiture doit avoir un nom Bluetooth différent. Avant de téléverser, changez NOM_VOITURE (VOITURE-01, VOITURE-02…).
Code
// =====================================================
// VOITURE RADIOCOMMANDÉE - ATELIER NORIA
// =====================================================
//
// Comment ça marche ?
// 1. Le téléphone envoie UNE LETTRE par Bluetooth.
// 2. La carte ESP32 lit cette lettre.
// 3. Selon la lettre, elle fait tourner le moteur
// ou tourner les roues avec le servomoteur.
//
// Les lettres :
// F = avancer B = reculer S = stop
// L = gauche R = droite C = roues droites
//
// =====================================================
#include "BluetoothSerial.h" // Outils pour le Bluetooth
#include <ESP32Servo.h> // Outils pour le servomoteur
// ----- 1. LE NOM DE LA VOITURE -----
// Chaque groupe met un numéro différent,
// sinon les téléphones ne savent pas quelle voiture choisir !
const char* NOM_VOITURE = "VOITURE-01";
// ----- 2. LE CÂBLAGE : sur quelle broche est branché chaque fil ? -----
const int MOTEUR_A = 17; // Broche D10 -> borne A-IA du pont en H
const int MOTEUR_B = 16; // Broche D11 -> borne A-IB du pont en H
const int SERVO = 13; // Broche D7 -> fil ORANGE du servomoteur
// ----- 3. LES ANGLES DU SERVOMOTEUR (en degrés) -----
// Si les roues ne sont pas droites, changez ANGLE_CENTRE.
const int ANGLE_CENTRE = 90; // roues droites
const int ANGLE_GAUCHE = 55; // roues tournées à gauche
const int ANGLE_DROITE = 125; // roues tournées à droite
BluetoothSerial bluetooth; // la liaison Bluetooth
Servo direction; // le servomoteur qui tourne les roues
// ----- 4. LES ACTIONS DU MOTEUR -----
// Le pont en H fait tourner le moteur dans un sens ou dans l'autre
// selon quelle broche est allumée (HIGH) ou éteinte (LOW).
void avancer() {
digitalWrite(MOTEUR_A, HIGH);
digitalWrite(MOTEUR_B, LOW);
}
void reculer() {
digitalWrite(MOTEUR_A, LOW);
digitalWrite(MOTEUR_B, HIGH);
}
void arreter() {
digitalWrite(MOTEUR_A, LOW); // les deux éteintes = le moteur s'arrête
digitalWrite(MOTEUR_B, LOW);
}
// ----- 5. DÉMARRAGE : s'exécute UNE SEULE FOIS à l'allumage -----
void setup() {
// Les broches du moteur ENVOIENT du courant : ce sont des sorties.
pinMode(MOTEUR_A, OUTPUT);
pinMode(MOTEUR_B, OUTPUT);
arreter(); // sécurité : la voiture ne démarre pas toute seule
direction.attach(SERVO); // on relie le servomoteur à sa broche
direction.write(ANGLE_CENTRE); // roues droites au départ
bluetooth.begin(NOM_VOITURE); // la voiture apparaît dans le Bluetooth du téléphone
}
// ----- 6. BOUCLE : se répète EN PERMANENCE -----
void loop() {
// Est-ce qu'une lettre est arrivée du téléphone ?
if (bluetooth.available()) {
char lettre = bluetooth.read(); // on lit la lettre
lettre = toupper(lettre); // on la met en majuscule (f devient F)
// On regarde quelle lettre c'est, et on agit :
if (lettre == 'F') { avancer(); }
if (lettre == 'B') { reculer(); }
if (lettre == 'S') { arreter(); }
if (lettre == 'L') { direction.write(ANGLE_GAUCHE); }
if (lettre == 'R') { direction.write(ANGLE_DROITE); }
if (lettre == 'C') { direction.write(ANGLE_CENTRE); }
}
}
No Comments