Table des matières:

Cryptap : une serrure de porte basée sur le rythme : 5 étapes
Cryptap : une serrure de porte basée sur le rythme : 5 étapes

Vidéo: Cryptap : une serrure de porte basée sur le rythme : 5 étapes

Vidéo: Cryptap : une serrure de porte basée sur le rythme : 5 étapes
Vidéo: Elle Était Coincée Donc Ce Policier L'aide 2024, Décembre
Anonim
Cryptap: une serrure de porte basée sur le rythme
Cryptap: une serrure de porte basée sur le rythme
Cryptap: une serrure de porte basée sur le rythme
Cryptap: une serrure de porte basée sur le rythme
Cryptap: une serrure de porte basée sur le rythme
Cryptap: une serrure de porte basée sur le rythme

Inspiré par plusieurs mécanismes de déverrouillage de porte que j'ai vus sur hackaday.com, j'ai décidé d'en créer un moi-même. Celui-ci a une interface à deux boutons; un pour commencer et terminer la soumission du mot de passe, et un pour taper réellement dans le rythme qui est votre mot de passe. Il y a aussi un voyant d'état. J'ai pu le construire à très bas prix en utilisant des pièces que j'avais récupérées au cours des derniers mois. Les seules choses que je devais payer étaient le microcontrôleur lui-même, qui coûtait 21 $ (https://www.pjrc.com/teensy/), et un fil de suspension d'image que j'avais d'avant.

C'est très amusant d'appuyer sur le thème Star Wars ou quelque chose pour entrer dans ma chambre. Maintenant, je n'ai plus à m'inquiéter de m'enfermer à nouveau hors de ma chambre ! De plus, il se sent bien et geek.

Étape 1: Pièces et outils

Pièces et outils
Pièces et outils
Pièces et outils
Pièces et outils

J'ai choisi le Teensy car c'est mon premier microcontrôleur, et je n'ai pas encore de programmateur. Le Teensy ne nécessite qu'un câble USB A-miniB et un logiciel gratuit à installer, compatible avec Mac/Windows/Linux. De plus, il est très facile de télécharger le fichier hexadécimal; il suffit de compiler et d'appuyer sur le bouton du Teensy.

Le coût de ce projet pour moi était de 21 $, plus le fil de suspension. Les pièces de la rue provenaient d'un percolateur à café (relais, LED, condensateur) et d'un routeur (LED, prise modulaire, prise d'alimentation, condensateurs). Des échantillons gratuits étaient le régulateur 7805 5 volts, les boutons et l'interrupteur. J'ai également trouvé beaucoup de choses dans la boîte "pièces cassées" de mon laboratoire EE: connecteurs banane et câble, fil, le pilote sn754410, un en-tête à quatre broches et des résistances. J'avais un chargeur d'ordinateur portable supplémentaire que j'utilisais pour l'alimentation et un câble de modem Apple dont la languette était cassée. Autre matériel: une plaque murale. J'ai utilisé un pistolet à colle chaude, un fer à souder, une lime à aiguille et une perceuse électrique, ce qui est assez standard. La chose la plus inhabituelle que j'ai utilisée était un outil de préhension long et flexible.

Étape 2: Matériel préexistant

Matériel préexistant
Matériel préexistant
Matériel préexistant
Matériel préexistant
Matériel préexistant
Matériel préexistant
Matériel préexistant
Matériel préexistant

J'ai eu beaucoup de chance qu'il y ait déjà autant installé. Ma chambre est accessible à l'ADA et divers tuyaux, boîtiers électriques et une gâche de porte électrique étaient déjà installés. En enlevant la gâche par curiosité, j'ai trouvé qu'elle n'était pas connectée. Il y avait un tuyau de la gâche de la porte à une plaque murale vierge à l'intérieur de ma chambre, et un autre tuyau de là à une plaque murale vierge à l'extérieur.

La gâche de porte dit qu'elle a besoin de 24V@3A pour fonctionner, mais j'ai pu me débrouiller avec une alimentation 19V, 7.9A que j'avais. La gâche de la porte était polarisée, alors assurez-vous d'avoir la bonne polarité !

Étape 3: Circuits

Circuits
Circuits
Circuits
Circuits
Circuits
Circuits
Circuits
Circuits

Pour contrôler la gâche, j'ai utilisé le relais que j'ai trouvé dans le percolateur à café. Ce relais avait besoin de plus de 5V TTL pour le piloter, donc le sn754410 a été utilisé pour traduire TTL en 19V, ce qui pilotait le relais. Le sn754410 est vraiment un pilote quad half-H, donc je gaspillais les 3/4 de la puce, mais je n'avais pas de transistors de puissance, c'est donc ce que j'ai utilisé.

La puce sn754410 a deux broches VCC, une pour 5V, l'autre pour la tension que vous voulez sortir, qui était de 19V pour moi. C'est une puce vraiment cool. Vous pouvez l'utiliser pour piloter directement des moteurs et des relais, car il peut commuter 1A par quart de puce et possède des diodes de protection intégrées. Jetez un œil à la fiche technique. Dans mon circuit, j'ai connecté le sn754410 directement à la broche de sortie de mon Teensy. Les boutons sont connectés en mode actif-bas, ce qui est très courant pour les microcontrôleurs. Ils sont directement connectés au Teensy, ce qui signifie que je dois faire du anti-rebond dans le logiciel. Le voyant d'état est connecté au Teensy via une résistance de 1K ohm; rien de spécial. Le circuit fonctionnait sans condensateurs, mais je les ai mis quand même au cas où. Il y a des capuchons de protection sur les rails d'alimentation 19V et 5V à la terre. Lors de la programmation du Teensy, le 5V provenait de l'USB, mais lorsqu'il fonctionne tout seul, l'alimentation provient de la brique d'alimentation de l'ordinateur portable. Lorsque j'ai connecté le régulateur 7805 directement à 19V, il faisait VRAIMENT chaud, j'ai donc mis un réseau de résistances pour limiter la tension et le courant d'entrée du régulateur. C'était un kludge, mais maintenant tout est à une température gérable.

Étape 4: Câblage ensemble

Câblage ensemble
Câblage ensemble
Câblage ensemble
Câblage ensemble

Le Teensy n'était pas un problème. Il est livré avec des broches, vous pouvez donc le brancher directement sur la planche à pain.

J'ai décidé de coder par couleur les fils de la gâche de porte avec des câbles banane rouge (+) et noir (-) provenant de la boîte de pièces cassées du laboratoire. Il y avait des fiches coupées de leurs fils, alors j'ai retiré du plastique pour exposer un point de soudure. J'aime vraiment la façon dont les fiches bananes de laboratoire peuvent se brancher les unes sur les autres. J'ai utilisé le câble téléphonique d'Apple pour connecter les boutons et le voyant d'état à l'extérieur de la pièce au Teensy à l'intérieur. Comme un côté était cassé, j'ai coupé cette extrémité et soudé dans l'en-tête à quatre broches, en le scellant avec de la colle chaude. Cela s'est bien branché sur ma planche à pain. Le côté sur lequel j'ai laissé la prise est entré dans la prise modulaire que j'ai récupérée du routeur. Les quatre fils ont été utilisés (GND, voyant d'état, bouton marche/arrêt, bouton de code). Au cas où vous ne l'auriez pas remarqué, j'aime les prises et les connecteurs. Le bloc d'alimentation connecté à la prise d'alimentation que j'ai glissé du routeur. Enfiler les fils à travers les tuyaux muraux n'était pas trop difficile, à cause de la pince flexible. Cela m'a vraiment sauvé la journée.

Étape 5: Coder

Code
Code
Code
Code

J'ai essayé de commenter mon code. Gardez à l'esprit qu'il s'agit d'un logiciel 1.0, ce qui signifie qu'il n'est pas exempt de bogues.## FONCTIONNEMENT ## 1. Appuyez sur le bouton marche/arrêt pour signaler que vous êtes prêt à commencer la saisie du code. Le voyant d'état commence à clignoter lentement. 2. Tapez votre code sur le bouton code. Le voyant d'état clignotera à 120 BPM, vous pouvez donc l'utiliser comme métronome si vous le souhaitez. Cependant, le programme cryptap mesurera les longueurs d'impulsion les unes par rapport aux autres proportionnellement, vous pouvez donc également utiliser votre propre tempo. Assurez-vous simplement que vous êtes suffisamment précis ! 3. Lorsque la saisie du code est terminée, appuyez à nouveau sur le bouton marche/arrêt. Le programme décidera alors de vous laisser entrer. Étant donné que les humains ne sont pas des chronométreurs très précis (le vôtre ne l'est pas vraiment), j'ai mis le rapport de tolérance à +/- 30 %. Cela signifie que les longueurs de battement peuvent être inexactes de cette quantité et tout de même réussir. C'est assez bon pour faire la différence entre des airs assez similaires. Il y a une petite quantité de chevauchement difficile à atteindre entre les battements doubles et triples, mais le code est toujours assez difficile à casser. Pour déverrouiller la porte, les battements doivent être dans les bonnes proportions les uns par rapport aux autres (+/- le rapport de tolérance), et le nombre de battements doit être correct. Si un mot de passe invalide est entré, le programme attend quelques secondes en ignorant toute entrée de l'utilisateur. Il fera également clignoter le voyant d'état rapidement. Si le bon code est entré, le voyant d'état s'allumera en continu et la porte se déverrouillera pendant 8 secondes.## CONFIGURATION UTILISATEUR ## La clé est stockée dans un tableau comme celui-ci: #define keylength 5 const int key = { 2, 1, 3, 3, 3}; // "Joyeux anniversaire" Le tableau stocke le temps qui s'écoule ENTRE les battements. Donc, si votre mot de passe a SIX notes comme "Joyeux anniversaire", il devrait y avoir CINQ éléments dans le tableau. Si votre mot de passe est vraiment long et que vous avez plus de 16 temps dedans, (vraiment difficile, je ne le recommande pas), vous devez augmenter le nombre défini dans cette ligne: #define inputCodeLength 16## LE RESTE DU CODE # # J'étais curieux au sujet des interruptions, alors j'ai demandé à mes boutons de déclencher des interruptions. Pour rendre ces interruptions faciles à utiliser, j'ai demandé à mes gestionnaires d'interruptions de vérifier certains pointeurs de fonction. Si le pointeur n'est pas défini sur NULL, la fonction vers laquelle il pointe est invoquée. Ceux-ci sont définis avec les diverses fonctions de « réglage de mode » à l'intérieur de cryptap.c. J'ai fait un effort pour éviter les débordements de buffer en définissant un nombre maximum d'impulsions entrées. Si le nombre maximum d'impulsions est entré, le programme démarre immédiatement l'analyse du mot de passe et décide s'il faut déverrouiller la porte. J'espère que mes commentaires dans le code vous aideront. ## BUGS ## J'ai essayé de supprimer le code de débogage USB, mais le code ne fonctionnera pas si je le fais. Donc, j'ai laissé usb_init() et les différentes instructions print(). J'apprécierais que quelqu'un puisse les supprimer et que le programme fonctionne toujours. Encore mieux s'ils peuvent expliquer pourquoi cela n'a pas fonctionné pour moi. Immédiatement après avoir été programmé, le Teensy n'accepte parfois pas la saisie de code. Pour résoudre ce problème, éteignez et rallumez le circuit.

Conseillé: