Aller au contenu
Mission 0Objectif 0 · Planète Tatouboot

Un nouvel espoir (de téléverser)

Padawan du fer à souderAcolyte du fer à souder ★ ⚠️ Méfie-toi du Côté Obscur : le câble USB « charge seulement ».⚠️ Arme rebelle repérée : le câble USB « charge seulement ». D'une cruauté remarquable.

📡 Transmission de l'Alliance · R2-DuPont

« Ton premier défi paraît simple : établir la connexion. Mais méfie-toi. Dans l'atelier, les plus grands ennemis ne sont pas les Seigneurs noirs. Ce sont les câbles USB « charge seulement ». »

🔊 Écouter le briefing de R2-DuPont

🛰️ Haut commandement · Opération Contre-Circuit

« Les rebelles veulent couper notre liaison avec l'unité de contrôle. Rétablis la communication. Vérifie le câble USB. Nos renseignements confirment l'existence d'un modèle particulièrement dangereux : « charge seulement ». Une arme d'une cruauté remarquable. »

🔊 Écouter le briefing de R2-DuPont

Objectif : préparer l'ordinateur, puis envoyer un tout premier programme dans l'ESP32 pour faire clignoter sa LED bleue. Pas de câblage : juste la carte et le câble.

🧭 Notions de la mission : La tension · L'intensité · La résistance · La LED · Les circuits · Anatomie d'un programme · Tableaux, boucles, fonctions · Le temps

Équipement de mission

🧰 Matériel

  • Carte ESP32 (voir)
  • Câble USB-C de données (voir)
  • Support à borniers : facultatif

💻 Logiciels

  • Arduino IDE 2
  • Cartes « esp32 » d'Espressif
  • Pilote CP210x (Windows, si besoin)

🌐 Connexion internet

Oui : plusieurs centaines de Mo à télécharger

🔓 Missions à réussir avant

Aucune : c'est le point de départ !

🛠️ Outils

Un ordinateur Windows ou Linux

⏱️ Durée

30 à 45 min (surtout des téléchargements)

Étape 1 · Installer l'Arduino IDE

L'Arduino IDE est le logiciel dans lequel on écrit les programmes et qui les envoie dans la carte. Il est gratuit.

  1. Aller sur la page officielle : arduino.cc/en/software.
  2. Télécharger Arduino IDE 2 (version 2.3.10 au moment où on écrit ces lignes) pour ton système.

Lancer l'installeur téléchargé et accepter les choix proposés. Si Windows demande d'installer des pilotes (drivers) pendant l'installation, accepter.

Le fichier est une AppImage. La rendre exécutable, puis la lancer :

chmod +x arduino-ide_2.3.10_Linux_64bit.AppImage
./arduino-ide_2.3.10_Linux_64bit.AppImage --no-sandbox

Sans --no-sandbox, l'IDE s'arrête aussitôt avec une erreur chrome-sandbox sur certaines distributions : c'est normal, l'option règle le problème.

  1. Passer l'IDE en français : File → Preferences → Language → Français, puis redémarrer l'IDE.

Étape 2 · Apprendre à l'IDE à parler ESP32

À l'installation, l'IDE ne connaît que les cartes Arduino. Il faut lui ajouter les cartes ESP32.

  1. Ouvrir Fichier → Préférences.
  2. Dans le champ « URL de gestionnaire de cartes supplémentaires », coller cette adresse officielle d'Espressif (le fabricant de l'ESP32) :

    https://espressif.github.io/arduino-esp32/package_esp32_index.json
    
  3. Valider avec OK.

  4. Ouvrir le gestionnaire de cartes : Outils → Carte → Gestionnaire de carte… (ou l'icône de carte électronique dans la barre de gauche).
  5. Chercher esp32, et installer « esp32 » par Espressif Systems.

Ne pas confondre

Il existe aussi « Arduino ESP32 Boards » par Arduino : ce n'est pas le bon. Prendre celui d'Espressif Systems.

Le téléchargement est gros (plusieurs centaines de Mo) : c'est le moment d'aller chercher un verre d'eau.

Étape 3 · Brancher la carte et vérifier que l'ordinateur la voit

Brancher l'ESP32 avec le câble de données. La LED rouge s'allume : la carte est alimentée.

  1. Faire un clic droit sur le bouton Démarrer → Gestionnaire de périphériques.
  2. Déplier Ports (COM et LPT) : une ligne « Silicon Labs CP210x USB to UART Bridge (COM3) » doit apparaître (le numéro peut varier).
  3. Si la carte apparaît avec un point d'exclamation jaune, installer le pilote officiel CP210x de Silicon Labs : silabs.com – pilotes CP210x, puis débrancher / rebrancher.
  1. Juste après le branchement, taper :

    sudo dmesg | tail
    

    Une ligne doit mentionner cp210x et ttyUSB0.

  2. Autoriser ton utilisateur à utiliser le port série (une seule fois) :

    sudo usermod -aG dialout $USER
    

    Puis se déconnecter et se reconnecter de la session (ou redémarrer) pour que ce soit pris en compte.

  3. Si ttyUSB0 apparaît puis disparaît aussitôt, le service brltty (pour les plages braille) l'intercepte. S'il ne te sert pas :

    sudo apt remove brltty
    

Rien n'apparaît du tout ?

Dans 9 cas sur 10, c'est le câble : c'est un câble de charge. Voir le câble USB.

Étape 4 · Régler l'IDE pour notre carte

Dans le menu Outils :

Réglage Choix Remarque
Carte esp32 → ESP32 Dev Module Le modèle générique qui convient à notre carte
Port COM3 (Windows) ou /dev/ttyUSB0 (Linux) Celui qui apparaît quand la carte est branchée
Upload Speed 921600 Descendre à 115200 si le téléversement échoue
Tous les autres Laisser par défaut

Pour mieux comprendre ce qui se passe

Fichier → Préférences → cocher « Afficher les résultats détaillés pendant : le téléversement ». En cas de problème, les messages seront bien plus parlants.

Étape 5 · Écrire le programme

L'IDE propose un exemple Blink (Fichier → Exemples → 01.Basics → Blink), mais il ne marche pas tel quel sur notre carte : il utilise un nom, LED_BUILTIN, que la carte « ESP32 Dev Module » ne connaît pas. On obtient l'erreur :

error: 'LED_BUILTIN' was not declared in this scope

On écrit donc notre propre version, en donnant directement le numéro de la broche de la LED bleue : 2.

  1. Fichier → Nouveau croquis.
  2. Effacer tout ce qui est écrit, déplier le programme ci-dessous, puis le taper (ou le copier) :
Le programme · cliquer pour l'afficher
// Mission 0 · Premier signal
// Fait clignoter la LED bleue de l'ESP32 et écrit ON / OFF à l'écran.

#define LED 2                  // la LED bleue est reliée à la broche GPIO 2

void setup() {                 // setup() s'exécute UNE fois, au démarrage
  pinMode(LED, OUTPUT);        // la broche 2 devient une sortie
  Serial.begin(115200);        // on ouvre la communication avec l'ordinateur
  Serial.println("R2-DuPont en ligne !");
}

void loop() {                  // loop() se répète à l'infini
  digitalWrite(LED, HIGH);     // allume la LED
  Serial.println("ON");
  delay(500);                  // attend 500 millisecondes (une demi-seconde)

  digitalWrite(LED, LOW);      // éteint la LED
  Serial.println("OFF");
  delay(500);
}
  1. Enregistrer : Fichier → Enregistrer sous… → mission0_premier_signal.

Ce qu'on apprend ici

Tout programme Arduino a deux parties : setup(), exécutée une seule fois au démarrage, et loop(), qui tourne en boucle pour toujours. Les lignes qui commencent par // sont des commentaires : l'ordinateur les ignore, ils servent aux humains.

🎓 Académie : Anatomie d'un programme · La LED

Étape 6 · Vérifier, puis téléverser

  1. Cliquer sur ✓ Vérifier (Ctrl+R) : l'IDE traduit le programme pour l'ESP32. La première fois, c'est long (une à deux minutes). Doit s'afficher : « Compilation terminée ».
  2. Cliquer sur → Téléverser (Ctrl+U) : le programme part dans la carte.

Dans la zone du bas, on doit voir défiler :

Connecting....
Writing at 0x00010000... (100 %)
Hard resetting via RTS pin...

Bloqué sur « Connecting…….. » ?

Pendant que ces points défilent, maintenir le bouton BOOT de la carte appuyé, jusqu'à ce que « Writing at… » apparaisse. Puis le relâcher.

Étape 7 · Observer le résultat

  • La LED bleue clignote : allumée une demi-seconde, éteinte une demi-seconde.
Chez nous : la LED bleue clignote (la rouge, elle, reste allumée).
  • Ouvrir le moniteur série : Outils → Moniteur série (ou la loupe en haut à droite). En bas de la fenêtre, régler la vitesse sur 115200 baud. Les messages défilent :
R2-DuPont en ligne !
ON
OFF
ON
…

Pas de LED bleue sur ta carte ?

Certaines cartes n'en ont pas. Si le moniteur série affiche bien ON / OFF, le programme tourne : la mission est réussie quand même.

🎓 Académie : Le temps

Si ça coince

Symptôme Cause probable Solution
Aucun port dans Outils → Port Câble de charge, ou pilote manquant Changer de câble ; installer le pilote CP210x (Windows) ; groupe dialout (Linux)
'LED_BUILTIN' was not declared Exemple Blink d'origine Utiliser notre code avec #define LED 2
Bloqué sur Connecting… La carte n'entre pas en mode programmation Maintenir BOOT pendant la connexion
Permission denied: /dev/ttyUSB0 (Linux) Droits sur le port série sudo usermod -aG dialout $USER, puis se reconnecter
Le moniteur affiche des caractères bizarres Mauvaise vitesse Régler le moniteur sur 115200 baud
Tout marche mais la LED ne clignote pas Pas de LED bleue sur cette carte Le moniteur série fait foi
OpenOCD: GDB Server Quit Unexpectedly, Can't find debug.cfg Le bouton Débogage (l'insecte ▷🐞) a été cliqué au lieu de Téléverser Utiliser la flèche → Téléverser. Notre ESP32 ne peut pas être débogué sans sonde spéciale (JTAG) : on débogue avec Serial.println()
Une carte au nom inattendu (« ALKS ESP32 »…) en bas de la fenêtre L'IDE a deviné la carte d'après la puce USB Choisir soi-même Outils → Carte → ESP32 Dev Module (dans la famille ESP32 + Bluepad32 Arduino à partir de la mission 1)

