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+

3 in 1 Starter Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

Carte SunFounder R3

BUY

Module de Contrôle Moteur L9110

-

Moteur TT

-

Module Ultrasonique

BUY

Module d’Évitement d’Obstacle

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

../_images/car_7_8.png

Code

Note

  • Ouvrez le fichier 8.self_driving_car.ino situé dans le dossier 3in1-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);
        }
    }
}