Innehållsförteckning:

Cryptap: ett rytmbaserat dörrlås: 5 steg
Cryptap: ett rytmbaserat dörrlås: 5 steg

Video: Cryptap: ett rytmbaserat dörrlås: 5 steg

Video: Cryptap: ett rytmbaserat dörrlås: 5 steg
Video: KONSTIGA NYHETER VECKAN - 35 | Mystisk | Universum | UFO | Paranormalt 2024, November
Anonim
Cryptap: ett rytmbaserat dörrlås
Cryptap: ett rytmbaserat dörrlås
Cryptap: ett rytmbaserat dörrlås
Cryptap: ett rytmbaserat dörrlås
Cryptap: ett rytmbaserat dörrlås
Cryptap: ett rytmbaserat dörrlås

Inspirerad av flera dörrlåsningsmekanismer jag sett på hackaday.com bestämde jag mig för att skapa en på egen hand. Den här har ett tvåknappsgränssnitt; en för att starta och avsluta lösenordsinlämningen, och en för att faktiskt trycka på rytmen som är ditt lösenord. Det finns också en statuslampa. Jag kunde bygga detta riktigt billigt med delar som jag hade tagit bort under de senaste månaderna. Det enda jag var tvungen att betala för var mikrocontrollern själv, som kostade $ 21 (https://www.pjrc.com/teensy/), och en bildhängande tråd som jag hade från tidigare.

Det är mycket roligt att trycka på Star Wars -temat eller något att komma in i mitt rum. Nu behöver jag inte oroa mig för att låsa mig utanför mitt rum igen! Dessutom känns det bra och nördigt.

Steg 1: Delar och verktyg

Delar och verktyg
Delar och verktyg
Delar och verktyg
Delar och verktyg

Jag valde Teensy eftersom det här är min första mikrokontroller, och jag har inte en programmerare än. Teensy kräver bara en A-miniB USB-kabel och gratis programvara för att installera, kompatibel med Mac/Windows/Linux. Det är också väldigt enkelt att ladda upp hex -filen; kompilera bara och tryck på knappen på Teensy.

Kostnaden för detta projekt för mig var $ 21, plus den hängande tråden. Delar från gatan kom från en kaffeperkolator (relä, LED, kondensator) och en router (LED, moduljack, strömuttag, kondensatorer). Gratis prover var 7805 5-voltsregulator, knappar och omkopplare. Jag hittade också massor av saker i rutan "trasiga delar" i mitt EE-labb: banankontakter och kabel, tråd, sn754410-drivrutinen, en fyrpolig huvud och motstånd. Jag hade en extra bärbar laddare som jag använde för ström och en Apple -modemkabel vars flik var trasig. Annan hårdvara: en väggplatta. Jag använde en varm limpistol, ett lödkolv, en nålfil och en borrmaskin, som är ganska standard. Det mest ovanliga jag använde var ett långt, flexibelt gripverktyg.

Steg 2: Befintlig maskinvara

Befintlig hårdvara
Befintlig hårdvara
Befintlig hårdvara
Befintlig hårdvara
Befintlig hårdvara
Befintlig hårdvara
Befintlig hårdvara
Befintlig hårdvara

Jag hade mycket tur att det redan var så mycket installerat. Mitt rum är ADA-tillgängligt, och det fanns redan olika rör, elektriska lådor och en elektrisk dörrslag. När jag tog bort dörrstrejken av nyfikenhet fann jag att den inte var ansluten. Det var ett rör från dörrstrejken till en tom väggplatta inne i mitt rum, och ett annat rör därifrån till en tom väggplatta utanför.

Dörrstrejken säger att den behöver 24V@3A för att fungera, men jag kunde klara mig med en 19V, 7.9A strömförsörjning jag hade. Dörrslaget var polariserat, så se till att du har rätt polaritet!

Steg 3: Kretsar

Kretsar
Kretsar
Kretsar
Kretsar
Kretsar
Kretsar
Kretsar
Kretsar

För att kontrollera dörrstrejken använde jag reläet jag hittade i kaffeperkolatorn. Detta relä behövde mer än 5V TTL för att driva det, så sn754410 användes för att översätta TTL till 19V, vilket drev reläet. Sn754410 är verkligen en fyrhjulsdriven halv-H-drivrutin, så jag slösade bort 3/4 av chipet, men jag hade inga effekttransistorer, så det var vad jag använde.

Sn754410 -chipet har två VCC -stift, en för 5V, den andra för vilken spänning du vill att ska komma ut, vilket var 19V för mig. Det är ett riktigt coolt chip. Du kan använda detta för att driva motorer och reläer direkt, eftersom det kan växla 1A per kvartechip och har inbyggda skyddsdioder. Ta en titt på databladet. I min krets kopplade jag sn754410 direkt till min tonårs utgångsstift. Knappar är anslutna som aktiv-låg, vilket är mycket vanligt för mikrokontroller. De är direkt anslutna till Teensy, vilket innebär att jag måste göra debouncing i programvara. Statuslampan är ansluten till Teensy via ett 1K ohm motstånd; inget speciellt. Kretsen fungerade utan kondensatorer, men jag satte in dem ändå för säkerhets skull. Det finns skyddslock på både 19V och 5V kraftskenor till marken. Vid programmeringen av Teensy kom 5V från USB -enheten, men när den körs på egen hand kommer strömmen från den bärbara datorkraften. När jag kopplade 7805 -regulatorn direkt till 19V blev det RIKTIGT varmt, så jag satte in ett nätverk av motstånd för att begränsa ingångsspänningen och strömmen till regulatorn. Det här var en kludge, men nu är allt på en hanterbar temperatur.

Steg 4: Koppla ihop det

Koppla ihop det
Koppla ihop det
Koppla ihop det
Koppla ihop det

Teensy var inga problem. Den levereras med stift så att du kan ansluta den direkt till brödbrädan.

Jag bestämde mig för att färgkoda trådarna till dörrstrejken med röda (+) och svarta (-) banankablar från labbets trasiga delar. Det var några pluggar som huggits av deras ledningar, så jag drömde bort lite plast för att avslöja en lödpunkt. Jag gillar verkligen hur laboratoriebananpluggarna kan anslutas till varandra. Jag använde Apples telefonkabel för att ansluta knapparna och statuslampan utanför rummet till Teensy -insidan. Eftersom den ena sidan var trasig, hackade jag av den änden och lodde i den fyra-stifts rubriken och förseglade den med varmt lim. Detta kopplades snyggt in i min brödbräda. Sidan som jag lämnade kontakten på gick in i moduljacket som jag bärgade från routern. Alla fyra ledningar användes (GND, statuslampa, start/stopp -knapp, kodknapp). Om du inte har märkt det gillar jag pluggar och kontakter. Strömstenen ansluten till strömuttaget som jag svepte från routern. Att trä trådarna genom väggrören var inte så svårt på grund av den flexibla griparen. Det räddade verkligen min dag.

Steg 5: Kod

Koda
Koda
Koda
Koda

Jag har försökt kommentera min kod. Tänk på att det här är 1.0-programvara, vilket betyder att det inte är buggfritt. ## OPERATION ## 1. Tryck på start/stopp-knappen för att signalera att du är redo att börja mata in kod. Statuslampan börjar blinka långsamt. 2. Knacka in din kod på kodknappen. Statuslampan blinkar med 120 BPM, så du kan använda den som din metronom om du vill. Men kryptaprogrammet mäter pulslängderna relativt varandra proportionellt, så du kan också använda ditt eget tempo. Se bara till att du är noggrann nog! 3. När kodinmatningen är klar, tryck på start/stopp -knappen igen. Programmet kommer sedan att avgöra om du vill släppa in dig. Eftersom människor inte är särskilt noggranna tidshållare (din är verkligen inte), ställer jag in toleransförhållandet till +/- 30%. Det betyder att slaglängderna kan vara felaktiga med det beloppet och ändå passera mönstringen. Detta är tillräckligt bra för att se skillnaden mellan ganska liknande låtar. Det finns en liten mängd svåråtkomliga överlappningar mellan dubbla och tredubbla slag, men koden är fortfarande ganska svår att bryta. För att låsa upp dörren måste slagen vara i rätt proportion till varandra (+/- toleransförhållandet), och antalet slag måste vara korrekt. Om ett ogiltigt lösenord anges, väntar programmet i några sekunder och ignorerar eventuell användarinmatning. Statuslampan blinkar också snabbt. Om rätt kod anges, tänds statuslampan stadigt och dörren låses upp i 8 sekunder. ## ANVÄNDARKONFIGURATION ## Nyckeln lagras i en array så här: #define keylength 5 const int key = {2, 1, 3, 3, 3}; // "Grattis på födelsedagen" Arrayen lagrar hur lång tid som händer MELLAN beatsna. Så om ditt lösenord har SIX anteckningar som "Grattis på födelsedagen till dig" borde det finnas fem element i gruppen. Om ditt lösenord är riktigt långt och du har mer än 16 slag i det (riktigt svårt, jag rekommenderar det inte) måste du öka antalet som definieras i den här raden: #define inputCodeLength 16 ## REST OF THE CODE # # Jag var nyfiken på avbrott, så jag fick mina knappar att utlösa avbrott. För att göra dessa avbrott enkla att använda lät jag mina avbrottshanterare leta efter vissa funktionspekare. Om pekaren inte är inställd på NULL, aktiveras den funktion den pekar på. Dessa är inställda med de olika "lägesinställnings" -funktionerna inuti cryptap.c. Jag försökte undvika buffertöverflöd genom att ange ett maximalt antal inmatade pulser. Om det maximala antalet pulser matas in startar programmet omedelbart lösenordsanalys och avgör om dörren ska låsas upp. Jag hoppas att mina kommentarer i koden hjälper. ## BUGS ## Jag försökte ta bort USB -felsökningskoden, men koden fungerar inte om jag gör det. Så jag lämnade i usb_init () och de olika print () uttalandena. Jag skulle uppskatta om någon kunde ta bort dem och fortfarande få programmet att fungera. Ännu bättre om de kan förklara varför det inte fungerade för mig. Omedelbart efter att ha programmerats accepterar Teensy ibland inte kodinmatning. För att lösa detta, strömcykla kretsen.

Rekommenderad: