L'atelier de Lili
Robot n°1 · Mission équilibre

L'Équilibriste

Construis avec Lili un robot qui garde une balle de ping-pong en équilibre sur un rail, tout seul.

Difficulté★★☆☆
Durée3 après-midis
Budget≈ 45 €
Tu vas apprendreCapteur, moteur, code

Comment ça marche ?

Avant de construire, on comprend. C'est la règle de l'atelier !

Lili fait coucou
Coucou !

Moi c'est Lili ! Tu as déjà essayé de faire tenir une balle sur une règle ? Dès qu'elle penche un peu, la balle roule et tombe. Notre robot va faire ce que tes mains font sans y penser : regarder la balle et pencher la règle juste ce qu'il faut.

Les yeux

Le capteur à ultrasons

Il crie un son très aigu que tu ne peux pas entendre et écoute l'écho, comme une chauve-souris. Comme ça il sait où est la balle.

Le cerveau

La carte Arduino

Un petit ordinateur. Il lit ce que voient les yeux et décide de combien il faut pencher le rail.

Le muscle

Le servomoteur

Un moteur qui tourne à l'angle exact qu'on lui demande. Il pousse le bout du rail vers le haut ou vers le bas.

Le terrain de jeu

Le rail

Deux baguettes de bois où la balle roule. Il bouge comme une balançoire, autour d'une charnière.

Les yeux regardent → le cerveau calcule → le muscle bouge… et on recommence 25 fois par seconde !

Lili explique avec une tablette
J'explique

Le secret du cerveau, c'est une recette en 3 ingrédients appelée PID. P comme « Pousse » : plus la balle est loin du milieu, plus on penche. D comme « Doucement » : si la balle arrive vite, on freine avant qu'elle dépasse. I comme « Insiste » : si la balle reste toujours un peu à côté, on corrige petit à petit.

Joue avec le cerveau du robot

La force qui ramène la balle au milieu.
Le frein qui empêche la balle de dépasser.

Essaie avec D à zéro : la balle fait des va-et-vient. Monte D petit à petit…

La liste de courses

Coche chaque chose quand elle est sur ta table. Lili garde tes coches en mémoire.

0 / 0 trouvés

L'électronique

Le bois et la quincaillerie

Lili les bras croisés
Avec un adulte

La scie, la perceuse et le pistolet à colle chaude, on les utilise avec papa, jamais seule. Moi aussi je demande de l'aide pour ça !

Outils à préparer : règle, crayon, tournevis cruciforme, petite scie, pistolet à colle chaude, et un ordinateur avec le logiciel gratuit Arduino IDE. Les prix sont indicatifs. Les boutons Amazon ouvrent une recherche : choisis un vendeur bien noté et compare avec la ligne « Vérifie ».

Le montage, étape par étape

Une étape à la fois. Clique sur « C'est fait ! » quand tu as terminé.

0 / 0 étapes
1

Prépare ton atelier

10 minutes
  1. Libère une grande table et protège-la avec un vieux carton.
  2. Pose toutes les pièces de la liste de courses devant toi.
  3. Range les petites pièces (vis, piton, trombone) dans un bol pour ne pas les perdre.
  4. Demande à papa d'installer le logiciel Arduino IDE sur l'ordinateur.
Astuce

Prends une photo de toutes tes pièces avant de commencer. Ce sera la première page de ton journal de bord de roboticienne !

2

Le socle et le pilier

20 minutes · avec un adulte pour la scie
PlancheTasseauColle à boisScie
  1. Coupe dans le tasseau un morceau de 12 cm : c'est le pilier.
  2. Coupe un second morceau de 6 cm : ce sera le support du moteur.
  3. Colle le pilier debout, à 3 cm du bord gauche de la planche, bien au milieu dans la largeur.
  4. Laisse sécher 30 minutes. Pendant ce temps, passe à l'étape 3 !
À ton avis ?

Pourquoi le pilier doit-il être bien droit ? Indice : si le rail penche déjà au départ, qui devra travailler plus fort ?

3

Le rail de la balle

20 minutes
Latte 40 cm2 baguettes rondesColle à bois1 balle
  1. Pose les deux baguettes sur la latte, bien parallèles, écartées d'environ 2,5 cm.
  2. Teste avec une balle : elle doit rouler sur les baguettes sans toucher la latte.
  3. Quand l'écart est bon, colle les baguettes et tiens-les avec du scotch pendant le séchage.
  4. Colle un petit morceau de carton au bout droit : c'est une butée pour que la balle ne s'envole pas.
Astuce

Trace deux lignes au crayon sur la latte avant de coller. Les baguettes resteront bien droites.

4

La charnière

15 minutes
Charnière + visTournevis
  1. Visse une moitié de la charnière sur le dessus du pilier.
  2. Visse l'autre moitié sous le rail, à environ 2 cm de son bout gauche.
  3. Soulève le bout droit du rail avec ta main : il doit monter et descendre facilement, comme une balançoire.
Attention

Si la charnière frotte ou grince, le moteur va peiner. Desserre un tout petit peu les vis.

5

Les branchements

20 minutes · câble USB débranché !

Les fils, c'est comme des routes : chaque couleur va à un endroit précis. Utilise la plaque d'essai pour que le moteur et le capteur partagent le 5V et le GND.

Arduino Uno 5VGND pin 9pin 8pin 7 Plaque d'essai Capteur HC-SR04 VCCTrigEchoGND Servomoteur rougemarronorange
PièceFilVa sur l'Arduino
Servomoteurrouge5V (par la plaque)
ServomoteurmarronGND (par la plaque)
Servomoteurorangepin 9
CapteurVCC5V (par la plaque)
CapteurGNDGND (par la plaque)
CapteurTrigpin 8
CapteurEchopin 7
Règle d'or

On branche et on débranche les fils toujours avec le câble USB débranché. Et on vérifie deux fois avant de rebrancher.

6

Premier programme : le moteur se met droit

15 minutes · sur l'ordinateur
  1. Branche l'Arduino à l'ordinateur avec le câble USB.
  2. Dans Arduino IDE, choisis Outils → Type de carte → Arduino Uno et le bon Port.
  3. Copie ce petit programme, puis clique sur la flèche Téléverser.
test_moteur.ino
#include <Servo.h>

Servo moteur;

void setup() {
  moteur.attach(9);    // le fil orange est sur la pin 9
  moteur.write(90);    // 90 degrés = la position du milieu
}

void loop() {
  // rien : le moteur reste au milieu
}
  1. Le moteur bouge un peu puis s'arrête : il est maintenant pile au milieu.
  2. Enfonce le petit bras en plastique (le palonnier) sur l'axe, bien à l'horizontale.
Pourquoi d'abord le code ?

Si tu fixes le bras avant, tu ne sais pas où est le « milieu » du moteur. Le rail risque de ne jamais être à plat.

7

Le moteur et la tige

25 minutes
ServomoteurSupport 6 cmTrombonePitonColle chaude
  1. Visse le piton sous le rail, à 35 cm de la charnière.
  2. Fixe le servomoteur sur son support en bois (colle chaude ou colliers), l'axe vers l'avant.
  3. Pose le support sur la planche, juste sous le piton. Ne colle pas encore !
  4. Déplie le trombone en tige droite et fais un petit crochet à chaque bout avec la pince.
  5. Accroche un bout dans le trou extérieur du palonnier, l'autre dans le piton.
  6. Déplace le support jusqu'à ce que le rail soit bien à plat. Vérifie avec une balle : elle ne doit pas rouler. Maintenant tu peux coller le support.
Ça coince ?

Si le rail est trop haut ou trop bas, change la longueur de la tige plutôt que de forcer sur le moteur.

8

Les yeux du robot

20 minutes
  1. Colle le capteur au bout gauche du rail, côté charnière, ses deux « yeux » tournés vers le rail.
  2. Les yeux doivent être à la hauteur du milieu de la balle.
  3. Téléverse ce programme, puis ouvre Outils → Moniteur série.
test_capteur.ino
const int PIN_TRIG = 8;
const int PIN_ECHO = 7;

void setup() {
  Serial.begin(9600);
  pinMode(PIN_TRIG, OUTPUT);
  pinMode(PIN_ECHO, INPUT);
}

void loop() {
  digitalWrite(PIN_TRIG, LOW);  delayMicroseconds(2);
  digitalWrite(PIN_TRIG, HIGH); delayMicroseconds(10);  // le cri !
  digitalWrite(PIN_TRIG, LOW);
  long duree = pulseIn(PIN_ECHO, HIGH, 25000);     // on écoute l'écho
  float cm = duree * 0.0343 / 2;                  // aller-retour du son
  Serial.print("Balle a ");
  Serial.print(cm);
  Serial.println(" cm");
  delay(100);
}
  1. Fais rouler la balle doucement avec ton doigt. Les chiffres changent ? Bravo, ton robot voit !
Le savais-tu ?

Le son fait 343 mètres par seconde. On divise par 2 parce que le son fait l'aller jusqu'à la balle et le retour.

9

Le grand programme de l'Équilibriste

