Skip to main content

Phase 2 - Câblage et programmation du LittleBot - 4 x 1h30

Prérequis Participant

  • Travail sur ordinateur
  • Manipulation avec la souris (clic droit, clic gauche, sélection,...)
  • Manipulation du clavier
  • Notions d'électricité
  • Notions de programmation par bloc (scratch)

Prérequis Animateur

Compétences techniques

  • Pratique du logiciel Arduino IDE, connaissance en programmation C++
  • Gestion des drivers sous Windows ou Expérience avec Ubuntu / Linux Mint
  • Circuits et branchements électrique

Soft skills

  • Animation
  • Gestion de la Motivation et de l'attention

Matériels nécessaires

logiciel, électronique, mécanique, outils, matériaux, code...

  • 12 PCs (1 par participant)

    • Windows ou Linux
    • Connexion et navigateur internet (Firefox)
    • Session invité ou nominative
    • Logiciel Arduino IDE pré-installé
  • Composants éléctroniques

    • Carte Arduino Nano (x12)
    • Shield (extension Arduino Nano) (x12)
    • Capteur Ultrasons HRC-SR04 (x12)
    • Servo-Moteur DM-S0090D (x24)
    • Câble Dupont (x48 - 4/participants)
  • Programmes du LittleBot et des composants

Préparation

Matériel par participant sur un poste PC en début de séance :

- PC allumé - Codes d'accès session Windows/Linux - Création d'une activité avec le tutoriel animateur Arduino IDE - **Vérifier que le téléversement de programme sur la carte fonctionne depuis Arduino IDE** - Temps de préparation : 5min
#### Documentation / Tutoriels :

Exemple de déroulement pédagogique

Exemple indicatif de déroulé par séance

Déroulé effectué en 2023-2024 au club robotique de l'IUT de Haguenau (1H30/séance, collégiens 6ème-3ème) :

  • Séance 1 : Câblage et programmation d'une LED sur ? Arduino IDE ou MBlock ?
  • Séance 2 : Principe physique, Câblage et programmation d'un câbleur ultrason
  • Séance 3 : Principe physique, câblage, et programmation d'un servomoteur
  • Séance 4 : Câblage complet du LittleBot
  • Séance 5 : Programmation du LittleBot

Exemple de déroulé pour la séance 1

- Consignes : Sécurité, précautions matériel :
- Travail individuel
-
  • Phases et méthodes d’animation

    1. Mise en contexte de la séance précédente(10min)

    2. Tutoriel Arduino IDE (15min)

    3. Présentation de la phase de programmation (5min)

    4. Présentation du cahier des charges pour la programmation

      1. Contraintes sur les alimentations (5v ou 3.3v)
      2. Quelles pins sont à utiliser pour les capteurs ultrasons ?
      3. Comment brancher un servo-moteur ?
      4. Contrainte du sens de rotation des servo-moteurs
      5. Rendre le changement de sens du robot aléatoire
### Déroulement pédagogique complet

Pour la découverte du câblage et de la programmation, nous allons découvrir petit-à-petit les différents composants électroniques, logiciels et programmes informatiques (code) nécessaire au fonctionnement du LittleBot. Commençons pas la découverte du la carte microcontrôleur "Arduino Nano" et sa carte de développement "Sensor Shield v3".

Maintenant que nous sommes experts en microcontrôleur, voyons comment l'utiliser pour de la robotique. Qu'est-ce qu'un

Le câblage

Pour le câblage et la programmation du LittleBot, il nous faut :

Le branchement ce présente comme ceci :

Branchement littlebot.png

1. Tout d'abord nous branchons l'Arduino Nano sur notre Sensor Shield. Attention, il y a un sens. Le port de charge doit être sur l'extérieur de votre Shield. 2. Nous allons a présent brancher notre capteur à ultrason :
  • VCC sur une pin 5V.
  • Trig sur la pin 6.
  • Echo sur la pin 7.
  • GND sur une pin GND

3. Nous allons brancher nos Servomoteur, les câbles de nos servo sont tous reliés à un raccord. Celui ci ne peut être branché que dans un seul sens. Nou brancherons donc un servo sur la pin 10 et un servo sur la pin 11.

  • Le fil marron sur la pin G
  • Le fil rouge sur la pin V
  • Le fil orange sur la pin S

Ainsi le servo qui est sur la pin 10 sera notre roue droite et le Servo sur la pin 11 sera notre roue gauche.

Votre câblage est terminé.

Passons maintenant à la programmation.

Le programme

Ici nous décomposerons notre programme pour bien l'écrire.

Tout d'abord, nous déclarons la librairie et les servo que nous utiliserons :

#include <Servo.h>
#define trigPin 6
#define echoPin 7
Servo servo1;
Servo servo2;

Puis nous déclarons sur quelles pins sont branchés nôtre capteur et nos servo :

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servo1.attach(11); 
servo2.attach(10);
}

Rentrons dans le vive du sujet :

void loop() {
long duration, distance;     // Nous déclarons notre variable que nous retrouverons plus tard
digitalWrite(trigPin, LOW);   //Ici notre capteur à ultrason est en "position 0"
delayMicroseconds(2);         // Pendant 2 Microsecondes
digitalWrite(trigPin, HIGH);  //Ici notre capteur à ultrason est "activé"
delayMicroseconds(10);        //Pendant 10 Microsecondes
digitalWrite(trigPin, LOW);   //Puis nous le retournons en position "0"
duration = pulseIn(echoPin, HIGH);  // Nous déclarons notre variable "duration" qui est la durée du trajet du son.
distance = (duration*0.034) / 2;     // Nous déclarons notre variables "distance" par la duréé multiplié par la vitesse du son le tout divisé par 2.
if (distance < 20) {                // Nos déplacement commence ici, "Si la distance est inférieur à 20cm alors..."
  servo1.writeMicroseconds(1000);//Servo Gauche tourne à l'envers
  servo2.writeMicroseconds(2000);//Servo Droit tourne à l'envers
  delay (2000);// pendant 2 sec
  servo1.writeMicroseconds(1000);//Servo Gauche tourne à l'envers
  servo2.writeMicroseconds(1500);//Arrêt du Servo Droit
  delay (2000);// pendant 2 sec
}

else {                             //Sinon...
 servo1.writeMicroseconds(2000);//Servo Gauche tourne
 servo2.writeMicroseconds(1000);//Servo Droit tourne
  delay (2000);// pendant 2 sec
}
}

Puis nous assemblons le tout, voici à quoi cela devrait ressembler :

#include <Servo.h>
#define trigPin 6
#define echoPin 7
Servo servo1;
Servo servo2;

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servo1.attach(11); 
servo2.attach(10);
}


void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration*0.034) / 2;
if (distance < 20) {
  servo1.writeMicroseconds(1000);
  servo2.writeMicroseconds(2000);
  delay (2000);
  servo1.writeMicroseconds(1000);
  servo2.writeMicroseconds(1500);
  delay (2000);
}

else {
 servo1.writeMicroseconds(2000);
 servo2.writeMicroseconds(1000);
  delay (2000);
}
}

Conclusion / Rangement / Démontage :

  • Rangement en fin de séance
    • Débrancher et ranger les composants
    • Chaque participant vérifie la boite du voisin (check-list)
    • Remettre ordinateur dans l'état initial
  • Programme de la prochaine séance