Inhoudsopgave:

Cryptap: een op ritme gebaseerd deurslot - Ajarnpa
Cryptap: een op ritme gebaseerd deurslot - Ajarnpa

Video: Cryptap: een op ritme gebaseerd deurslot - Ajarnpa

Video: Cryptap: een op ritme gebaseerd deurslot - Ajarnpa
Video: CrypTap Bitcoin Maden Kazarak Para Kazanma 2024, Juli-
Anonim
Cryptap: een op ritme gebaseerd deurslot
Cryptap: een op ritme gebaseerd deurslot
Cryptap: een op ritme gebaseerd deurslot
Cryptap: een op ritme gebaseerd deurslot
Cryptap: een op ritme gebaseerd deurslot
Cryptap: een op ritme gebaseerd deurslot

Geïnspireerd door verschillende deurontgrendelingsmechanismen die ik op hackaday.com heb gezien, besloot ik er zelf een te maken. Deze heeft een interface met twee knoppen; een om het indienen van het wachtwoord te starten en te beëindigen, en een om het ritme van uw wachtwoord daadwerkelijk in te tikken. Er is ook een statuslampje. Ik heb dit heel goedkoop kunnen bouwen met behulp van onderdelen die ik de afgelopen maanden had verzameld. Het enige waar ik voor moest betalen waren de microcontroller zelf, die $ 21 kostte (https://www.pjrc.com/teensy/), en wat draad voor het ophangen van foto's die ik vroeger had.

Het is heel leuk om in het Star Wars-thema of iets anders te tikken om mijn kamer binnen te komen. Nu hoef ik me geen zorgen meer te maken dat ik mezelf weer uit mijn kamer sluit! Bovendien voelt het goed en geeky.

Stap 1: Onderdelen en gereedschappen

Onderdelen en gereedschappen
Onderdelen en gereedschappen
Onderdelen en gereedschappen
Onderdelen en gereedschappen

Ik heb voor de Teensy gekozen omdat dit mijn eerste microcontroller is en ik nog geen programmeur heb. De Teensy heeft alleen een A-miniB USB-kabel en gratis software nodig om te installeren, compatibel met Mac/Windows/Linux. Het is ook heel eenvoudig om het hex-bestand te uploaden; gewoon compileren, en druk op de knop op de Teensy.

De kosten van dit project waren voor mij $ 21, plus de draad voor het ophangen van de afbeelding. Onderdelen van de straat kwamen uit een koffiepercolator (relais, LED, condensator) en een router (LED, modulaire jack, power jack, condensatoren). Gratis monsters waren de 7805 5-volt regelaar, knoppen en schakelaar. Ik vond ook veel dingen in de doos met "kapotte onderdelen" in mijn EE-lab: banaanconnectoren en kabel, draad, de sn754410-driver, een vier-pins header en weerstanden. Ik had een extra laptopoplader liggen die ik voor stroom gebruikte, en een Apple-modemkabel waarvan het lipje kapot was. Overige hardware: een wandplaat. Ik gebruikte een heet lijmpistool, een soldeerbout, een naaldvijl en een boormachine, die vrij standaard zijn. Het meest ongewone dat ik gebruikte, was een lange, flexibele grijper.

Stap 2: Reeds bestaande hardware

Reeds bestaande hardware
Reeds bestaande hardware
Reeds bestaande hardware
Reeds bestaande hardware
Reeds bestaande hardware
Reeds bestaande hardware
Reeds bestaande hardware
Reeds bestaande hardware

Ik had veel geluk dat er al zoveel was geïnstalleerd. Mijn kamer is ADA-toegankelijk en er waren al verschillende leidingen, elektriciteitskasten en een elektrisch deurslot geïnstalleerd. Toen ik uit nieuwsgierigheid de deurstaking verwijderde, ontdekte ik dat deze niet was aangesloten. Er was een pijp van de deuropening naar een blinde muurplaat in mijn kamer, en een andere pijp van daar naar een blinde muurplaat buiten.

Het deurslot zegt dat het 24V@3A nodig heeft om te werken, maar ik kon rondkomen met een 19V, 7.9A voeding die ik had. Het deurslot was gepolariseerd, let dus goed op de polariteit!

Stap 3: Circuits

Circuits
Circuits
Circuits
Circuits
Circuits
Circuits
Circuits
Circuits

Om de deuraanslag te regelen, gebruikte ik het relais dat ik in de koffiepercolator vond. Dit relais had meer dan 5V TTL nodig om het aan te drijven, dus de sn754410 werd gebruikt om TTL om te zetten naar 19V, wat het relais aandreef. De sn754410 is echt een quad half-H driver, dus ik verspilde 3/4 van de chip, maar ik had geen vermogenstransistors, dus die heb ik gebruikt.

De sn754410-chip heeft twee VCC-pinnen, één voor 5V, de andere voor welke spanning je ook wilt laten uitkomen, wat 19V was voor mij. Het is echt een coole chip. Hiermee kun je motoren en relais direct aansturen, want hij kan 1A per kwart chip schakelen en heeft ingebouwde beveiligingsdiodes. Kijk eens in de datasheet. In mijn circuit heb ik de sn754410 rechtstreeks aangesloten op de uitvoerpin van mijn Teensy. Knoppen zijn aangesloten als actief-laag, wat heel gebruikelijk is voor microcontrollers. Ze zijn direct verbonden met de Teensy, wat betekent dat ik debouncing in software moet doen. Het statuslampje is via een weerstand van 1K ohm met de Teensy verbonden; niets speciaals. Het circuit werkte zonder condensatoren, maar ik heb ze er toch in gedaan voor het geval dat. Er zitten beschermkappen op zowel de 19V als de 5V stroomrails naar aarde. Tijdens het programmeren van de Teensy kwam 5V van de USB, maar als het op zichzelf draait, komt de stroom van de laptop-power brick. Toen ik de 7805-regelaar rechtstreeks op 19V aansloot, werd hij ECHT heet, dus heb ik een netwerk van weerstanden geplaatst om de ingangsspanning en stroom naar de regelaar te beperken. Dit was een kludge, maar nu is alles op een beheersbare temperatuur.

Stap 4: Bedrading samen

Samen bedraden
Samen bedraden
Samen bedraden
Samen bedraden

De Teensy was geen probleem. Het wordt geleverd met pinnen, zodat u het rechtstreeks op het breadboard kunt aansluiten.

Ik besloot de draden naar de deuraanslag te kleuren met rode (+) en zwarte (-) bananenkabels uit de doos met kapotte onderdelen van het lab. Er waren wat pluggen afgehakt van hun draden, dus ik dremel wat plastic weg om een soldeerpunt bloot te leggen. Ik vind het echt leuk hoe de lab-banaanstekkers op elkaar kunnen worden aangesloten. Ik heb de telefoonkabel van Apple gebruikt om de knoppen en het statuslampje buiten de kamer te verbinden met de Teensy binnen. Omdat een kant kapot was, heb ik dat uiteinde afgehakt en in de vierpins header gesoldeerd, waarbij ik het afdicht met hete lijm. Dit sloot mooi aan op mijn breadboard. De kant waar ik de stekker aan liet zitten ging in de modulaire aansluiting die ik van de router had gered. Alle vier de draden werden gebruikt (GND, statuslampje, start/stop-knop, code-knop). Voor het geval je het nog niet gemerkt hebt, ik hou van stekkers en connectoren. De krachtsteen aangesloten op de stroomaansluiting die ik van de router heb gehaald. Door de flexibele grijper was het niet al te moeilijk om de draden door de muurbuizen te halen. Dat heeft echt mijn dag gered.

Stap 5: Coderen

Code
Code
Code
Code

Ik heb geprobeerd mijn code te becommentariëren. Houd er rekening mee dat dit 1.0-software is, wat betekent dat het niet vrij van bugs is.## BEDIENING ## 1. Druk op de start/stop-knop om aan te geven dat u klaar bent om code-invoer te beginnen. Het statuslampje begint langzaam te knipperen. 2. Tik je code in op de codeknop. Het statuslampje knippert bij 120 BPM, dus je kunt dit als je metronoom gebruiken als je wilt. Het cryptap-programma zal echter de pulslengtes proportioneel ten opzichte van elkaar meten, dus je zou ook je eigen tempo kunnen gebruiken. Zorg ervoor dat u nauwkeurig genoeg bent! 3. Wanneer de code-invoer is voltooid, drukt u nogmaals op de start/stop-knop. Het programma zal dan beslissen of je binnengelaten wordt. Aangezien mensen niet erg nauwkeurige tijdwaarnemers zijn (de jouwe is dat echt niet), heb ik de tolerantieverhouding ingesteld op +/- 30%. Dat betekent dat de beatlengtes in die mate onnauwkeurig kunnen zijn en toch door de beugel kunnen. Dit is goed genoeg om het verschil te zien tussen redelijk vergelijkbare deuntjes. Er is een kleine hoeveelheid moeilijk bereikbare overlap tussen dubbele en driedubbele beats, maar de code is nog steeds vrij moeilijk te doorbreken. Om de deur te ontgrendelen, moeten de slagen in de juiste verhouding tot elkaar staan (+/- de tolerantieverhouding), en het aantal slagen moet correct zijn. Als een ongeldig wachtwoord wordt ingevoerd, wacht het programma een paar seconden en negeert het gebruikersinvoer. Het zal ook snel het statuslampje laten knipperen. Als de juiste code is ingevoerd, gaat het statuslampje constant branden en wordt de deur 8 seconden lang ontgrendeld.## GEBRUIKERSCONFIGURATIE ## De sleutel wordt in een array als volgt opgeslagen: #define keylength 5 const int key = { 2, 1, 3, 3, 3 }; // "Happy birthday to you" De array slaat de hoeveelheid tijd op die tussen de beats gebeurt. Dus als je wachtwoord ZES opmerkingen heeft zoals "Happy birthday to you", zouden er VIJF elementen in de array moeten zijn. Als je wachtwoord erg lang is en je hebt meer dan 16 beats erin (echt moeilijk, ik raad het niet aan), moet je het aantal dat in deze regel is gedefinieerd verhogen: #define inputCodeLength 16## DE REST VAN DE CODE # # Ik was nieuwsgierig naar interrupts, dus ik liet mijn knoppen interrupts triggeren. Om deze interrupts gebruiksvriendelijk te maken, heb ik mijn interrupt-handlers laten controleren op bepaalde functiewijzers. Als de aanwijzer niet is ingesteld op NULL, wordt de functie waarnaar deze verwijst aangeroepen. Deze worden ingesteld met de verschillende "mode-setting" functies binnen cryptap.c. Ik heb een poging gedaan om bufferoverlopen te voorkomen door een maximum aantal ingevoerde pulsen in te stellen. Als het maximale aantal pulsen wordt ingevoerd, start het programma onmiddellijk de wachtwoordanalyse en beslist het of de deur moet worden ontgrendeld. Ik hoop dat mijn opmerkingen in de code helpen. ## BUGS ## Ik heb geprobeerd de USB-foutopsporingscode te verwijderen, maar de code werkt niet als ik dat doe. Dus verliet ik usb_init() en de verschillende print()-instructies. Ik zou het op prijs stellen als iemand ze zou kunnen verwijderen en het programma nog steeds kan laten werken. Nog beter als ze kunnen uitleggen waarom het bij mij niet werkte. Direct na het programmeren accepteert de Teensy soms geen code-invoer. Om dit op te lossen, power-cycle het circuit.

Aanbevolen: