Mission Zéro est un dispositif de l’ESA (Agence Spatiale Européenne) qui offre la possibilité aux élèves de créer en groupes un programme en Python qui va s’afficher sur un petit ordinateur (Raspberry Pi appelé AstroPi) de la Station Spatiale Internationale.
par Lydie El-Halougi
Les mots-clés de l’article : Mission Zéro ; Astropi ; Station Spatiale Internationale
A) Introduction
Mission Zéro est un dispositif de l’ESA (Agence Spatiale Européenne) qui offre la possibilité aux élèves de créer en groupes un programme en Python qui va s’afficher sur un petit ordinateur (Raspberry Pi appelé AstroPi) de la station spatiale internationale.
Ce programme doit respecter trois conditions :
- utiliser le capteur de luminosité de l’AstroPi pour détecter la couleur de la lumière dans l’ISS ;
- utiliser des variables pour définir les couleurs à utiliser ;
- afficher une image en pixel art.
En fin d’année, les élèves reçoivent leurs diplômes indiquant à quel moment leur programme a été diffusé dans l’ISS, et où se trouvait l’ISS à cet instant.
B) Avant la session
L’enseignant se crée un compte sur la plateforme, avec un mot de passe qui lui permettra de valider les programmes des élèves.
La session peut durer 1 à 2 heures (prévoir 2 heures pour des 6e - 5e).
Il faut prévoir 1 à 2 ordinateurs par groupe pour permettre aux élèves de consulter facilement le guide. Il est aussi possible de créer un guide papier (exemple, non conforme au nouveau guide). Attention, l’usage de tablettes est possible pour consulter le guide, mais pas pour écrire le programme (le correcteur automatique et le clavier virtuel rendent les choses très compliquées).
Attention, les inscriptions se font chaque année avant fin mars.
Mission Zéro est adapté aux débutants à partir du cycle 3. Aucune compétence préalable en codage n’est nécessaire, mais il peut être utile d’expliquer aux élèves que les lignes avec un « # » indiquent des titres de paragraphes. En collège, il est possible de se rapprocher du professeur d’arts plastiques qui pourra travailler avec les élèves sur les couleurs primaires (remarque : en arts plastiques les couleurs s’obtiennent par ajout alors qu’en informatique, le jaune s’obtient par soustraction).
Les compétences mises en œuvre, outre « coopérer et réaliser des projets » (domaine du socle D2) et « chercher » (D2, D4) entrent aussi dans « communiquer » (D1) puisqu’il s’agit d’utiliser le langage Python. Pour les plus jeunes, on peut d’ailleurs montrer quelques exemples de programmes en Python avec ou sans erreurs, dans l’émulateur de l’AstroPi ou via un entraînement Algorea.
En cycle 3, l’activité, via la création de l’image, permet de travailler le point du programme « se repérer » en algorithmique et programmation. Les élèves sont très bien guidés ; j’ai des classes de niveaux très variés, mais tous les groupes arrivent à soumettre des programmes (plus ou moins aboutis). J’accompagne les groupes qui rencontrent des difficultés, et les premiers groupes à avoir terminé vont aussi aider leurs camarades : la coopération dépasse le cadre des groupes. Les élèves sont très contents de découvrir un langage de programmation « de grands ». En 3e, Mission Zéro représente une bonne initiation à Python en vue de la 2de, tout en restant conforme au programme avec l’utilisation de variables et de boucles (les 3e peuvent aller au bout).
J’aime beaucoup faire cette activité en décembre, quand je sens les élèves s’éparpiller : envoyer un programme dans l’ISS, c’est motivant ! Les créneaux à effectifs réduits, comme les heures de soutien/approfondissement, représentent pour les groupes de 6e les plus à l’aise, une bonne opportunité de faire cette activité. Elle permet aux élèves d’aller plus loin dans leur apprentissage de la programmation et de l’univers du codage.
C) La session elle-même
Les élèves, en groupes, s’organisent pour suivre les étapes de création de leur programme.
Pour les petits notamment, si la session dure plus d’une heure, il faut penser à copier-coller le programme en cours dans un logiciel de traitement de texte (pas de sauvegarde sur la plateforme).
- C1) Prise en main de l’AstroPi
Les élèves se rendent sur la page de l’émulateur
Ils prennent connaissance des lignes de code déjà écrites : affichage de l’écran LED et configuration du capteur de couleurs.
L’AstroPi possède également des capteurs de température, pression et hygrométrie.
- C2) Les couleurs en informatique
Les élèves apprennent qu’en informatique, les couleurs sont toutes définies à partir des trois couleurs rouge, vert, bleu.
Des exemples de couleurs sont proposés :
Il est possible de choisir d’autres couleurs via un sélecteur de couleurs.
Les élèves définissent les couleurs de leur image à l’aide de variables : la couleur de l’arrière-plan étant définie par la variable c.
- C3) Afficher une image pixel art en Python
L’affichage LED du Raspberry Pi est une grille 8x8 :
les élèves créent une image en pixel art qui doit tenir dans la grille.
Des exemples sont proposés avec les codes correspondants :
Une fois l’image choisie et le code ajouté, les élèves testent leur programme en cliquant sur « Run ».
Les erreurs et étapes manquantes sont signalées.
En cas d’erreur, les élèves sont invités à vérifier les indentations, les crochets, les virgules (erreurs très fréquentes, notamment les virgules en fin de ligne).
A noter les petits comme les grands font généralement les mêmes erreurs : oubli d’un caractère ou caractère en trop !
- C4) Le capteur de luminosité
La couleur de l’arrière-plan, définie par la variable c, va être configurée pour refléter l’environnement lumineux dans l’ISS.
Un astronaute en chemise rouge ne verra pas la même couleur d’arrière-plan qu’un astronaute en chemise bleue.
Les élèves ajoutent une ligne avant les variables de couleur afin d’obtenir la couleur du capteur, et modifient la variable c :
rvb = sense.color
c = (rvb.red, rvb.green, rvb.blue)
Les élèves sont invités à tester leur programme en modifiant la couleur perçue dans l’émulateur.
- C5) Pour les plus rapides
Tout est prévu, même pour les groupes les plus rapides, qui peuvent ajouter une boucle à leur programme afin de modifier leur image en fonction des couleurs dans l’ISS.
- from sense_hat import SenseHat
- from time import sleep
- # Configuer le Sense HAT
- sense = SenseHat()
- sense.set_rotation(270)
- # Configurer le capteur de couleurs
- sense.color.gain = 60 # Régler la sensibilité du capteur
- sense.color.integration_cycles = 64 # L'intervalle auquel la mesure est effectuée
- # Ajouter des variables de couleur et une image
- c = (0, 0, 0) # Noir
- m = (34, 139, 34) # Vert forêt
- q = (255, 255, 0) # Jaune
- t = (255, 140, 0) # Orange foncé
- y = (255, 20, 147) # Rose foncé
- for i in range(28):
- rvb = sense.color # obtenir la couleur du capteur
- c = (rvb.red, rvb.green, rvb.blue)
- image = [
- c, c, y, y, y, y, c, c,
- c, y, y, t, t, y, y, c,
- y, y, t, q, q, t, y, y,
- c, y, y, t, t, y, y, c,
- c, c, y, y, y, y, c, c,
- m, c, c, m, m, c, c, m,
- c, m, m, m, m, m, m, c,
- c, c, c, m, m, c, c, c]
- # Afficher l'image
- sense.set_pixels(image)
- sleep(1)
- x = (178, 34, 34) # choisis tes propres valeurs de rouge, vert et bleu entre 0 et 255
- sense.clear(x)
- C6) Envoi du programme
A la fin, lorsqu’ils sont satisfaits de leur programme, ils appellent le professeur qui renseigne son mot de passe pour valider l’envoi.
Exemples (ici, c’est le capteur de température qui devait être utilisé) :
- https://trinket.io/python/20c951751
- https://trinket.io/python/4237d53d5a
- https://trinket.io/python/72897c0148
D) Conclusion
Les élèves aiment beaucoup cette activité, qui permet de leur faire découvrir Python de façon très ludique, ainsi que la formation des couleurs.
En groupes, ils doivent coopérer pour réaliser un programme fonctionnel ainsi qu’une image en pixel art.
Ils sont particulièrement fiers en recevant leurs diplômes en fin d’année !
J’ajoute (plus pour le lycée ou fin de collège) que l’ESA propose aussi Mission Space Lab, un autre défi de programmation avec l’AstroPi (en Python). Je n’ai jamais fait participer mes élèves, mais je sais que cette année, le défi est de calculer la vitesse de l’ISS. Plutôt sympa !