20 minutes

Voici le cerveau complet. Lis les commentaires en vert : ils expliquent chaque ligne. Téléverse-le, pose la balle sur le rail et regarde !

equilibriste.ino
#include <Servo.h>

// ----- Les branchements -----
const int PIN_SERVO = 9;
const int PIN_TRIG  = 8;
const int PIN_ECHO  = 7;

// ----- Les réglages de Lili -----
float CIBLE      = 18.0;  // où la balle doit s'arrêter (cm depuis le capteur)
int   ANGLE_PLAT = 90;    // angle du moteur quand le rail est à plat
int   SENS       = 1;     // mets -1 si la balle s'enfuit au lieu de revenir
float Kp = 2.0;   // P : Pousse
float Ki = 0.02;  // I : Insiste
float Kd = 0.8;   // D : Doucement

Servo moteur;
float distance = CIBLE;
float erreurAvant = 0;
float somme = 0;
unsigned long tempsAvant = 0;

float mesurer() {
  digitalWrite(PIN_TRIG, LOW);  delayMicroseconds(2);
  digitalWrite(PIN_TRIG, HIGH); delayMicroseconds(10);
  digitalWrite(PIN_TRIG, LOW);
  long duree = pulseIn(PIN_ECHO, HIGH, 25000);
  if (duree == 0) return -1;           // pas d'écho : on ignore
  return duree * 0.0343 / 2;
}

void setup() {
  Serial.begin(9600);
  pinMode(PIN_TRIG, OUTPUT);
  pinMode(PIN_ECHO, INPUT);
  moteur.attach(PIN_SERVO);
  moteur.write(ANGLE_PLAT);
  delay(1000);
  tempsAvant = millis();
}

void loop() {
  // 1. Les yeux regardent
  float d = mesurer();
  if (d > 2 && d < 40) {
    distance = 0.7 * distance + 0.3 * d;   // on adoucit les mesures qui sautillent
  }

  // 2. Le cerveau calcule
  unsigned long maintenant = millis();
  float dt = (maintenant - tempsAvant) / 1000.0;
  tempsAvant = maintenant;

  float erreur  = distance - CIBLE;                     // loin du but ?
  somme = constrain(somme + erreur * dt, -50, 50);       // I
  float vitesse = (erreur - erreurAvant) / dt;           // D
  erreurAvant = erreur;

  float correction = Kp * erreur + Ki * somme + Kd * vitesse;
  correction = constrain(correction, -30, 30);         // pas plus de 30 degrés

  // 3. Le muscle bouge
  moteur.write(ANGLE_PLAT + SENS * correction);

  // Pour le Traceur série : la balle et la cible
  Serial.print(distance); Serial.print(" "); Serial.println(CIBLE);
  delay(40);
}
La balle s'enfuit ?

Pas de panique, c'est normal la première fois ! Le moteur est peut-être monté à l'envers. Change SENS = 1 en SENS = -1 et téléverse à nouveau.

10

Le réglage, comme une vraie ingénieure

Autant de temps qu'il faut !

Ouvre Outils → Traceur série : tu vois deux lignes, la balle et la cible. Ton but : que la ligne de la balle rejoigne la cible et y reste. Change un seul chiffre à la fois, téléverse, observe.

1. Seulement P

Mets Ki = 0 et Kd = 0. Monte Kp jusqu'à ce que la balle fasse des va-et-vient autour de la cible.

2. Ajoute D

Monte Kd petit à petit. Les va-et-vient se calment. Trop de D ? Le moteur tremble.

3. Un soupçon de I

Si la balle s'arrête toujours un peu à côté, monte Ki très doucement (0.01, 0.02…).

Journal de bord

Note chaque essai dans un cahier : « Kp = 2, Kd = 0.8 → la balle oscille 3 fois ». C'est exactement ce que font les ingénieurs !

Le moteur tremble et l'Arduino redémarre ?

Le moteur demande trop d'énergie au câble USB. Demande à papa d'ajouter un boîtier de 4 piles AA pour le moteur, en reliant bien son « moins » au GND de l'Arduino.

Lili lève les bras, mission accomplie
Mission accomplie

Ton Équilibriste tient la balle !

Tu as construit un vrai système asservi, le même principe que les drones, les robots qui marchent et les fusées qui atterrissent debout.

  • Défi 1 : change la CIBLE pour que la balle s'arrête à 10 cm, puis à 25 cm.
  • Défi 2 : donne une pichenette à la balle. En combien de temps revient-elle ?
  • Défi 3 : essaie avec une balle plus lourde. Faut-il changer les réglages ?
Bravo !