Articles

Un secret du Père Noël

Apprenez à programmer votre propre télécabine du Père Noël.

Maintenant que la station de ski de Redon a terminé sa saison, il est temps de vous révélé un secret :

Comment fonctionne la cabine téléphérique du Père Noël ?

Comme tous les ans, l’atelier Lever Le Rideau nous a permis d’avoir plus qu’un marché de Noël à Redon : la Station des 5000, le plus grand domaine skiable de Bretagne.

Et cette année, la Vilaine Bidouille a eu le droit de jouer en participant au montage de la cabine téléphérique du Père Noël. Vous savez, la boîte rouge dans laquelle vous avez enregistrer vos messages au service SAV du vieux barbu.

Du côté des lutins, ça donnait ça :

Mais comment ça marche ?

C’est simple, le gros bouton rouge au milieu de la cabinet est connecté à une carte Arduino Leonardo. Elle se fait passer pour un clavier USB pour un PC caché dans un petit meuble. Ce PC dispose d’une caméra USB de PS3 pour prendre de la vidéo et du son.

Quand on appuie sur le bouton, la carte Leonardo “tape” les lignes de commande Linux pour enregistrer une vidéo de 30 secondes. Elle gère aussi les relais des éclairages rouge et vert indiquant aux victimes bénéficiaires du Père Noël quand ils peuvent parler.

Liste du matériel :

Câblage à réaliser :

Suivez ce câblage, ou bien, téléchargez le sur Fritzing.

Programme de la Leonardo :

A téléverser dans la carte depuis votre ordinateur grâce au langage Arduino. Si vous ne savez pas faire, inutile d’aller plus loin dans l’article. Vous allez vous ennuyer.)

// Uniquement pour une carte Leonardo connectee par USB a un PC sous linux avec Guvcview
 // Lance une commande d enregistrement d une video de quelques secondes
 include "Keyboard.h"
 const int modeClavier = 2;
 const int bpRec = 3;
 const int outRecEnCours = 13;
 const int getReady = 12;
 const int auSuivant = 11;
 int etatBp = 0;
 int etatClavier = 0;
 int ordreRec=0;
 char altKey=KEY_LEFT_ALT;
 char f4=KEY_F4;
 char ctrl=KEY_LEFT_CTRL;
 void setup() {
   // initialisation
 //entrees
   pinMode(modeClavier, INPUT);
   pinMode(bpRec, INPUT);
   //sorties
   pinMode(outRecEnCours, OUTPUT);
   pinMode(getReady, OUTPUT);
   pinMode(auSuivant, OUTPUT);
   // initialisation des lampes
   digitalWrite(outRecEnCours, LOW);
   digitalWrite(getReady, LOW);
   digitalWrite(auSuivant, HIGH);
 }
 void loop() {
   if (digitalRead(modeClavier)==HIGH && etatClavier==0) {
     etatClavier=1;
     delay(200);
     Keyboard.begin();
   }
   if (digitalRead(modeClavier)==LOW) {
     etatClavier=0;
     Keyboard.end();
   }
   if (digitalRead(bpRec)==HIGH && etatClavier==1) {
     // Lampe tenez vous prets
     digitalWrite(auSuivant, LOW);
     digitalWrite(getReady, HIGH);
     // appel de console
     Keyboard.press(KEY_LEFT_CTRL);
     delay(100);
     Keyboard.press(KEY_LEFT_ALT);
     delay(100);
     Keyboard.press('t');
     delay(100);
     Keyboard.releaseAll();
     delay(1000);
     // appel de commande
     // prise de vue
     Keyboard.write('g');
     delay(50);
     Keyboard.write('u');
     delay(50);
     Keyboard.write('v');
     delay(50);
     Keyboard.write('c');
     delay(50);
     Keyboard.write('v');
     delay(50);
     Keyboard.write('i');
     delay(50);
     Keyboard.write('e');
     delay(50);
     Keyboard.write('z');
     delay(50);
     Keyboard.write(' ');
     delay(50);
     Keyboard.write('6');
     delay(50);
     Keyboard.write('y');
     delay(50);
     Keyboard.write(' ');
     delay(50);
     Keyboard.write('#');
     delay(50);
     Keyboard.write(')');
     delay(50);
     Keyboard.press(KEY_RETURN);
     delay(100);
     Keyboard.releaseAll();
     //gestion de la lampe
     digitalWrite(getReady, LOW);
     digitalWrite(outRecEnCours,HIGH); // allumage du panneau lumineux
     delay(28500);
     for (int i=0;i<3;i++) {
       digitalWrite(outRecEnCours,LOW);
       delay(250);
       digitalWrite(outRecEnCours,HIGH);
       delay(250);
     }
     digitalWrite(outRecEnCours,LOW);
     delay(1000);    
     // fermeture de guvcview
     Keyboard.press(KEY_LEFT_ALT);
     delay(100);
     Keyboard.press(KEY_F4);
     delay(100);
     Keyboard.releaseAll();
     delay(2000);
     // fermeture de la console
     Keyboard.press(KEY_LEFT_ALT);
     delay(100);
     Keyboard.press(KEY_F4);
     delay(100);
     Keyboard.releaseAll();
     digitalWrite(auSuivant,HIGH); // extinction du panneau lumineux
   }
 }
 /**/

Pour ceux qui ne seraient habitué à ce site, je sais que le code n’est pas optimisé. Vous remarquerez que j’utilise l’entrée 2 comme indicateur de mode clavier. Sans cela, il est difficile de modifier le programme de la carte depuis certains PC. Le port USB servant déjà à l’émulation de clavier plug&play.

Bug de la vidéo

Sur nos vidéos, nous avons constaté un décalage entre le son et l’image de presque 1.166 secondes. Plutôt que de chercher l’origine du problème, j’ai préféré corriger les vidéos par paquet grâce à l’outil Linux ffmpeg. Attention, c’est en ligne de commande.

Etape 1 : Ouvrir un terminal (sous linux évidemment)

Tapez CTRL+ALT+T

Etape 2 : Naviguer vers le dossier contenant les vidéos

Avec la commande “cd” retrouvez le dossier. Vérifiez qu’il contient bien les fichiers *.mkv avec la commande “dir”.

image.png

Etape 3 : La ligne de commande magique

Mesurez bien le temps de décalage entre le son et l’image grâce à un logiciel comme Kdenlive par exemple. Pour moi, ce décalage est de 1.166 seconde. Ensuite, c’est le saut de la foi. Tapez la ligne suivante :

for i in .mkv; do ffmpeg -i "$i" -itsoffset 1.166 -i "$i" -vcodec copy -acodec copy -map 0:1 -map 1:0 "${i%.}.mp4"; done
image.png

Etape 4 : Contrôle

Normalement, de nouveaux fichiers vidéos *.mp4 ont été créés. Il faut vérifier que le son est bon.

Amusez-vous !

RedonCraft, le retour

Dans le cadre de la semaine du numérique 2019 organisée à Redon, la Vilaine Bidouille s’est vue remettre le clefs d’un carte MineCraft dédiée à Redon

Même si vous n’êtes pas joueurs de MineCraft, vous pouvez admirer la presqu’île de Redon telles que les crafters l’imaginent en 2030 sur ce lien.

Presqu'île de Redon

Cette carte nous a été prêtée par l’excellente association 3HC de Rennes. Leur expérience sur RennesCraft n’est plus à démontrer. Merci à toute l’équipe. On a passé un très bon moment.

Pour les joueurs qui désirent participer à la modélisation de la carte de Redon, voici les petits détails techniques :

  • Il faut configurer MineCraft en version 1.13.2
  • En multijoueur, il faut se connecter au serveur 87.98.153.144:25665
  • Et il faut demander une autorisation à la Vilaine Bidouille…

Pour l’autorisation, envoyez votre pseudo MineCraft à lavb35@gmail.com, on créera vos droits constructeurs aussi vite que possible (ou pas).

A bientôt dans la presqu’île.

Le Halles Garnier

Atelier RobCom à Allaire

Ce mercredi 30 octobre 2019 a été l’occasion de créer de nouvelles écuries de pilotes de robots de combat.

En effet, la médiathèque d’Allaire a organisé une après midi montage de RobCom en préparation du tournoi du 4 décembre 2019 à la maison des associations de Redon.

Au début, on a fait semblant de lire le manuel des kits. Mais, rapidement, la créativité des pilotes de robots a repris le dessus.

On a même eu le temps de tester les robots dans une mini arène improvisée dans le couloir.

Règles contournées, alimentations boostées, cris de victoire, inversion de polarité de moteurs, improvisation et décorations brillantes… On était dans l’esprit.

Excellent moment. A refaire.