Indholdsfortegnelse:

Cryptap: en rytmebaseret dørlås: 5 trin
Cryptap: en rytmebaseret dørlås: 5 trin

Video: Cryptap: en rytmebaseret dørlås: 5 trin

Video: Cryptap: en rytmebaseret dørlås: 5 trin
Video: CrypTap Bitcoin Maden Kazarak Para Kazanma 2024, November
Anonim
Cryptap: en rytmebaseret dørlås
Cryptap: en rytmebaseret dørlås
Cryptap: en rytmebaseret dørlås
Cryptap: en rytmebaseret dørlås
Cryptap: en rytmebaseret dørlås
Cryptap: en rytmebaseret dørlås

Inspireret af flere mekanismer til oplåsning af døre, jeg har set på hackaday.com, besluttede jeg at oprette en på egen hånd. Denne har en interface med to knapper; en for at starte og afslutte adgangskoden, og en for faktisk at trykke på den rytme, der er din adgangskode. Der er også et statuslys. Jeg var i stand til at bygge dette virkelig billigt ved hjælp af dele, jeg havde renset i løbet af de sidste par måneder. De eneste ting, jeg var nødt til at betale for, var selve mikrokontrolleren, som var $ 21 (https://www.pjrc.com/teensy/), og nogle billedhængende ledninger, som jeg havde fra før.

Det er masser af sjov at trykke på Star Wars Theme eller noget for at komme ind på mit værelse. Nu skal jeg ikke bekymre mig om at låse mig ude af mit værelse igen! Plus, det føles godt og nørdet.

Trin 1: Dele og værktøjer

Dele og værktøjer
Dele og værktøjer
Dele og værktøjer
Dele og værktøjer

Jeg valgte Teensy, fordi dette er min første mikrokontroller, og jeg har ikke en programmør endnu. Teensy kræver kun et A-miniB USB-kabel og gratis software til installation, kompatibel med Mac/Windows/Linux. Det er også virkelig let at uploade hex -filen; bare kompiler, og tryk på knappen på Teensy.

Omkostningerne ved dette projekt for mig var $ 21 plus den billedhængende ledning. Dele fra gaden kom fra en kaffe -perkolator (relæ, LED, kondensator) og en router (LED, modulstik, strømstik, kondensatorer). Gratis prøver var 7805 5-volts regulator, knapper og switch. Jeg fandt også masser af ting i boksen "brudte dele" i mit EE-laboratorium: bananstik og kabel, ledning, sn754410-driveren, en firbenet header og modstande. Jeg havde en ekstra bærbar oplader liggende, som jeg brugte til strøm, og et Apple -modemkabel, hvis fane var brudt. Anden hardware: en vægplade. Jeg brugte en varm limpistol, et loddejern, en nålefil og en boremaskine, som er ret standard. Det mest usædvanlige, jeg brugte, var et langt, fleksibelt grabberværktøj.

Trin 2: Forud eksisterende hardware

Forud eksisterende hardware
Forud eksisterende hardware
Forud eksisterende hardware
Forud eksisterende hardware
Forud eksisterende hardware
Forud eksisterende hardware
Forud eksisterende hardware
Forud eksisterende hardware

Jeg var meget heldig, at der allerede var installeret så meget. Mit værelse er ADA-tilgængeligt, og der var allerede installeret forskellige rør, elbokse og en elektrisk dørslåsning. Da jeg fjernede dørstrejken af nysgerrighed, fandt jeg ud af, at den ikke var forbundet. Der var et rør fra døren til en tom vægplade inde i mit værelse, og et andet rør derfra til en tom vægplade udenfor.

Dørstrejken siger, at den har brug for 24V@3A for at fungere, men jeg kunne klare mig med en 19V, 7,9A strømforsyning, jeg havde. Dørstrejken var polariseret, så sørg for at have polariteten korrekt!

Trin 3: Kredsløb

Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb

For at kontrollere dørstrejken brugte jeg det relæ, jeg fandt i kaffe -perkolatoren. Dette relæ havde brug for mere end 5V TTL for at drive det, så sn754410 blev brugt til at oversætte TTL til 19V, hvilket kørte relæet. Sn754410 er virkelig en quad halv-H driver, så jeg spildte 3/4 af chippen, men jeg havde ingen strømtransistorer, så det var det, jeg brugte.

Sn754410 -chippen har to VCC -ben, den ene til 5V, den anden til den spænding, du gerne vil have ud, hvilket var 19V for mig. Det er en virkelig cool chip. Du kan bruge dette til at drive motorer og relæer direkte, fordi det kan skifte 1A pr. Kvart chip og har indbyggede beskyttelsesdioder. Tag et kig på databladet. I mit kredsløb sluttede jeg sn754410 direkte til min Teensys output pin. Knapper er forbundet som aktiv-lav, hvilket er meget almindeligt for mikrokontrollere. De er direkte forbundet til Teensy, hvilket betyder, at jeg skal gøre debouncing i software. Statuslyset er forbundet til Teensy via en 1K ohm modstand; ikke noget specielt. Kredsløbet fungerede uden kondensatorer, men jeg satte dem alligevel i for sikkerheds skyld. Der er beskyttelseskapper på både 19V og 5V strømskinnerne til jorden. Under programmeringen af Teensy kom 5V fra USB'en, men når den kører alene, kommer strømmen fra den bærbare computer. Da jeg tilsluttede 7805 -regulatoren direkte til 19V, blev det RIGTIG varmt, så jeg satte et netværk af modstande til for at begrænse indgangsspændingen og strømmen til regulatoren. Dette var en kludge, men nu er alt ved en overskuelig temperatur.

Trin 4: Tilslut det sammen

Tilslutning af det sammen
Tilslutning af det sammen
Tilslutning af det sammen
Tilslutning af det sammen

Teensy var ikke noget problem. Den leveres med stifter, så du kan tilslutte den direkte til brødbrættet.

Jeg besluttede mig for at farvekode ledningerne til dørstrejken med røde (+) og sorte (-) banankabler fra laboratoriets ødelagte dele. Der var nogle stik, der blev hugget af deres ledninger, så jeg trak noget plastik væk for at afsløre et loddepunkt. Jeg kan virkelig godt lide, hvordan laboratoriebananproppene kan tilsluttes hinanden. Jeg brugte Apples telefonkabel til at forbinde knapperne og statuslyset uden for rummet til Teensy indeni. Da den ene side var brudt, huggede jeg den ende af og loddet i den firbenede overskrift og forseglede den med varm lim. Dette sluttede pænt til mit brødbræt. Den side, jeg forlod stikket på, gik ind i modulstikket, jeg bjærgede fra routeren. Alle fire ledninger blev brugt (GND, statuslys, start/stop -knap, kodeknap). Hvis du ikke har bemærket det, kan jeg lide stik og stik. Strømstenen tilsluttet strømstikket, som jeg slog fra routeren. Det var ikke så svært at tråde ledningerne gennem vægrørene på grund af den fleksible grabber -ting. Det reddede virkelig min dag.

Trin 5: Kode

Kode
Kode
Kode
Kode

Jeg har prøvet at kommentere min kode. Husk, at dette er 1.0-software, hvilket betyder, at det ikke er fejlfrit. ## OPERATION ## 1. Tryk på start/stop-knappen for at signalere, at du er klar til at starte kodeindtastning. Statuslampen begynder at blinke langsomt. 2. Tryk på din kode på kodeknappen. Statusindikatoren blinker med 120 BPM, så du kan bruge dette som din metronom, hvis du vil. Kryptaprogrammet måler imidlertid pulslængderne i forhold til hinanden proportionelt, så du kan også bruge dit eget tempo. Bare sørg for at du er præcis nok! 3. Når kodeindtastningen er færdig, skal du trykke på start/stop -knappen igen. Programmet vil derefter beslutte, om du vil lade dig komme ind. Da mennesker ikke er særlig præcise tidsholdere (din er det virkelig ikke), satte jeg toleranceforholdet til +/- 30%. Det betyder, at slaglængderne kan være unøjagtige med det beløb, og stadig passere mønstring. Dette er godt nok til at se forskel på temmelig lignende melodier. Der er en lille mængde svær at nå overlap mellem dobbelte og tredobbelte slag, men koden er stadig ret svær at bryde. For at låse døren op skal slagene være i de korrekte proportioner til hinanden (+/- toleranceforholdet), og antallet af slag skal være korrekt. Hvis der indtastes en ugyldig adgangskode, venter programmet i et par sekunder, mens brugerinput ignoreres. Statuslampen blinker også hurtigt. Hvis den korrekte kode indtastes, tændes statusindikatoren jævnt, og døren låses op i 8 sekunder. ## BRUGERKONFIGURATION ## Nøglen gemmes i et array som dette: #define keylength 5 const int key = {2, 1, 3, 3, 3}; // "Tillykke med fødselsdagen" Arrayen gemmer den tid, der sker MELLEM beats. Så hvis din adgangskode har SIX noter som "Tillykke med fødselsdagen til dig", burde der være fem elementer i arrayet. Hvis din adgangskode er virkelig lang, og du har mere end 16 slag i den (virkelig hårdt, jeg anbefaler den ikke), skal du øge det nummer, der er defineret i denne linje: #define inputCodeLength 16 ## RESTEN AF KODEN # # Jeg var nysgerrig efter afbrydelser, så jeg havde mine knapper til at udløse afbrydelser. For at gøre disse afbrydelser nemme at bruge, fik jeg mine afbrydelsesbehandlere til at kontrollere, om der var bestemte funktionspunkter. Hvis markøren ikke er indstillet til NULL, aktiveres den funktion, den peger på. Disse er indstillet med de forskellige "mode-setting" funktioner inde i cryptap.c. Jeg gjorde en indsats for at undgå bufferoverløb ved at indstille et maksimalt antal indtastede impulser. Hvis det maksimale antal impulser er indtastet, starter programmet øjeblikkeligt password -analyse og beslutter, om døren skal låses op. Jeg håber, at mine kommentarer i koden hjælper. ## BUGS ## Jeg forsøgte at fjerne USB -fejlfindingskoden, men koden virker ikke, hvis jeg gør det. Så jeg forlod usb_init () og de forskellige print () udsagn. Jeg ville sætte pris på det, hvis nogen kunne fjerne dem og stadig få programmet til at fungere. Endnu bedre, hvis de kan forklare, hvorfor det ikke fungerede for mig. Umiddelbart efter programmeringen accepterer Teensy nogle gange ikke kodeindtastning. For at løse dette skal du tænde for kredsløbet.

Anbefalede: