Note

Bonjour, bienvenue dans la communauté SunFounder des passionnés de Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l’univers de Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous 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.

  • Apprenez et partagez : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Soyez parmi les premiers à découvrir les nouvelles annonces de produits et obtenez des avant-premières.

  • Réductions spéciales : Profitez de remises exclusives sur nos nouveaux produits.

  • Promotions festives et cadeaux : Participez à des concours et promotions spéciales.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

Leçon 5 : Développer la Mobilité du Rover Martien

Préparez-vous, jeunes explorateurs ! Nous avons maîtrisé le contrôle des moteurs, et maintenant, nous allons appliquer ces compétences sur la planète rouge. Dans cette leçon, nous allons donner vie à notre rover martien !

Nous apprendrons à assembler les moteurs dans le système de suspension Rocker-Bogie et, grâce à nos compétences en codage, nous guiderons notre rover à travers des paysages martiens imaginaires.

C’est une aventure martienne en classe. Allons-y !

Note

Si vous suivez ce cours après avoir entièrement assemblé le GalaxyRVR, vous devez déplacer cet interrupteur vers la droite avant de télécharger le code.

_images/camera_upload.png

Objectifs d’apprentissage

  • Comprendre comment assembler les moteurs dans le système de suspension Rocker-Bogie du rover martien.

  • Apprendre à utiliser Arduino pour contrôler le mouvement du rover martien.

  • S’exercer à écrire un programme pour contrôler le mouvement du rover sur différents terrains.

Matériel nécessaire

  • Carte SunFounder R3

  • Moteurs TT

  • Shield GalaxyRVR

  • Batterie

  • Modèle de Rover martien (équipé du système Rocker-Bogie)

  • Outils de base et accessoires (tournevis, vis, etc.)

  • Câble USB

  • IDE Arduino

  • Ordinateur

Étapes

Étape 1 : Assemblage des composants du Rover

Dans cette étape, nous allons assembler la batterie, la carte R3, le Shield GalaxyRVR, les moteurs et les roues sur le système Rocker-Bogie pré-assemblé. Cela rendra le GalaxyRVR opérationnel.

Félicitations ! Nous avons réussi à construire notre propre rover, et il est prêt à explorer. Allons-y !

Étape 2 : Mettre le Rover en Mouvement

Il est maintenant temps de donner vie à notre création et de l’envoyer dans sa première aventure. Mais comment communiquer avec notre rover ? Comment lui dire où aller et quoi faire ? C’est là que nos compétences en codage entrent en jeu !

Dans la réalité, si nous voulons qu’une voiture avance, nous appuyons sur l’accélérateur, et les deux roues commencent à tourner. Les roues du côté droit tournent dans le sens des aiguilles d’une montre, tandis que celles du côté gauche tournent dans le sens inverse.

_images/move_car.gif

Imaginez que vous êtes assis au volant, le monde défilant autour de vous tandis que vous parcourez la route – c’est exactement l’expérience que nous allons offrir à notre rover.

Maintenant, traduisons cette expérience dans le langage que notre rover comprend – le code !

#include <SoftPWM.h>

// Définir les broches des moteurs
const int in1 = 2;
const int in2 = 3;
const int in3 = 4;
const int in4 = 5;

void setup() {
    // Initialiser SoftPWM
    SoftPWMBegin();
}

void loop() {
    // Faire tourner les moteurs gauches dans le sens inverse des aiguilles d'une montre
    SoftPWMSet(in1, 255);  // Vitesse maximale
    SoftPWMSet(in2, 0);    // Arrêt

    // Faire tourner les moteurs droits dans le sens des aiguilles d'une montre
    SoftPWMSet(in3, 0);    // Arrêt
    SoftPWMSet(in4, 255);  // Vitesse maximale

}

Dans ce code, nous parlons à notre rover en lui indiquant exactement quoi faire. Avec la fonction SoftPWMSet(), nous agissons comme l’accélérateur et les freins de la voiture, en contrôlant la vitesse et la direction de chaque moteur. Nous disons aux moteurs gauches de tourner dans le sens inverse des aiguilles d’une montre et aux moteurs droits de tourner dans le sens des aiguilles d’une montre, et voilà, notre rover avance !

Effectivement, le concept de faire reculer le rover est simple une fois que vous comprenez comment le faire avancer. Pour faire reculer le rover, nous devons simplement inverser le sens de rotation de chaque moteur.

Voici comment nous le faisons en code : nous faisons exactement l’opposé. Les roues droites doivent maintenant tourner dans le sens inverse des aiguilles d’une montre, et les roues gauches doivent tourner dans le sens des aiguilles d’une montre.

#include <SoftPWM.h>

// Définir les broches des moteurs
const int in1 = 2;
const int in2 = 3;
const int in3 = 4;
const int in4 = 5;

void setup() {
    // Initialiser SoftPWM
    SoftPWMBegin();
}

void loop() {
    // Faire tourner les moteurs gauches dans le sens des aiguilles d'une montre
    SoftPWMSet(in1, 0);    // Arrêt
    SoftPWMSet(in2, 255);  // Vitesse maximale

    // Faire tourner les moteurs droits dans le sens inverse des aiguilles d'une montre
    SoftPWMSet(in3, 255);  // Vitesse maximale
    SoftPWMSet(in4, 0);    // Arrêt

}

Dans ce code, nous utilisons SoftPWMSet() pour indiquer aux moteurs gauches de tourner dans le sens des aiguilles d’une montre et aux moteurs droits de tourner dans le sens inverse des aiguilles d’une montre.

N’est-ce pas fascinant de voir que nous pouvons contrôler le parcours de notre rover simplement avec du code ? La prochaine fois que vous serez dans une voiture, pensez au voyage de votre rover, explorant le monde une rotation à la fois. Restez à l’écoute, car le voyage de notre rover ne fait que commencer !

Étape 3 : Faire Bouger le Rover dans D’autres Directions

Maintenant que nous savons comment déplacer notre rover martien en avant et en arrière, que faire si nous voulons le faire tourner à gauche ou à droite ?

Tout comme dans la conduite réelle, il existe deux façons principales pour une voiture de tourner à gauche.

  • La première consiste à faire tourner les roues du côté gauche plus lentement que celles du côté droit. Cette différence de vitesse fera tourner le rover vers la gauche.

  • La deuxième consiste à faire tourner les moteurs gauche et droit dans la même direction (dans le sens des aiguilles d’une montre dans ce cas), ce qui fera tourner le rover sur son axe.

Voyons comment nous pouvons implémenter ces deux méthodes en code :

Méthode 1 : Différentes vitesses de chaque côté

#include <SoftPWM.h>

// Définir les broches des moteurs
const int in1 = 2;
const int in2 = 3;
const int in3 = 4;
const int in4 = 5;

void setup() {
    // Initialiser SoftPWM
    SoftPWMBegin();
}

void loop() {
    // Faire tourner les moteurs gauches dans le sens inverse à faible vitesse
    SoftPWMSet(in1, 40);
    SoftPWMSet(in2, 0);

    // Faire tourner les moteurs droits dans le sens des aiguilles d'une montre à plus grande vitesse
    SoftPWMSet(in3, 0);
    SoftPWMSet(in4, 200);

    delay(2000);  // Dure 2 secondes
}

Dans ce code, nous avons réduit la vitesse des moteurs gauches tout en maintenant les moteurs droits à une vitesse plus élevée. Cela fera tourner le rover vers la gauche.

Méthode 2 : Faire tourner tous les moteurs dans la même direction

#include <SoftPWM.h>

// Définir les broches des moteurs
const int in1 = 2;
const int in2 = 3;
const int in3 = 4;
const int in4 = 5;

void setup() {
    // Initialiser SoftPWM
    SoftPWMBegin();
}

void loop() {
    // Faire tourner tous les moteurs dans le sens des aiguilles d'une montre
    SoftPWMSet(in1, 0);
    SoftPWMSet(in2, 255);
    SoftPWMSet(in3, 0);
    SoftPWMSet(in4, 255);
}

Dans ce code, nous faisons tourner tous les moteurs dans le sens des aiguilles d’une montre. Le rover tournera autour de son propre axe et changera de direction vers la gauche.

Pour faire tourner le rover à droite, les concepts sont les mêmes, mais les directions sont inversées. Saurez-vous comment le faire ?

Étape 4 : Se Déplacer dans Toutes les Directions

À mesure que nous développons plus de fonctionnalités pour notre rover martien, notre code pourrait devenir assez long et désordonné. En programmation, il est bon de garder son code organisé et maintenable. Une façon d’y parvenir est de créer des fonctions séparées pour chaque tâche.

Dans ce cas, nous pouvons créer des fonctions séparées pour chaque direction dans laquelle le rover peut se déplacer. Cela rend notre code plus facile à comprendre et nous permet de réutiliser ces fonctions n’importe où dans notre programme sans avoir à réécrire les mêmes lignes de code.

Voyons comment faire cela :

Avec cette structure, notre boucle principale reste simple et facile à suivre. On peut voir clairement que le rover avance, recule, tourne à gauche, à droite, et s’arrête.

Les détails de chaque action sont cachés dans des fonctions séparées. C’est un aspect clé des bonnes pratiques de programmation appelé abstraction.

Étape 5 : Partage et Réflexion

Félicitations pour avoir terminé cette aventure avec le rover martien ! C’est une application pratique de vos connaissances en science et en ingénierie, et vous avez fait un travail fantastique !

Vous pouvez maintenant montrer comment votre rover surmonte divers obstacles de terrain. Vous pouvez filmer votre rover naviguant sur différents terrains, ou montrer votre rover à vos amis.

Réfléchir à votre processus d’apprentissage est également très important. Qu’avez-vous appris au cours de ce processus ? De nouvelles idées ou pensées créatives ont-elles émergé ? Qu’avez-vous appris en matière de contrôle des moteurs et de programmation ?

Continuez à explorer, à découvrir de nouvelles connaissances et à vous améliorer constamment. Continuez comme ça, futurs scientifiques et ingénieurs !