Note
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l'univers des Raspberry Pi, Arduino et ESP32 avec d'autres passionnés.
Pourquoi rejoindre ?
- Support d'experts : Résolvez les problèmes après-vente et les défis techniques avec l'aide de notre communauté et de notre équipe.
- Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.
- Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
- Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.
- Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [|link_sf_facebook|] et rejoignez-nous aujourd'hui !
Ce projet est une combinaison des deux projets :ref:`car_ultrasonic` et :ref:`car_ir_obstacle`. 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+ | |link_3IN1_kit| |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DES COMPOSANTS | LIEN D'ACHAT |
---|---|
:ref:`cpn_uno` | |link_Uno_R3_buy| |
:ref:`cpn_l9110` | - |
:ref:`cpn_tt_motor` | - |
:ref:`cpn_ultrasonic` | |link_ultrasonic_buy| |
:ref:`cpn_avoid` | |link_obstacle_avoidance_buy| |
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);
}
}
}