Défis bonus

Trois petits défis à partir du programme de la mission. Chaque solution est rangée dans un holocron scellé : essaie d'abord par toi-même, l'indice est là si tu bloques, et le code d'accès du maître de l'atelier ouvre la solution.

Défi 1 · Deux fois plus vite

Fais clignoter la LED deux fois plus vite. Quelle ligne faut-il changer ?

Indice

Les pauses sont écrites en millisecondes dans les delay(...). Combien y en a-t-il dans loop() ?

Défi 2 · Le battement de cœur

Fais un battement de cœur : deux clignotements rapides, puis une pause. Boum-boum… boum-boum…

Indice

Il faut un flash court, un petit silence, un deuxième flash court, puis une longue pause. Compte les delay dont tu as besoin.

Défi 3 · Ton prénom au démarrage

Écris ton prénom dans le moniteur série au démarrage, à la place de « R2-DuPont en ligne ! ».

Indice

Le message de démarrage est écrit une seule fois, dans setup(), entre guillemets.

Variante : quatre LEDs d'un coup (en parallèle)

Avant la piste d'atterrissage, une étape simple : 4 LEDs branchées toutes sur D2, avec le même programme que la mission 0. Elles clignotent toutes ensemble, en même temps que la LED bleue.

  • Chaque LED a sa propre résistance de 330 Ω, et tous ces petits ensembles vont de D2 à GND.
  • Ne pas partager une seule résistance pour plusieurs LEDs : elles s'allumeraient de façon inégale.
  • Chaque LED tire environ 4 mA ; une broche supporte raisonnablement une vingtaine de mA, donc 3 ou 4 LEDs par broche, pas plus.
  • Les brancher l'une derrière l'autre (en série) ne marche pas : il faudrait plus de 3,3 V pour les allumer toutes.
Les 4 LEDs en parallèle sur D2 clignotent ensemble.
Quatre LEDs en parallèle sur D2 et GND
Le montage en parallèle : un câble D2, un câble GND, et une résistance par LED.

🎓 Académie : Les circuits · L'intensité · La résistance · La LED

Défi bonus : la piste d'atterrissage

Quatre LEDs qui s'allument l'une après l'autre, dans un sens puis dans l'autre, comme les feux d'une piste d'atterrissage de vaisseau. C'est ce qu'on appelle un chenillard.

Matériel du défi

  • 4 LEDs classiques : rouge, jaune, verte… et même bleue (elle demande un peu plus de tension, mais chez nous elle s'allume bien, voir la vidéo)
  • 4 résistances de 330 Ω (orange · orange · marron · or) — voir le code couleur
  • Une plaque d'essai et 5 câbles Dupont mâle-mâle

Le câblage

Chaque LED a sa propre broche et sa propre résistance. Les résistances rejoignent toutes la ligne − de la plaque, elle-même reliée au GND du support.

+−+−abcdefghij135791113D18D19D21D22GND
Pour chaque LED : broche → patte longue (+) → LED → patte courte (−) → résistance → ligne −. Les câbles colorés viennent des connecteurs D18, D19, D21 et D22 du support.
LED Broche du support Patte longue (+) Patte courte (−) Résistance
1 D18 colonne 1 colonne 2 de la colonne 2 à la ligne −
2 D19 colonne 4 colonne 5 de la colonne 5 à la ligne −
3 D21 colonne 7 colonne 8 de la colonne 8 à la ligne −
4 D22 colonne 10 colonne 11 de la colonne 11 à la ligne −
— GND câble vers la ligne −

Pourquoi la résistance est-elle de l'autre côté cette fois ?

Elle peut se placer avant ou après la LED : ce qui compte, c'est qu'elle soit sur le chemin du courant. Ici, la mettre côté − permet de la brancher directement sur la ligne − de la plaque.

🎓 Académie : La résistance · Les circuits

En vrai

La piste d'atterrissage en action.
La même, vue de côté.
Le montage de la piste : câbles sur D22, D21, D19 et D18
Le montage : câbles dans les connecteurs extérieurs D22, D21, D19, D18, et GND en blanc.

D'autres angles dans les holo-archives.

Le code

🎓 Académie : Tableaux, boucles, fonctions · Le temps

À toi d'écrire le programme ! Il doit allumer D18, D19, D21 et D22 l'une après l'autre, puis revenir en arrière.

Indice 1

Commence avec une seule LED sur D18 : c'est le programme de la mission 0 avec 18 à la place de 2. Puis ajoute les autres, une par une.

Indice 2

Un tableau évite d'écrire quatre fois la même chose : const int LEDS[] = {18, 19, 21, 22};. Ensuite, LEDS[0] vaut 18, LEDS[1] vaut 19… et une boucle for peut les parcourir.

Pour aller plus loin

  • Change VITESSE pour un décollage en urgence (50) ou une approche en douceur (400).
  • Allume les LEDs deux par deux, puis toutes ensemble pour un « feu vert, décollage autorisé ».
Indice

Crée une fonction paire(a, b) qui allume deux LEDs en même temps, et une fonction toutes(etat) qui allume ou éteint les quatre d'un coup.

Validation

  • L'Arduino IDE est installé, en français
  • Les cartes ESP32 d'Espressif sont installées
  • L'ordinateur voit la carte (un port apparaît)
  • Le programme se téléverse sans erreur
  • La LED bleue clignote et le moniteur série affiche ON / OFF
  • Bonus : la piste d'atterrissage fonctionne