Skip to content

feat(inovmicro-exao): porte la fiche t04 prise en main de VS Code#176

Merged
nedseb merged 12 commits into
mainfrom
feat/inovmicro-vscode
May 27, 2026
Merged

feat(inovmicro-exao): porte la fiche t04 prise en main de VS Code#176
nedseb merged 12 commits into
mainfrom
feat/inovmicro-vscode

Conversation

@DumontALINE
Copy link
Copy Markdown
Collaborator

@DumontALINE DumontALINE commented May 22, 2026

Résumé

  • Ajoute la fiche enseignant·e t04 « VS Code : Prise en main de MicroPython sur la STeaMi » (site/docs/inovmicro-exao/t04-vscode.md) au catalogue I-Novmicro [EPIC] Intégration STeaMi/MicroPython — Phase 1 (Let's STEAM + enseignants) #2.
  • Couvre l'installation et la configuration de VS Code multi-OS (Windows, macOS, Linux), les extensions essentielles (Python + Pylance, MicroPico comme variante intégrée), l'installation de mpremote (pipx recommandé, venv pour postes verrouillés, callouts PEP 668 et PATH), un premier programme LED RGB + boutons A/B, l'usage du REPL, et l'activation de l'autocomplétion MicroPython via des stubs.
  • Suit les CONVENTIONS.md : structure H2 Introduction → Phases, header flex avec icône SVG, callouts standard et custom, identifiants Python en français ASCII (led_rouge, bouton_a, regler_led), objectifs d'apprentissage avec verbes d'action en gras + transposition, section « Aller plus loin » (Pour comprendre / Pour s'inspirer / Pour approfondir), footer CC BY-SA et attribution Wiki@LAB.
  • Suivi en parallèle d'une feature request chez steamicc/micropython-steami-lib pour publier des stubs des modules spécifiques STeaMi : steamicc/micropython-steami-lib#427.

Type de changement

  • Contenu — fiche, doc, texte
  • Catalogue — entrée(s) dans resources.ts ou projects.ts
  • Code — composant React, page, type, CSS
  • Configuration — config Docusaurus, CI, hooks
  • Assets — images, PDFs, vidéos

Test plan

  • npm run site:build passe sans erreur
  • npm run site:typecheck passe
  • Vérification visuelle locale dans le navigateur (rendu header, badges, callouts, code Python, section Aller plus loin)
  • Lint OK : npm run format:check, npm run lint:md, npm run lint:spell, npm run lint:crosslinks
  • Conforme aux conventions de CONVENTIONS.md (header, structure, callouts, identifiants Python en français, vouvoiement, objectifs d'apprentissage, Aller plus loin, vocabulaire sans « firmware » dans la prose)
  • Liens externes vérifiés

Issues liées

Closes #21

Copilot AI review requested due to automatic review settings May 22, 2026 09:07
@github-project-automation github-project-automation Bot moved this to Todo in Wiki May 22, 2026
@github-actions github-actions Bot requested a review from Man-BAL May 22, 2026 09:07
@DumontALINE DumontALINE requested review from Copilot and nedseb and removed request for Copilot May 22, 2026 09:07
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Ajoute une nouvelle fiche I-NOVMICRO (i04) pour démarrer avec la STeaMi en MicroPython via VS Code, et référence cette fiche dans le catalogue des ressources afin qu’elle apparaisse dans la section “Ressources”.

Changes:

  • Ajout d’une entrée i04-vscode dans resources.ts (catalogue/landing des ressources).
  • Création de site/docs/inovmicro-exao/i04-vscode.md avec le pas-à-pas (installation VS Code, firmware MicroPython, premier programme, usage de mpremote).

Reviewed changes

Copilot reviewed 2 out of 6 changed files in this pull request and generated 6 comments.

File Description
site/src/data/resources.ts Ajoute l’entrée catalogue pour exposer la nouvelle fiche VS Code dans la liste des ressources.
site/docs/inovmicro-exao/i04-vscode.md Nouvelle fiche détaillant l’installation/configuration et un premier workflow MicroPython sur STeaMi avec VS Code.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread site/docs/inovmicro-exao/i04-vscode.md Outdated
<span className="badge badge--primary">Sciences</span>
<span className="badge badge--info">SteaMi</span>
<span className="badge badge--warning">MicroPython</span>
<span className="badge badge--secondary">Thonny</span>
Comment thread site/docs/inovmicro-exao/i04-vscode.md Outdated
</div>
| Projet | Durée | Difficulté | Âge | Logiciel STeaMi testé |
| ------------- | ------- | ---------- | --------- | --------------------- |
| I-Novmicro #2 | 40 min | Intermédiaire | 11-99 ans | 0.23.1 |
Comment thread site/docs/inovmicro-exao/i04-vscode.md Outdated
</figcaption>
</figure>

Pour programmer en MicroPython avec VS Code, vous n'avez besoin d'aucune extension. Pour créer un nouveau projet, vous devrez simplement créer un nouveau dossier pour votre projet et y ajouter un fichier `.py` qui contiendra votre code MicroPython.
Comment thread site/docs/inovmicro-exao/i04-vscode.md Outdated
<figure style={{textAlign: 'center', margin: '1rem auto'}}>
<img
src="/img/ressources/inovmicro-exao/i04-vscode/installer.png"
alt="Fenêtre principale de Visual Studio Code au premier démarrage"
Comment thread site/docs/inovmicro-exao/i04-vscode.md Outdated
Comment on lines +194 to +199
- Si ce n'est pas déjà fait, ouvrez le terminal intégré de VS Code (Menu `Terminal > New Terminal` ou raccourci `Ctrl+J`).
- Dans le terminal, lancez la commande `mpremote connect auto fs cp chemin/projet.py :main.py` puis `mpremote connect auto reset` pour exécuter le programme.

**Programme temporaire :**
- Ouvrez le terminal intégré de VS Code (Menu `Terminal > New Terminal` ou raccourci `Ctrl+J`).
- Dans le terminal, lancez la commande `mpremote connect auto run chemin/projet.py` pour exécuter le programme sans le copier sur la carte.
Comment thread site/docs/inovmicro-exao/i04-vscode.md Outdated
- Ouvrez le terminal intégré de VS Code (Menu `Terminal > New Terminal` ou raccourci `Ctrl+J`).
- Dans le terminal, lancez la commande `mpremote connect auto run chemin/projet.py` pour exécuter le programme sans le copier sur la carte.

:::tip[info Un programme est déjà en cours d'exécution]
Rebase de la fiche initialement nommée i04-vscode sur main et renommage
en t04-vscode pour respecter la convention iNN-/tNN- :
- t = fiches enseignant·es éditeurs (t01-t05), i = ports Let's STEAM
- i04 est déjà pris (i04-capteur-lumiere)
- le dossier images t04-vscode/ existait déjà comme placeholder

Renommages mécaniques appliqués :
- nom de fichier i04-vscode.md → t04-vscode.md
- frontmatter id, slug
- 4 src d'images i04-vscode/ → t04-vscode/
- entrée catalogue resources.ts (id, slug, thumbnail, section: 'Prise en main')

Corrections complémentaires mécaniques :
- src cassé i03-thonny/02-drag-drop-firmware.gif → t03-decouverte-thonny/...
  (le GIF de glisser-déposer du firmware a déménagé lors du refactor #102)
- badge mal cassé « vsCode » → « VS Code »
- typo « REPLet revenir » → « REPL et revenir »

Reste à compléter côté Aline avant merge (cf. revue) :
- ajouter la section ## Aller plus loin (Pour comprendre / Pour s'inspirer)
- recapturer page.png pour masquer le panneau « Recent » (chemins persos)

Closes #21
@nedseb nedseb force-pushed the feat/inovmicro-vscode branch from 4acc00b to 96fd500 Compare May 27, 2026 09:02
@github-actions
Copy link
Copy Markdown
Contributor

Images automagically compressed by Calibre's image-actions

Compression reduced images by 67.3%, saving 280.8 KB.

Filename Before After Improvement Visual comparison
site/static/img/ressources/inovmicro-exao/t04-vscode/page.png 165.8 KB 43.2 KB 73.9% View diff
site/static/img/ressources/inovmicro-exao/t04-vscode/installer.png 101.1 KB 28.5 KB 71.8% View diff
site/static/img/ressources/inovmicro-exao/t04-vscode/hex.png 98.4 KB 29.9 KB 69.7% View diff
site/static/img/ressources/inovmicro-exao/t04-vscode/icone.png 52.0 KB 34.8 KB 33.0% View diff

Copy link
Copy Markdown
Member

@nedseb nedseb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merci pour la fiche Aline, le contenu est bien. Comme la branche avait été ouverte avant le refactor de renumérotation #102 (14 mai), elle accumulait un retard structurel qui rendait le merge bloqué. Je viens de pousser un commit qui fait le rebase + renommage mécanique (96fd500, force-push). Tu vas devoir refaire un git pull --force ou un fresh clone sur ta branche locale (l'historique a été réécrit).

Ce que le commit a fait

  • Rebase sur main actuel (résolution du conflit dans resources.ts, prise en compte du dossier images renommé t04-vscode/).
  • Renommage i04 → t04 partout :
    • site/docs/inovmicro-exao/i04-vscode.mdt04-vscode.md
    • site/static/img/ressources/inovmicro-exao/i04-vscode/*t04-vscode/*
    • frontmatter.id, les 4 src= du markdown, l'id/slug/thumbnail du catalogue
  • Image cassée corrigée : i03-thonny/02-drag-drop-firmware.gift03-decouverte-thonny/02-drag-drop-firmware.gif (le GIF de glisser-déposer du firmware a déménagé lors du refactor #102 et ton lien pointait dans le vide).
  • Badge mal cassé : <span>vsCode</span><span>VS Code</span>.
  • Typo : Quitter le REPLet revenir au terminalREPL et revenir.

format:check, lint:md, lint:spell, lint:crosslinks et site:build passent tous au vert localement.

…s, captures)

- Ajoute la section ## Aller plus loin obligatoire (Pour comprendre /
  Pour s'inspirer / Pour approfondir) suivant le modèle t03 et la
  convention CONVENTIONS.md
- Renomme icone.png → VSCode.png pour rester cohérent avec les autres
  fiches éditeur (Thonny.png, Mu_editor.png, Vittascience_editor.png)
- Supprime le placeholder Vs_code.png laissé par le refactor #102 (non
  référencé)
- Floute la zone « Recent » de page.png pour masquer les chemins
  personnels exposés
- « VS Code version 1.60.0 ou supérieure » → « VS Code récent » (la
  version exacte n'est pas vraiment vérifiable et VS Code se met à jour
  automatiquement)
- Rend les figcaptions plus actives (instructions plutôt que
  descriptions neutres)

Refs #21
@nedseb
Copy link
Copy Markdown
Member

nedseb commented May 27, 2026

J'ai poussé un commit complémentaire fd1cdb2 qui adresse les points restants de ma revue :

  • ## Aller plus loin ajouté (Pour comprendre / Pour s'inspirer / Pour approfondir) en suivant le modèle t03-decouverte-thonny.md. Sujets choisis : histoire de VS Code (Electron, Microsoft 2015), Language Server Protocol, MicroPython, Live Share, mpremote multi-cartes, guerre des éditeurs, GitHub Copilot. À adapter si tu veux d'autres entrées.
  • page.png retouchée : flou gaussien sur le panneau « Recent » pour masquer tes chemins personnels. Le mot « Recent » reste lisible, les items en dessous sont brouillés.
  • icone.png renommée en VSCode.png (cohérent avec Thonny.png, Mu_editor.png, Vittascience_editor.png).
  • Placeholder Vs_code.png supprimé (laissé par le refactor refactor(inovmicro-exao): renumérote slugs pour mapping naturel avec Let's STEAM #102, non référencé).
  • « VS Code version 1.60.0 ou supérieure »« VS Code récent » (la valeur 1.60 n'était pas vraiment vérifiable et VS Code se met à jour seul).
  • Figcaptions plus actives : « Page de téléchargement… » → « Choisir la version qui correspond à votre système… », etc.

Tous les checks locaux passent (format, lint:md, lint:spell, lint:crosslinks, site:build).

Tu peux faire un git pull --force (j'ai fait un force-push hier, donc ton historique local est divergent) puis vérifier que mes choix sur le « Aller plus loin » te conviennent. Si OK, la PR est prête.

nedseb added 4 commits May 27, 2026 11:13
L'image montrait la page de téléchargement officielle de VS Code, ce
qui n'apportait pas d'information par rapport au lien vers le site
officiel déjà présent dans le paragraphe au-dessus.

Refs #21
…dans t04-vscode

La section « Exécution » d'origine se limitait à « tapez pip install
mpremote » et se heurtait à plusieurs cas réels d'environnement :

- PEP 668 sur Ubuntu 24.04+, Debian 12+, Fedora 38+, Homebrew Python
  macOS : pip install global refusé (externally-managed-environment).
- PATH après pip install --user : commande mpremote introuvable.
- Postes verrouillés sans droits administrateur en salle informatique.

Restructuration en deux sous-sections :

- « Installer mpremote » : pipx en headline (cohérent avec t03 qui
  utilise déjà pipx pour Thonny), prérequis Python 3 mentionné, lignes
  d'install de pipx par OS. Deux callouts pour les cas particuliers
  PEP 668 et PATH non trouvé. Repli venv détaillé pour les postes
  verrouillés sans droits admin.
- « Exécuter le programme » : programme persistant / programme
  temporaire (inchangé), callout pour les permissions /dev/ttyACM* sur
  Linux pointant vers depannage.

Ajoute pipx, venv et ensurepath au dictionnaire cspell.

Refs #21
VS Code traite par défaut les fichiers .py comme du texte brut :
sans Python+Pylance il n'y a ni coloration enrichie ni autocomplétion.
Et même avec, Pylance ne connaît pas les modules MicroPython
(machine, time.sleep_ms, etc.) sans stubs.

Ajouts :

- Étape 1, nouvelle sous-section « Installer les extensions VS Code
  essentielles » : Python par Microsoft (ms-python.python) avec
  Pylance bundlée, point d'entrée incontournable.

- Étape 2, nouvelle sous-section « Variante : workflow intégré avec
  MicroPico » : présente l'extension MicroPico comme alternative
  graphique à mpremote en CLI (boutons Run / Upload / Toggle REPL),
  avec un callout qui explique pourquoi la fiche garde quand même
  mpremote en headline (automatisation, compréhension, SSH).

- Étape 3, nouvelle sous-section « Activer l'autocomplétion sur les
  modules MicroPython » : explique l'installation de
  micropython-stdlib-stubs dans un venv projet, mentionne le repo
  josverl/micropython-stubs pour les stubs par port (stm32 pour
  STeaMi), et un callout sur la limite des modules spécifiques STeaMi
  avec deux contournements (typings/ + extraPaths, ou ignorer).

Ajoute « stdlib » au dictionnaire cspell.

Refs #21
Le paragraphe limite pointe désormais vers la feature request ouverte
chez steamicc/micropython-steami-lib qui suit la publication d'un
paquet micropython-steami-stubs sur PyPI. En attendant, les deux
contournements (typings/ + extraPaths, ou ignorer) restent valides.

Refs #21
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 7 changed files in this pull request and generated 1 comment.

Comment thread site/docs/inovmicro-exao/t04-vscode.md Outdated

### Pour comprendre

- **[VS Code (Wikipédia)](https://fr.wikipedia.org/wiki/Visual_Studio_Code)** : lancé par Microsoft en 2015, VS Code est un éditeur **libre** (licence MIT) qui repose sur le framework Electron, la même technologie qui fait tourner Slack, Discord ou Spotify. Une application web déguisée en application de bureau, qui peut ajouter des fonctionnalités via des extensions écrites en JavaScript.
Met la fiche en conformité avec les CONVENTIONS.md :

Objectifs d'apprentissage : remet l'intro obligatoire « À la fin de
cette activité, l'élève sera capable de... », chaque puce commence
maintenant par un verbe d'action observable en gras (Installer,
Distinguer, Écrire, Utiliser, Faire le lien, Adapter), et la dernière
ouvre sur la transposition à d'autres cartes MicroPython.

De quoi parle-t-on : remplace l'ouverture technique par trois
situations concrètes (série TV, YouTubeur, Word/Google Docs) avant
d'introduire le concept d'éditeur de code. Ajoute le callout
:::info[Composants intégrés, rien à câbler] pour la LED RGB et les
boutons A/B (équivalent du pattern « Capteurs intégrés » des autres
fiches I-NOVMICRO).

Identifiants Python en français explicite ASCII selon le tableau de
renommage de CONVENTIONS.md :
- led_r/g/b → led_rouge/verte/bleue
- btn_a/b   → bouton_a/b
- set_rgb   → regler_led(rouge, verte, bleue)
- a_pressed → bouton_a_appuye, idem b
Les noms de broches firmware (LED_RED, A_BUTTON, etc.) restent en
anglais comme la convention le précise. Tableau « Brochage utilisé »
mis à jour pour distinguer broche STeaMi et variable Python.

« Firmware » retiré de la prose visible (titre H3, paragraphe
d'introduction, alt text de l'image hex.png) : remplacé par
« MicroPython » directement comme la convention le demande. Conservé
dans les noms de fichiers releases (steami-micropython-firmware-...hex)
et dans le commentaire de tête du code Python où le mot est toléré.

Vouvoiement appliqué à l'ouverture concrète (« Vous avez déjà vu... »).

Refs #21
@nedseb nedseb changed the title [FICHE] Démarrer avec VSCode + extension MicroPython #21 feat(inovmicro-exao): porte la fiche t04 prise en main de VS Code May 27, 2026
@nedseb
Copy link
Copy Markdown
Member

nedseb commented May 27, 2026

Suite de la revue (relecture plus exhaustive après ton merci pour le rebase + Aller plus loin). Commit 1cc8836 pousse les conformités CONVENTIONS.md restantes :

  • Objectifs d'apprentissage : ajout de l'intro obligatoire « À la fin de cette activité, l'élève sera capable de... », chaque puce démarre par un verbe d'action en gras (Installer, Distinguer, Écrire, Utiliser, Faire le lien, Adapter). La dernière puce ouvre sur la transposition à d'autres cartes MicroPython (Pico, micro:bit, ESP32) comme la convention le demande.

  • De quoi parle-t-on : ouverture par trois situations concrètes (série TV, YouTubeur, Word/Google Docs) avant d'introduire le concept d'éditeur de code, en vouvoiement. Ajout du callout :::info[Composants intégrés, rien à câbler] pour la LED RGB et les boutons (équivalent du pattern « Capteurs intégrés » des autres fiches I-NOVMICRO).

  • Identifiants Python francisés selon le tableau de renommage de CONVENTIONS.md :

    • led_r / led_g / led_bled_rouge / led_verte / led_bleue
    • btn_a / btn_bbouton_a / bouton_b
    • set_rgb(r, g, b)regler_led(rouge, verte, bleue)
    • a_pressed / b_pressedbouton_a_appuye / bouton_b_appuye (préfixé par le sujet, pas par is_)

    Les noms de broches STeaMi (LED_RED, A_BUTTON...) restent en anglais comme la convention le précise (constantes du firmware). Tableau « Brochage utilisé » réécrit pour distinguer clairement broche STeaMi et variable Python.

  • « Firmware » retiré de la prose (titre H3 « Installer le firmware MicroPython » → « Installer MicroPython », paragraphe d'introduction, alt text de hex.png). Conservé dans les noms de fichiers releases (qui sont des identifiants littéraux) et dans le commentaire de tête du code Python (autorisé par la convention parce qu'il s'adresse aux modifieurs du code, pas aux lecteurs de la fiche).

  • Titre PR mis en Conventional Commits : feat(inovmicro-exao): porte la fiche t04 prise en main de VS Code (sera le message du squash merge).

  • Body PR mis à jour pour refléter le contenu réel (t04, extensions, stubs, lien vers steamicc#427) et Closes #21 pour la fermeture automatique de l'issue.

Tous les checks locaux passent (format:check, lint:md, lint:spell, lint:crosslinks, site:build).

À ce stade je ne vois plus de violation de convention restante. La PR est techniquement prête à merger côté contenu et structure. Si tu valides ces choix de refonte (notamment les nouveaux identifiants Python, et l'ouverture concrète qui change le ton du « De quoi parle-t-on »), je peux dismisser ma revue --request-changes pour débloquer le merge.

Deux correctifs ciblés après lecture des inline comments du
copilot-pull-request-reviewer :

1. Raccourci pour ouvrir le terminal VS Code : Ctrl+J n'est pas le
   raccourci « New Terminal » mais le « Toggle Panel » (qui peut
   afficher Terminal, Output ou Problems selon l'état). Remplacé par
   le raccourci correct par OS : Ctrl+` sur Windows/Linux, Cmd+` sur
   macOS, avec fallback Menu Terminal > New Terminal.

2. Licence VS Code : la formulation « éditeur libre (licence MIT) »
   était inexacte. Code-OSS (le code source amont) est sous MIT, mais
   la distribution officielle « Visual Studio Code » (depuis
   code.visualstudio.com) ajoute télémétrie, marque et extensions
   propriétaires (debugger C++ notamment), donc tombe sous licence
   Microsoft. Reformulation qui distingue les deux et renvoie vers
   VSCodium comme variante 100 % libre.

Les autres comments Copilot (badge Thonny, difficulté incohérente
fiche/catalogue, phrase « aucune extension », alt installer.png,
syntaxe :::tip[info]) étaient déjà résolus par les commits précédents
ou par les ajustements d'Aline.

Refs #21
@nedseb
Copy link
Copy Markdown
Member

nedseb commented May 27, 2026

Relecture des 7 inline comments du copilot-pull-request-reviewer :

Adressés par 6e249cd

  • Raccourci Ctrl+J pour ouvrir le terminal (commentaire sur l.199 puis 292) : Copilot avait raison, Ctrl+J est le « Toggle Panel » et pas « New Terminal » (le panel peut afficher Terminal, Output ou Problems selon l'état). Remplacé par Ctrl+` / Cmd+` selon l'OS + fallback menu Terminal > New Terminal.
  • « VS Code est un éditeur libre (licence MIT) » (commentaire sur l.381) : reformulation pour distinguer Code-OSS (le code source amont sous MIT) de la distribution officielle Visual Studio Code (téléchargée depuis code.visualstudio.com, sous licence Microsoft à cause de la télémétrie, la marque et le debugger C++ propriétaire). Mention de VSCodium comme variante 100 % libre pour les profs sensibles à ce point.

Déjà résolus par les commits précédents ou par les ajustements d'Aline

  • Badge « Thonny » → « VS Code » (l.17) : déjà fixé via 96fd500 (badge vsCodeVS Code).
  • Difficulté incohérente fiche / catalogue (l.21) : la fiche dit « Débutant », le catalogue 'debutant', c'est cohérent.
  • « n'avez besoin d'aucune extension » (l.89) : la phrase n'existe plus dans le texte courant (retirée lors du refactor extensions VS Code).
  • Alt incohérent pour installer.png (l.66) : la figure entière a été supprimée par Aline (e030005).
  • Syntaxe :::tip[info ...] (l.201) : la syntaxe est désormais correcte (:::tip[Un programme est déjà en cours d'exécution]).

Avec ce commit, je considère que tous les retours de revue (les miens + les 7 de Copilot) sont adressés.

nedseb added 3 commits May 27, 2026 14:06
… liens, conventions)

P1 — Paquet stubs corrigé. micropython-stdlib-stubs ne contient pas
machine.pyi (vérifié dans un venv frais) : Pylance continuait à
souligner « Import "machine" could not be resolved » malgré la
procédure documentée. Remplacement par micropython-stm32-stubs qui
contient effectivement machine.pyi pour le port STM32 (STeaMi =
STM32WB55) et tire micropython-stdlib-stubs comme dépendance.

P2a — Portée de MicroPico recadrée. La page Marketplace
(paulober.pico-w-go) cible officiellement Raspberry Pi Pico / Pico W,
les autres cartes n'étant qu'en support expérimental. La fiche
affirmait à tort que MicroPico marche avec « n'importe quelle carte
MicroPython ». Renommage de la section en « Variante à tester »,
ajout d'un callout :::caution[Périmètre officiel limité au Raspberry
Pi Pico] explicite, et softening des deux autres mentions
(objectif d'apprentissage et paragraphe d'intro Étape 1). mpremote
en CLI reste positionné comme le chemin garanti.

P2b — Deux liens cassés corrigés (la PR affirmait « liens externes
vérifiés », ce qui n'était pas le cas) :
- code.visualstudio.com/learn/collaboration/live-share → 404
  remplacé par visualstudio.microsoft.com/services/live-share/ (200)
- fr.wikipedia.org/wiki/Guerre_des_éditeurs → 404 (la page FR n'existe
  pas) remplacé par en.wikipedia.org/wiki/Editor_war (200), avec
  mention que la page n'existe qu'en anglais.

P3 — Conventions :
- :::tip[Un programme déjà en cours d'exécution] → :::info[...]
  (la convention réserve :::tip aux ressources imprimables, pas au
  dépannage non imprimable)
- 4 em-dashes (l.58, 198, 389, 391) remplacés par « : », « ; » ou
  parenthèses selon le contexte (convention interdit em/en-dashes)
- Lien Electron qui utilisait la syntaxe interdite ](<https://...>)
  pour gérer les parenthèses dans l'URL : URL-encodées en %28/%29 à
  la place, comme la convention le préconise.

Refs #21
…ct test)

Tests pratiques sur la STeaMi montrent que MicroPico (paulober.pico-w-go
4.3.4) est inutilisable en classe sans patch invasif du bundle :

- Connect : refuse par filtre VID/PID hardcodé même avec manualComDevice
  défini. Bug upstream paulober/MicroPico#285 ouvert sans résolution
  depuis février 2025.
- Avec patch des arrays ht/gt de extension.js (ajout VID 0x0d28 et PID
  0x0204) : Connect/Run/REPL fonctionnent, mais Upload échoue
  silencieusement avec « Failed to execute script on Pico » — la
  fonctionnalité phare pour la classe (install persistante en un clic)
  reste cassée.
- Patch réécrit à chaque mise à jour de l'extension.

Refonte de la section « Variante à tester : workflow intégré avec
MicroPico » en callout :::caution explicite qui détaille les résultats
empiriques et déconseille le déploiement. mpremote en CLI reste
positionné comme le chemin garanti.

Nettoyage des deux mentions résiduelles MicroPico dans l'Étape 1
(objectif d'apprentissage et paragraphe d'introduction) pour cohérence.

Pylance + stubs micropython-stm32-stubs restent recommandés
(indépendants de MicroPico, validés en pratique : tooltip
« (constant) OUT: int = 1 » s'affiche sur Pin.OUT).

Ajoute « Pymakr » et « paulober » au dictionnaire cspell.

Refs #21
…e stm32python

Relecture éditoriale de la fiche pour resserrer le ton et simplifier
la structure :

- Étape 1 absorbe la mise en place complète : installer mpremote
  (auparavant en Étape 2) est désormais regroupé avec « Installer
  MicroPython sur la STeaMi », plus logique car il s'agit d'outils de
  préparation avant d'écrire le moindre code.
- Étape 2 ne contient plus que ce qui touche au programme : explication
  matérielle, code, exécution. Plus court et plus focus.
- Section « Extensions MicroPython graphiques : déconseillées » et son
  :::caution MicroPico retirés. Une mention courte reste dans l'intro
  d'Étape 1 (« Les extensions VS Code pour MicroPython (MicroPico,
  Pymakr...) ne supportent pas la STeaMi à ce jour »), suffisante pour
  prévenir un·e enseignant·e curieux·se sans alourdir la fiche.
- Callout :::info[La commande mpremote n'est pas reconnue ?] retiré
  (cas particulier mineur, l'utilisateur·rice avancé·e saura
  diagnostiquer un PATH manquant).
- Plusieurs resserrements de prose ; reformulations qui s'éloignent du
  jargon vague (« presque pas » → « pas », « une résistance présente »
  → « des résistances présentes », « Brochage utilisé » → « Broches
  utilisées »).

Ajout dans « Pour approfondir » du guide francophone mpremote sur
stm32python.gitlab.io, qui complète utilement la doc officielle pour
les enseignant·es.

Refs #21
@nedseb nedseb merged commit 9fd26d0 into main May 27, 2026
3 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in Wiki May 27, 2026
@nedseb nedseb deleted the feat/inovmicro-vscode branch May 27, 2026 13:52
nedseb added a commit that referenced this pull request May 27, 2026
Rebase de la PR initiale (branche feat/inovmcro-python pré-datant le
merge de #176) sur main actuel, renommage et ajout propre :

- Fichier nommé conformément à la convention iNN/tNN : t06-base-language.md
  → t06-bases-langage.md (le dossier images était déjà t06-bases-langage/).
- Frontmatter id corrigé en t06-bases-langage.
- Nouvelle entrée resources.ts insérée à côté de t04-vscode dans la
  section « Prise en main », sans détruire t04 (la PR d'origine
  écrasait l'entrée t04 dans le catalogue par effet de bord du rebase).
- package-lock.json non touché (les -32 lignes du diff initial étaient
  un effet de bord d'un npm install local non maitrisé).
- .cspell/wikilab.txt non touché (les -9 lignes du diff initial étaient
  l'annulation involontaire des ajouts cspell de #176).

Le contenu de la fiche est conservé tel quel à ce stade. Les
corrections de conformité aux CONVENTIONS.md (objectifs d'apprentissage,
identifiants Python en français, callouts, section Aller plus loin,
intro REPL/firmware) suivent dans un commit séparé.

Refs #23
nedseb added a commit that referenced this pull request May 27, 2026
…#178)

* feat(inovmicro-exao): ajoute la fiche t06 bases du langage MicroPython

Rebase de la PR initiale (branche feat/inovmcro-python pré-datant le
merge de #176) sur main actuel, renommage et ajout propre :

- Fichier nommé conformément à la convention iNN/tNN : t06-base-language.md
  → t06-bases-langage.md (le dossier images était déjà t06-bases-langage/).
- Frontmatter id corrigé en t06-bases-langage.
- Nouvelle entrée resources.ts insérée à côté de t04-vscode dans la
  section « Prise en main », sans détruire t04 (la PR d'origine
  écrasait l'entrée t04 dans le catalogue par effet de bord du rebase).
- package-lock.json non touché (les -32 lignes du diff initial étaient
  un effet de bord d'un npm install local non maitrisé).
- .cspell/wikilab.txt non touché (les -9 lignes du diff initial étaient
  l'annulation involontaire des ajouts cspell de #176).

Le contenu de la fiche est conservé tel quel à ce stade. Les
corrections de conformité aux CONVENTIONS.md (objectifs d'apprentissage,
identifiants Python en français, callouts, section Aller plus loin,
intro REPL/firmware) suivent dans un commit séparé.

Refs #23

* docs(inovmicro-exao): refonte t06-bases-langage selon CONVENTIONS.md

Réécriture complète du contenu pour mise en conformité avec les
CONVENTIONS.md et enrichissement pédagogique :

Intro REPL et découverte du firmware (idée du reviewer, source
stm32python.gitlab.io/fr/docs/Micropython/firmware) :

- Nouvelle sous-section « Explorer la STeaMi via le REPL » en tête
  d'Étape 1 : présente le REPL, l'explore avec dir() / help() /
  import, montre l'inspection des modules disponibles (machine,
  time, random, steami_screen, drivers internes), donne quelques
  commandes à tester (LED + arithmétique + concaténation), et liste
  les raccourcis essentiels.
- Callout :::info qui explique le `>>>` (l'invite, pas du code à
  recopier) — pattern de la convention pour les blocs REPL.
- Callout :::info qui contextualise REPL vs fichier `main.py`
  (exploration vs persistance).

Objectifs d'apprentissage : remet l'intro obligatoire « À la fin de
cette activité, l'élève sera capable de... », chaque puce démarre
par un verbe d'action en gras (Distinguer, Écrire, Construire,
Définir, Explorer, Adapter), la dernière ouvre sur la transposition
à d'autres petits programmes interactifs.

De quoi parle-t-on : ouverture concrète (Python à la NASA / dans
les séries / sur Instagram) avant d'introduire le concept de
microcontrôleur. Ajoute le callout :::info[Composants intégrés,
rien à câbler] pour la LED RGB et les boutons.

Identifiants Python francisés selon CONVENTIONS.md :
- Variables d'exemple : x/y/name/is_active → age/prix/prenom/vivant
- Code du jeu : led_r/b → led_rouge/bleue, btn_a/b → bouton_a/b,
  choice() → lire_choix_joueur(), user_choice → choix_joueur,
  card_choice → choix_carte, valeurs 'red'/'blue' → 'rouge'/'bleu'.
- Fonction d'exemple : greet(name) → saluer(prenom),
  print(f"Hello, {name}!") → print(f"Bonjour, {prenom} !").
- Ajout d'une seconde fonction annoncer_carte() pour montrer la
  factorisation en deux responsabilités.

Tableau « Composant / Nom dans le programme » scindé en trois
colonnes (broche STeaMi / variable Python / comportement), comme
t04 corrigée.

Commentaire `# Testée avec firmware STeaMi 0.23.1` ajouté en tête
du code (toléré dans les commentaires de code par la convention).

Callout :::warning[variables] (type non standard, titre minuscule)
remplacé par :::info[Typage dynamique : un atout à manier avec
prudence] avec un texte plus directif.

Section « Exécution du programme (Thonny) » rendue éditeur-
agnostique : ne mentionne plus Thonny en dur, parle de « lancer
depuis l'IDE » et d'enregistrer sous `main.py`.

Aller plus loin restructuré selon la convention : trois
sous-sections « Pour comprendre » (histoire de Python, MicroPython,
REPL, Zen de Python), « Pour s'inspirer » (Astro Pi, Python à la
NASA/SpaceX, Advent of Code, France-IOI), « Pour approfondir »
(docs techniques avec lien vers la page firmware stm32python qui a
inspiré l'intro).

Plus quelques resserrements et reformulations mineures de prose,
suppression de l'espace en début de ligne 10 du SVG.

Refs #23

* docs(inovmicro-exao): ajoute help('modules') dans l'exploration REPL t06

Complète la sous-section « Inspecter ce qui est déjà chargé » de
l'Étape 1 avec une troisième commande exploratoire :

- `dir()` (sans argument) : ce qui est déjà chargé au démarrage,
  pour distinguer chargé vs disponible.
- `help('modules')` (nouveau) : tout ce qui est disponible à l'import,
  incluant les drivers spécifiques STeaMi figés dans le firmware
  (apds9960, bq27441, hts221, ism330dl, lis2mdl, mcp23009e, ssd1327,
  steami_screen, vl53l1x, etc.). Pédagogiquement utile pour matérialiser
  que les drivers ne sont pas magiques mais sont des modules Python
  embarqués.
- `dir(machine)` puis `help(machine.Pin)` : zoom sur un module choisi.

La sortie `help('modules')` collée provient d'une exécution réelle sur
une STeaMi 0.23.1.

Refs #23

* docs(inovmicro-exao): enrichit t06 avec listes, opérateurs, f-strings, conversion

Quatre ajouts pédagogiques dans l'Étape 1, motivés par des lacunes
repérées à la relecture :

- f-strings : la fiche utilisait `f"Bonjour, {prenom} !"` dans
  l'exemple `saluer()` sans avoir présenté la syntaxe. Ajout d'un
  paragraphe dans « Les variables » avec deux exemples, juste après
  le premier `print(...)`.

- Conversion de type : suite logique du callout sur le typage
  dynamique. `int("15")`, `float("3.14")`, `str(15)`, `bool(0)`, et
  mention que les conversions impossibles lèvent une erreur qu'on
  attrapera plus tard avec `try / except`.

- Nouvelle sous-section « Les opérateurs » entre Variables et
  Conditions : tableau des quatre familles (arithmétique, comparaison,
  logique, affectation), exemples REPL avec les pièges habituels
  (`/` vs `//`, `=` vs `==`).

- Nouvelle sous-section « Les listes » : c'était la lacune la plus
  gênante puisque le programme final utilise `['rouge', 'bleu']` et
  `random.choice([...])` sans que les listes aient jamais été
  présentées. Couvre la création, l'accès par index (positif et
  négatif), `len()`, `append()`, `in`, et l'itération `for ... in ...`,
  avec le lien explicite vers `random.choice` qu'on retrouvera à
  l'Étape 2.

Objectif d'apprentissage n°1 mis à jour pour mentionner les listes
et les opérateurs : « Distinguer les principaux types de variables
Python (entier, décimal, chaîne de caractères, booléen, liste) et
les combiner avec les opérateurs du langage (arithmétiques, de
comparaison, logiques) ».

Refs #23

* docs(inovmicro-exao): renomme t06-bases-langage → t06-bases-micropython

Le slug `t06-bases-langage` était ambigu (« langage de quoi ? »).
Le nouveau `t06-bases-micropython` est explicite sur la cible.

Renommages mécaniques :

- Fichier : t06-bases-langage.md → t06-bases-micropython.md
- Dossier images : t06-bases-langage/ → t06-bases-micropython/
- Frontmatter id, src de l'image dans le markdown
- Entrée catalogue resources.ts : id, slug, thumbnail

Le titre affiché (« Bases du langage : Prise en main de MicroPython »)
et le sidebar_label (« Bases du langage ») restent inchangés : c'est
l'identifiant technique qui devient explicite, pas la présentation.

Suppression au passage du .gitkeep résiduel du dossier images (devenu
inutile puisque icone.png y est désormais présent).

Refs #23

* chore(inovmicro-exao): retire .gitkeep résiduel du dossier t06-bases-micropython

Le fichier .gitkeep était là pour préserver le dossier vide à
l'époque où il n'avait pas encore d'icone. Maintenant qu'icone.png
est en place, il n'a plus d'utilité.

Refs #23

* fix(inovmicro-exao): met à jour les références internes au slug t06-bases-micropython

Le commit de rename précédent (8416e8e) n'avait inclus que les
renommages de fichiers/dossier (stagés par git mv) mais pas les
modifications de contenu qui mettent à jour les références
internes :

- Frontmatter `id` dans le markdown (encore t06-bases-langage)
- `src` de l'image dans le header
- Champs `id`, `slug`, `thumbnail` de l'entrée catalogue

Sans ce fix la fiche ne se serait pas affichée correctement
(chemin d'image cassé) et l'`id` du frontmatter serait incohérent
avec le nom de fichier. Build local revérifié vert.

Refs #23

* fix(inovmicro-exao): clarifie 'pull-up externes' pour les boutons t06

Suite au commentaire Copilot : la fiche disait « résistance interne
câblée sur la carte » dans le commentaire de fonctionnement de
l'Étape 2. C'est techniquement ambigu : "interne" prête à confusion
avec la pull-up interne du microcontrôleur (différente, désactivée
en convention STeaMi).

Reformulation alignée sur CONVENTIONS.md §« Boutons : pas de
Pin.PULL_UP » :
« Les boutons disposent de résistances pull-up externes câblées
directement sur la carte STeaMi (à ne pas confondre avec la pull-up
interne du microcontrôleur) : elles maintiennent leur valeur à 1
au repos, donc on ne déclare rien de plus côté code. »

Refs #23

---------

Co-authored-by: Sébastien NEDJAR <sebastien@nedjar.com>
nedseb added a commit that referenced this pull request May 27, 2026
Rebase de la PR initiale (qui pré-datait les merges de #176 et #178)
sur main actuel et insertion de t04-vscode et t06-bases-micropython
qui manquaient.

Retire le sous-classement par `section` des 17 fiches inovmicro-exao :
la `ProjectPage` repasse automatiquement en liste plate (le composant
gère déjà ce cas avec `hasSections = projectResources.some((r) => r.section)`).

Ordre final, progressif :

1. Découverte                     decouverte-steami
2. Éditeur Thonny                 t03-decouverte-thonny
3. Éditeur VS Code                t04-vscode
4. Bases du langage               t06-bases-micropython
5-16. Fiches élèves (ordre Let's STEAM)
   i01-led → i03-boutons → i04-capteur-lumiere → i06-code-morse →
   i07-musique → i08-theremine → i09-inclinaison-accelerometre →
   i10-texte-oled → i11-thermometre-lisible → i12-alarme-mouvement →
   i14-minuteur-electronique → i15-collecter-donnees
17. Transverse                    depannage

t04 (VS Code) se range après t03 (Thonny) car même catégorie « éditeur ».
t06 (bases du langage) s'insère entre les éditeurs et les fiches élèves
comme transition pédagogique naturelle.

Closes #182
nedseb added a commit that referenced this pull request May 27, 2026
…et (#183)

Rebase de la PR initiale (qui pré-datait les merges de #176 et #178)
sur main actuel et insertion de t04-vscode et t06-bases-micropython
qui manquaient.

Retire le sous-classement par `section` des 17 fiches inovmicro-exao :
la `ProjectPage` repasse automatiquement en liste plate (le composant
gère déjà ce cas avec `hasSections = projectResources.some((r) => r.section)`).

Ordre final, progressif :

1. Découverte                     decouverte-steami
2. Éditeur Thonny                 t03-decouverte-thonny
3. Éditeur VS Code                t04-vscode
4. Bases du langage               t06-bases-micropython
5-16. Fiches élèves (ordre Let's STEAM)
   i01-led → i03-boutons → i04-capteur-lumiere → i06-code-morse →
   i07-musique → i08-theremine → i09-inclinaison-accelerometre →
   i10-texte-oled → i11-thermometre-lisible → i12-alarme-mouvement →
   i14-minuteur-electronique → i15-collecter-donnees
17. Transverse                    depannage

t04 (VS Code) se range après t03 (Thonny) car même catégorie « éditeur ».
t06 (bases du langage) s'insère entre les éditeurs et les fiches élèves
comme transition pédagogique naturelle.

Closes #182

Co-authored-by: Sébastien NEDJAR <sebastien@nedjar.com>
nedseb added a commit that referenced this pull request May 27, 2026
Rebase de la PR initiale sur main actuel (la branche pré-datait les
merges de #176, #177, #178, #181, #183, #185, #186, #188, #190). Si
on avait mergé brut, on aurait supprimé t04-vscode.md, t06-bases-
micropython.md, les modifs de callouts de #185, les tableaux d'en-tête
projets-du-lab de #190, les 3 photos i14 de #177, etc.

Approche : reset hard sur main, reposer juste le markdown + 4 images
référencées, ajouter une nouvelle entrée resources.ts entre t04 et
t06 (et non pas à la place de l'une d'elles).

Détails :

- Markdown : t05-vittascience.md (276 lignes) inchangé tel que poussé
  par Aline.
- Images : block.png, icone.png, installation.png, ligne.png (4 images
  référencées par le markdown).
- L'image vittascience_editor.png poussée par Aline (en minuscules)
  est ignorée : elle n'est pas référencée par le markdown, et le
  placeholder Vittascience_editor.png déjà sur main (depuis le
  refactor #102) reste intact.
- .gitkeep retiré du dossier (devenu inutile avec icone.png en place).
- Entrée resources.ts insérée entre t04 et t06 (ordre logique t03/t04/
  t05/t06), SANS champ `section` pour cohérence avec le ménage de #183.
- package-lock.json et .cspell/wikilab.txt non touchés (les diffs
  initiaux étaient des effets de bord pré-mergeurs, à abandonner).

Le contenu de la fiche est conservé tel quel à ce stade. Les
corrections de conformité aux CONVENTIONS.md suivent dans un commit
séparé.

Refs #22
nedseb added a commit that referenced this pull request May 27, 2026
#179)

* feat(inovmicro-exao): ajoute la fiche t05 Vittascience (rebase)

Rebase de la PR initiale sur main actuel (la branche pré-datait les
merges de #176, #177, #178, #181, #183, #185, #186, #188, #190). Si
on avait mergé brut, on aurait supprimé t04-vscode.md, t06-bases-
micropython.md, les modifs de callouts de #185, les tableaux d'en-tête
projets-du-lab de #190, les 3 photos i14 de #177, etc.

Approche : reset hard sur main, reposer juste le markdown + 4 images
référencées, ajouter une nouvelle entrée resources.ts entre t04 et
t06 (et non pas à la place de l'une d'elles).

Détails :

- Markdown : t05-vittascience.md (276 lignes) inchangé tel que poussé
  par Aline.
- Images : block.png, icone.png, installation.png, ligne.png (4 images
  référencées par le markdown).
- L'image vittascience_editor.png poussée par Aline (en minuscules)
  est ignorée : elle n'est pas référencée par le markdown, et le
  placeholder Vittascience_editor.png déjà sur main (depuis le
  refactor #102) reste intact.
- .gitkeep retiré du dossier (devenu inutile avec icone.png en place).
- Entrée resources.ts insérée entre t04 et t06 (ordre logique t03/t04/
  t05/t06), SANS champ `section` pour cohérence avec le ménage de #183.
- package-lock.json et .cspell/wikilab.txt non touchés (les diffs
  initiaux étaient des effets de bord pré-mergeurs, à abandonner).

Le contenu de la fiche est conservé tel quel à ce stade. Les
corrections de conformité aux CONVENTIONS.md suivent dans un commit
séparé.

Refs #22

* docs(inovmicro-exao): refonte t05-vittascience selon CONVENTIONS.md

Mise en conformité du contenu :

De quoi parle-t-on : ouverture concrète sur ce que les élèves
connaissent déjà (Scratch, code.org, blocs sur calculatrice) avant
d'introduire Vittascience. Ajout du callout :::info[Composants
intégrés, rien à câbler] pour la LED RGB et les boutons.

Objectifs d'apprentissage : « Comprendre » (non observable selon la
convention) remplacé par « Expliquer ». Ajout de deux objectifs :
« Téléverser » + faire la différence éphémère/persistant, et
« Adapter » à un autre éditeur (verbe de transposition demandé par
la convention). 4 → 6 puces.

Code Python : passage de l'API `pyb` (ancien style MicroPython) à
l'API `machine` qui est la convention adoptée dans toutes les fiches
I-NOVMICRO :

  pyb.LED(1)/(2)/(3)  → Pin('LED_RED'/'LED_GREEN'/'LED_BLUE', Pin.OUT)
  pyb.Pin('A_BUTTON') → Pin('A_BUTTON', Pin.IN)

Identifiants Python francisés selon le tableau de renommage des
CONVENTIONS.md :

  led1_blue / led2_green / led3_red  → led_bleue / led_verte / led_rouge
  a_button / b_button                → bouton_a / bouton_b
  blink(led)                         → regler_led(rouge, verte, bleue)
                                       (factorisé en un seul appel)

Logique de la boucle réécrite pour matcher exactement la table
descriptive : A seul = rouge, B seul = vert, A+B = bleu. L'ancienne
version inversait les couleurs et ne couvrait pas le cas « aucun
bouton appuyé ». Ajout d'un commentaire de tête expliquant le mapping.

Tableau « Brochage utilisé » → « Broches utilisées », scindé en
quatre colonnes (composant / broche STeaMi / variable Python /
comportement) comme dans t04 et t06.

Section « Fonctionnement du programme » → « Comment ça fonctionne ? »
réécrite pour décrire le nouveau code avec un focus sur le pattern
qui sera réutilisé ailleurs (factorisation en fonction).

REPL d'exemple : aligné sur l'API `machine` + identifiants français
(led_rouge, bouton_a).

Étape 3 : sous-sections « Déboguer pas-à-pas », « Dépanner les
erreurs courantes » repassées de `## H2` à `### H3` (elles sont
dans Étape 3, pas au niveau supérieur). La limite Web Serial API
(Chrome / Edge uniquement) reformulée en callout :::info dédié et
complétée par la mention que la version bureau de Vittascience
contourne cette limite. Listes `* item` → `- item` pour cohérence
avec le reste de la fiche.

Aller plus loin : restructuré en trois sous-sections selon les
CONVENTIONS.md (Pour comprendre / Pour s'inspirer / Pour approfondir).
« Pour comprendre » étoffé avec deux entrées (programmation visuelle
par blocs sur Wikipédia, Blockly de Google) qui contextualisent la
dualité blocs/texte propre à Vittascience. Les liens techniques
(Wiki STeaMi, drivers, doc MicroPython) déplacés vers
« Pour approfondir » comme la convention le prévoit.

Mention « résistances pull-up externes » alignée sur le §« Boutons :
pas de Pin.PULL_UP » des CONVENTIONS.md (au lieu d'« interne », qui
prêtait à confusion avec la pull-up interne du microcontrôleur).

Ajout de « regler » au dictionnaire cspell (nom de fonction utilisé
dans t04, t05 et t06).

Refs #22

---------

Co-authored-by: Sébastien NEDJAR <sebastien@nedjar.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[FICHE] Démarrer avec VSCode + extension MicroPython

4 participants