Cadenas USB

création

Un projet de fabrication d'un petit dispositif pour matérialiser un objectif pour escape games (pédagogiques).

L'idée

À la médiathèque, nous avons mis en place de nouveaux ateliers pour les plus jeunes, avec pour objectif d'introduire au monde numérique. Notamment, nous voulions tester une animation de découverte de l'ordinateur, mais en incorporant un volet plutôt ludique. L'idée est alors venue d'un cadenas USB : les participants réalisent des tâches sur un ordinateur (rechercher une image, utiliser un traitement de texte, …) qui produisent des fichiers, les enregistrent sur des clés USB, qui vont servir à débloquer quelque-chose. En fait, l'atelier commence par une présentation d'un ordinateur désossé, dont les pièces ont été cachées dans un coffre. Les clés USB permettent l'obtention de la clé de ce coffre, donc des pièces de l'ordinateur que l'on réassemble. Vous trouverez plus de détails sur notre wiki.

Pour cela, nous avons donc dû concevoir un « cadenas USB ». Il s'agit d'une boîte avec une prise USB. Lorsque l'on y branche une clé USB, un script en vérifie le contenu. Selon les fichiers détectés, le système dévérouille des « loquets » logiciels et des LEDs témoins s'allument. Lorsque les huit loquets sont dévérouillés, une mélodie est jouée et la boîte libère une clé.

Système de libération de clé

Le système de libération de clé est une carte Arduino actionnant une goupille. Pour faire la goupille, nous utilisons un servo-moteur qui tire un cylindre à l'aide un petit fil en nylon. Dans sa position haute, le fil permet au cylindre de descendre et de bloquer un anneau. Dans sa position basse, le fil tire le cylindre vers le haut et libère l'anneau.

Animation du fonctionnement de la goupille. Vert : servo-moteur. Orange : cylindre. Violet : fil de nylon. Bleu : anneau porte-clé.

La pièce est facilement modélisable imprimable en 3D. Le servomoteur est commandé par une carte Arduino. Cette carte garde en mémoire l'état des huit loquets. Au démarrage, tous les loquets sont fermés. Si tous les loquets sont ouverts, la carte actionne le moteur et libère le cylindre. La carte gère également huit LEDs qui indiquent l'état des loquets : elles s'allument au fur à et mesure qu'ils sont débloqués. Enfin, la carte commande également un haut-parleur, qui joue une mélodie à chaque fois qu'un loquet se libère, et une mélodie plus longue à la fin. Le code source de la carte Arduino est disponible sur GitHub.

Le choix de huit loquets (et huit LEDs) est arbitraire, et lié au nombre moyen de participants à nos ateliers. Chaque participant peut ainsi se charger d'un loquet, et ce sera leur œuvre commune qui apportera le résultat. S'ils sont moins de huit, les loquets sont répartis entre les participants.

La carte Arduino est reliée en USB au système de lecture des clés USB, qui envoie un message série indiquant lorsqu'un loquet doit s'ouvrir.

Système de lecture des clés USB

La carte Arduino devrait pouvoir suffire pour lire les clés USB, mais un Raspberry Pi est plus rapide à mettre en place pour cela, notamment grâce aux ports USB déjà soudés et au gestionnaire de périphériques udev. Ce logiciel permet de déclencher des scripts lorsque de nouveaux périphériques sont détectés. On peut alors lancer un script en Python qui monte le périphérique et liste les fichiers qu'il contient. Ensuite, selon le nom des fichiers détectés, le script décide des loquets à ouvrir, et envoie des commandes à la carte Arduino à l'aide du module pyserial. Encore une fois, le code source est disponible sur GitHub.

Par exemple, dans notre animation de découverte de l'ordinateur, il faut que la clé contienne des fichiers nommés en fonction des pièces de l'ordinateur. Typiquemment, un loquet s'ouvre s'il y a un fichier souris.jpg sur la clé. Un autre s'ouvre s'il y a un fichier clavier.jpg, etc. Pour simplifier la tâche aux participants, plusieurs orthographes sont acceptées pour chaque fichier, et l'extension est ignorée. Ainsi, le loquet 3 peut s'ouvrir avec un fichier mémoire vive.jpg ou Memoire Vive.png.

Ce système est très basique, mais de nombreuses autres techniques peuvent être envisagées :

  • comparer la somme de contrôle d'un fichier ;
  • lire un fichier texte et vérifier s'il contient un certain mot de passe ;
  • exécuter un script ou un programme et vérifier sa valeur de retour ;
  • ajouter un fichier sur la clé pour dévérouiller une nouvelle étape de l'énigme…

Habillage

Le Raspberry Pi, la carte Arduino, et la goupille imprimée en 3D sont placés dans une boîte en carton, colorée en noir et décorée avec quelques stickers.

La partie la plus importante est la face avant de la boîte, sur laquelle la prise USB est placée, ainsi que les LEDs témoins, et d'où la clé sera libérée. Le carton n'étant pas très rigide, nous avons choisi d'imprimer une plaque en 3D avec des emplacements dédiés : un espace pour la clé, un autre pour la prise et des encoches pour les LEDs.

Modélisation de la face avant de la boîte

Les LEDs sont coincées dans la face avant, et branchées sans soudure à la carte Arduino. À manipuler avec précaution, car un fil peut vite se débrancher

Le point critique est surtout la prise USB, qui doit être assez solide pour supporter un branchement et un débranchement, notamment par des enfants. Comme nous ne disposons pas de matériel pour souder, et que les composants doivent pouvoir être réutiliser plus tard, nous ne pouvons pas vraiment attacher solidement toutes les pièces. Plutôt, nous utilisons une rallonge USB, branchée d'un côté au Raspberry Pi, et exposé de l'autre sur la face avant. Pour maintenir ce câble en place, nous utilisons une nouvelle pièce en 3D, qui pince le câble et permet de s'attacher au carton avec des épingles.

Pièce pour maintenir le câble USB en place

Le résultat n'est pas très solide, mais permet tout de même de résister lors de nos animations.

Résultat

Voici le résultat en action :

Démonstration du cadenas USB. Les deux premières clés USB débloquent chacune un loquet, car elles n'ont qu'une image d'enregistrée. La troisième clé USB est vide et produit seulement un son d'erreur. La quatrième et dernière clé USB contient toutes les images, elle débloque donc tous les loquets.

Le code source et les fichiers STL sont disponibles sur GitHub. N'hésitez pas à nous contacter pour plus d'informations.

Maintenant que ce dispositif existe, nous pouvons envisager de l'utiliser pour d'autres animations, pour ajouter un aspect « escape game ». Souvent, les participants sont également intrigués par la conception de l'objet. Nous pouvons alors montrer l'intérieur de la boîte et inviter à participer à des initiations d'électronique ou de programmation. N'hésitez pas à nous partager vos idées !

Article précédent Article suivant