Skip to content
Snippets Groups Projects
user avatar
Antoine Rochebois authored
ffa18560

Présentation du projet

Ce projet vise à faire un atelier en partenariat avec l'Institut Gaston Berger autour de Apollo 11. L'objectif est de faire découvrir des bases de programmation et de montrer que l'informatique ne se limite pas aux programmes tournant sur des PC ! Les élèves participant à l'atelier font l'une des 4 activités proposées. Pour chacune, il faut coder en code visuel un petit programme. Ce code communique ensuite avec celui d'un arduino controlant une maquette branchée à l'ordinateur (une maquette par activité.) L'idée étant de faire interragir les élèves avec du Hardware et du Software en même temps de façon simple et ludique .

Ce projet emploie donc les lib Blockly et JS-Interpreter pour faire tourner le code côté ordinateur. Pour chaque module, le code de la maquette est donné en Arduino. La communication entre les deux se fera par une lib dont le choix est encore à faire.

Chaque groupe d'élèves participe à deux ateliers (mode tournant.) A la fin, la réalisation de chaque atelier par les élèves donne lieu à une séquence commune de "victoire" (animation avec maquette, etc) => Idée à préciser

Liste des activités

TODO : on est sur de ça ? Refaire un point rapidement avant que ça parte en prod...

Charger le carburant dans la fusée

TODO : préciser l'activité

Contrôler l'inclinaison des moteurs pendant la monté

TODO : préciser l'activité

Se placer sur la bonne orbite/injection trans-lunaire

TODO : préciser l'activité

Monter les premiers pas de l'homme à toute l'humanité + recevoir l'appel de Nixon

TODO : préciser l'activité

Consignes d'exécution et de clone

En raison de la présence de lib externes, il faut bien penser à clone en utilisant la commande suivante :
git clone --recurse-submodules https://gitlab.clubelek.fr/antoinekia/atelier_igb_apollo/

A faire sinon les modules Blockly ne marcheront pas !!! Les scripts JS utilisent des requettes HTTP. Tout navigateur digne de ce nom les bloque si l'URL commence par "files://", il faut donc lancer un serveur http sur sa machine pour tester. Cela se fait très facilement si python est installé correctement en lançant la commande suivante dans le répertoire racine du projet :
python -m SimpleHTTPServer

Utilisation de Blockly dans ce projet

Explication de l'architecture plus détaillée à venir. Là j'ai un peu la flemme de le faire par écrit :/ En gros : pour chaque activité il y a :

  • Un script JS (main-script.js) gérant l'instanciation de Blockly, l'interprétation des fonctions IO employées par le code utilisateur, le lancement du code utilisateur, etc... Bref, il fait le café
  • Un fichier toolbox.xml. Ce fichier peut très facilement être généré par un outil officiel mis en place par google. Idem pour les blocs customs ;)
  • Un fichier HTML (index.html) contenant la page dédiée à l'activité.

La doc officielle est très bien fichue et est dispo ici : https://developers.google.com/blockly/guides/get-started/web

Le plus gros du travail de conception est de créer des blocs customs pour les actions (capteurs/actionneurs de la maquette, éléments visuels d'interface etc) et de définir la toolbox pour chaque activité. Cela se fait sur l'interface en ligne : https://blockly-demo.appspot.com/static/demos/blockfactory/index.html

Dans le main-script.js, la fonction "initAPI" permet de "réécrire" le comportement de fonctions de base de JS à notre sauce en fonction de ce qu'on veut faire. (envoi aux arduino d'un msg, etc)

Intéractions avec les modules Arduino

TODO (j'en ai pas sous la main là pour tester :'( )