8. Voiture Autonome¶
Ce projet est une combinaison des deux projets 6. Jouer avec le module ultrasonique et 5. Jouer avec le module d’évitement d’obstacles. 2 modules infrarouges d’évitement d’obstacles effectuent une détection à courte distance ou de bord, et les modules ultrasoniques effectuent une détection à longue distance pour confirmer que la voiture ne heurte pas d’obstacle pendant le processus de conduite libre.
Composants requis
Pour ce projet, nous avons besoin des composants suivants.
Il est certainement pratique d’acheter un kit complet, voici le lien :
Nom |
ÉLÉMENTS DANS CE KIT |
LIEN |
---|---|---|
3 in 1 Starter Kit |
380+ |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DES COMPOSANTS |
LIEN D’ACHAT |
---|---|
- |
|
- |
|
Câblage
Connectez le module ultrasonique et les 2 modules d’évitement d’obstacles IR en même temps.
Connectez l’ultrasonique à la carte R3 comme suit.
Module ultrasonique |
Carte R3 |
---|---|
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |
Le câblage des 2 modules d’évitement d’obstacles IR à la carte R3 est le suivant.
Left IR Module |
R3 Board |
---|---|
OUT |
8 |
GND |
GND |
VCC |
5V |
Right IR Module |
R3 Board |
---|---|
OUT |
7 |
GND |
GND |
VCC |
5V |
Code
Note
Ouvrez le fichier
8.self_driving_car.ino
situé dans le dossier3in1-kit\car_project\8.self_driving_car
.Ou copiez ce code dans Arduino IDE.
Ou téléchargez le code via Arduino Web Editor.
Une fois le code téléchargé avec succès, la voiture se déplacera librement. Lorsque le module d’obstruction IR des deux côtés détecte un obstacle, elle se déplacera dans la direction opposée pour une évasion d’urgence ; si un obstacle se trouve à 2~10cm directement devant la voiture, elle reculera vers la gauche, ajustera sa direction, puis avancera.
Comment ça fonctionne ?
Le déroulement de ce projet est le suivant.
Lisez d’abord la valeur du module d’évitement d’obstacles IR gauche et droit.
Si le module IR gauche est à 0 (obstacle détecté), le module IR droit est à 1, laissez la voiture reculer à gauche.
Si le module IR droit est à 0 (obstacle détecté), laissez la voiture reculer à droite.
Si les 2 modules IR détectent l’obstacle en même temps, la voiture reculera.
Sinon, lisez la distance détectée par le module ultrasonique.
Si la distance est supérieure à 50cm, laissez la voiture avancer.
Si la distance est entre 2-10cm, laissez la voiture reculer avant de tourner.
Si la distance est entre 10-50cm, laissez la voiture avancer à faible vitesse.
void loop() {
int left = digitalRead(leftIR); // 0: Obstructed 1: Empty
int right = digitalRead(rightIR);
if (!left && right) {
backLeft(150);
} else if (left && !right) {
backRight(150);
} else if (!left && !right) {
moveBackward(150);
} else {
float distance = readSensorData();
Serial.println(distance);
if (distance > 50) { // Safe
moveForward(200);
} else if (distance < 10 && distance > 2) { // Attention
moveBackward(200);
delay(1000);
backLeft(150);
delay(500);
} else {
moveForward(150);
}
}
}