1. Introduction

Les mécanismes à codes que nous retrouvons le plus souvent dans la vie de tout les jours, est le cadenas à code. Le premier cadenas à code a été réalisé par John I. W. Carlson en 1931 et pouvait être ouvert par une clé d'un côté et par un code de l'autre. Les cadenas que nous trouvons actuellement ont la possibilité de changer de code selon l'envie de leur propriétaire. La principale utilité des cadenas est de fermer des portes ou des loquets. Le robot qui va être utilisé pour cela est le Thymio-II, robot développé par l'EPFL, qui possède de nombreuses capacités dont des capteurs infrarouges, de nombreuses LED's, plusieurs boutons et deux moteurs reliés à des roues; qui sont les principales fonctionnalités que nous allons utiliser pour ce projet. Ce robot fonctionne avec son propre language de programmation : Aseba.

2. Matériel et méthodes

2.1 Matériel

  • 1 Thymio
  • LEGO Techniques
  • Ordinateur
  • Aseba Studio

2.2 Méthode

2.2.1) Code : Pour réaliser ce projet, nous allons avoir besoin d'une manière d'entrer une combinaison dans le Thymio. Pour cela, nous allons utiliser les 5 capteurs infrarouges situés à l'avant du robot ("prox.horizontal" 0-4). Pour rendre le code plus compliqué, il sera composé de quatre combinaisons, chacune allant de 0 à 5 capteurs activés. Pour pouvoir prendre plusieurs combinaisons espacée dans le temps, il va falloir utiliser la fonction intégrée "timer", la durée de ce timer a été fixée de manière totalement arbitraire à 4 secondes. Pour pouvoir enregistrer les combinaisons que le Thymio perçoit, le plus pratique serait d'utiliser une matrice de 5 lignes (une par capteur) et 4 colones (une par combinaison) mais le language Aseba ne le permet pas. J'ai donc été obligé d'utiliser un grand tableau ("code") et de naviguer à l'intérieur de ce tableau grâce à une variable("t"). Pour enregistrer la combinaison, le robot lit les valeurs reçue à chaque capteurs infrarouges et, si elle est au dessus de 4000 (valeur choisie car elle permet d'éviter que les capteurs soient activés par des choses trop éloignées) il inscrit un "1" dans la case du tableau correspondant, sinon il écrit un "0". Pour vérifier que le code entré est le bon, il a fallu utiliser la fonction "for" pour éviter de répéter 20 fois la même ligne de code. Pour vérifier que chaque case du tableau "code" est correcte, elle est comparée à la case correspondante dans le tableau "combinaison", et si elle l'est, la variable "p" augmente de 1, si la variable p est égale à 20, cela veut dire que les deux tableaux sont identiques, et donc que la combinaison entrée est la bonne, le Thymio affichera donc une couleur Verte ("leds.circle(0,32,0)") sinon, il affichera une couleur rouge.

2.2.2) Changer de code : Pour pouvoir changer de code, il va falloir connaitre la combinaison originale, pour différencier si l'utilisateur veut déverrouiller le cadenas ou changer la combinaison on utilise une nouvelle variable "NcOrC" qui correspond à "nouveau code ou code". Si l'utilisateur veut déverrouiller le cadenas, cette variable sera égale à zéro, mais si il veut changer la combinaison, elle sera égale à 1. Si la personne fait la mauvaise combinaison, elle ne peut pas changer le code mais sinon elle va devoir entrer la nouvelle combinaison deux fois de suite et si il n'entre pas les deux fois la même combinaison, le code restera l'ancien. les concepts de vérification sont semblables à la première partie du code.

3. Résultats

Les résultats au niveau de la détection et de la vérification de la combinaison sont bons, même si il est difficile de savoir quand changer ses doigts de position. La détection est très bonne et n'est pas altérée par l'environnement. Le changement de code est lui aussi assez pratique mais comporte les mêmes problèmes que le déverrouillage, car il est dur de savoir à quel moment changer ses doigts de position et à quel moment il faut répéter la combinaison. Un des grands avantages de ce cadenas est le grand nombre de combinaisons possible qui sont plus de 1 million. ((25)4)

4. Discussion

Le code n'est pas optimisé au maximum mais est fonctionnel. Il aurait été plus optimisé d'utiliser la fonction "for" pour éviter la grande quantité de "if" présents. En soi le mécanisme de code est totalement fonctionnel, mais il serait très pratique d'avoir un indicateur visuel pour savoir à quel moment changer ses doigts de position. Il serait relativement facile de synchroniser les LED's du cercle avec les deux timers pour rendre plus pratique l'utilisation de ce cadenas. Malheureusement je n'ai pas eu le temps de rajouter cela au code. Faire de ce robot un véritable cadenas ne serait pas non plus extrêmement compliqué mais cela nécessiterait du temps dont je ne dispose pas. Pour en faire un réel cadenas en LEGO, il faudrait fixer un axe à une des roues du Thymio grâce à une brique carrée munies d'un orifice prévu pour cela (voir annexe 1). Au bout de cet axe serait fixé une roue dentée qui ferait coulisser une partie qui servirait de loquet (voir annexe 2). Le code ne serait que très peu modifié car il suffirait d'ajouter qu'un moteur tourne dans une direction pendant quelque secondes pour que le loquet s'ouvre, et le même temps dans l'autre sens pour que le loquet se ferme.

5. Conclusion

Pour conclure, le but de ce projet a été atteint au niveau du code, mais la partie "mécanique" n'a pas été réalisée par manque de temps. La manipulation est assez aisée mais pourrait l'être plus avec de petits indicateurs visuels.



Références

Language Aseba : https://www.thymio.org/fr:asebalanguage

Logiciel Aseba Studio : https://www.thymio.org/fr:start

Cadenas : https://en.wikipedia.org/wiki/Padlock