Obsah:

Cryptap: zámok dverí založený na rytme: 5 krokov
Cryptap: zámok dverí založený na rytme: 5 krokov

Video: Cryptap: zámok dverí založený na rytme: 5 krokov

Video: Cryptap: zámok dverí založený na rytme: 5 krokov
Video: Part 1 - Around the World in 80 Days Audiobook by Jules Verne (Chs 01-14) 2024, Júl
Anonim
Cryptap: zámok dverí založený na rytme
Cryptap: zámok dverí založený na rytme
Cryptap: zámok dverí založený na rytme
Cryptap: zámok dverí založený na rytme
Cryptap: zámok dverí založený na rytme
Cryptap: zámok dverí založený na rytme

Inšpirovaný niekoľkými mechanizmami odomykania dverí, ktoré som videl na hackaday.com, som sa rozhodol vytvoriť jeden sám. Toto má rozhranie s dvoma tlačidlami; jeden na spustenie a ukončenie zadávania hesla a druhý na klepnutie v rytme, ktoré je vašim heslom. Nechýba ani stavová kontrolka. Dokázal som to postaviť skutočne lacno pomocou dielov, ktoré som vyčistil za posledných niekoľko mesiacov. Jediné, za čo som musel zaplatiť, bol samotný mikrokontrolér, ktorý stál 21 dolárov (https://www.pjrc.com/teensy/), a drôt na zavesenie obrazu, ktorý som mal predtým.

Je zábavné kopírovať tému Star Wars alebo niečo, čo vstupuje do mojej miestnosti. Teraz sa už nemusím báť, že sa opäť zamknem zo svojej izby! Navyše sa cíti dobre a geeky.

Krok 1: Diely a nástroje

Diely a nástroje
Diely a nástroje
Diely a nástroje
Diely a nástroje

Vybral som si Teensy, pretože toto je môj prvý mikrokontrolér a zatiaľ nemám programátora. Na inštaláciu zariadenia Teensy je potrebný iba kábel USB A-miniB USB a bezplatný softvér kompatibilný s počítačmi Mac/Windows/Linux. Je tiež veľmi jednoduché nahrať hexadecimálny súbor; Len skompilovajte a stlačte tlačidlo na Teensy.

Náklady na tento projekt pre mňa boli 21 dolárov plus drôt na zavesenie obrazu. Časti z ulice pochádzali z kávovaru (relé, LED, kondenzátor) a routera (LED, modulárny konektor, napájací konektor, kondenzátory). Bezplatnými vzorkami boli 5-voltový regulátor 7805, tlačidlá a vypínač. V krabici „zlomených častí“v mojom laboratóriu EE som tiež našiel veľa vecí: banánové konektory a kábel, drôt, ovládač sn754410, štvorpólový konektor a odpory. Okolo som nechal ležať ďalšiu nabíjačku na prenosný počítač, ktorú som používal na napájanie, a kábel modemu od spoločnosti Apple, ktorý mal zlomenú záložku. Ďalší hardvér: nástenná doska. Použil som horúcu lepiacu pištoľ, spájkovačku, ihlový pilník a elektrickú vŕtačku, ktoré sú celkom štandardné. Najneobvyklejšia vec, ktorú som použil, bol dlhý, flexibilný nástroj na uchopenie.

Krok 2: Už existujúci hardvér

Už existujúci hardvér
Už existujúci hardvér
Už existujúci hardvér
Už existujúci hardvér
Už existujúci hardvér
Už existujúci hardvér
Už existujúci hardvér
Už existujúci hardvér

Mal som veľké šťastie, že už toho bolo toľko nainštalovaného. Moja izba je prístupná pre ADA a už tam boli nainštalované rôzne potrubia, elektrické skrinky a elektrický dverný zámok. Keď som zo zvedavosti odstránil úder dverí, zistil som, že nie sú spojené. Do miestnosti vtrhla rúra od dverí k prázdnej nástennej doske a odtiaľ ďalšia rúra k prázdnej nástennej doske vonku.

Pri dverách sa hovorí, že na svoju prevádzku potrebuje 24 V@3 A, ale dokázal som sa zaobísť s napájaním 19 V, 7,9 A, ktoré som mal. Úder dverí bol polarizovaný, preto dbajte na správnu polaritu!

Krok 3: Obvody

Obvody
Obvody
Obvody
Obvody
Obvody
Obvody
Obvody
Obvody

Na ovládanie úderu na dvere som použil relé, ktoré som našiel v kávovare. Toto relé potrebovalo na svoj pohon viac ako 5V TTL, a tak bol sn754410 použitý na preklad TTL na 19V, ktorý poháňal relé. Sn754410 je skutočne quad half-H driver, takže som strácal 3/4 čipu, ale nemal som žiadne výkonové tranzistory, takže som to použil.

Čip sn754410 má dva piny VCC, jeden pre 5V, druhý pre akékoľvek napätie, ktoré chcete vydať, čo bolo pre mňa 19V. Je to naozaj skvelý čip. Môžete to použiť na priamy pohon motorov a relé, pretože môže spínať 1A na štvrtinový čip a má vstavané ochranné diódy. Pozrite sa na technický list. V mojom obvode som zapojil sn754410 priamo do výstupného kolíka môjho Teensy. Tlačidlá sú pripojené ako active-low, čo je u mikrokontrolérov veľmi bežné. Sú priamo prepojené s Teensy, čo znamená, že musím vykonať odbúranie softvéru. Stavová kontrolka je k Teensy pripojená cez odpor 1 K ohm; nič zvláštne. Obvod fungoval bez kondenzátorov, ale pre každý prípad som ich vložil. Ochranné krytky na napájacích koľajniciach 19 V aj 5 V sú uzemnené. Pri programovaní Teensy 5V pochádzalo z USB, ale keď beží samo, napájanie pochádza z napájacej tehly prenosného počítača. Keď som zapojil regulátor 7805 priamo na 19V, OPRAVDU sa zahrial, a tak som vložil sieť odporov, aby som obmedzil vstupné napätie a prúd do regulátora. Bol to kal, ale teraz je všetko pri zvládnuteľnej teplote.

Krok 4: Spojte to dohromady

Zapojenie dohromady
Zapojenie dohromady
Zapojenie dohromady
Zapojenie dohromady

Teensy nebol žiadny problém. Dodáva sa s kolíkmi, takže ho môžete zapojiť priamo do dosky na pečenie.

Rozhodol som sa farebne odlíšiť káble k dverám štrajku červeným (+) a čiernym (-) banánovým káblom zo škatule s rozbitými časťami laboratória. Z ich drôtov bolo odrezaných niekoľko zástrčiek, a tak som odmotal niekoľko plastov, aby som odhalil spájkovací bod. Veľmi sa mi páči, ako sa môžu laboratórne banánové zástrčky navzájom spájať. Na prepojenie tlačidiel a stavového svetla mimo miestnosti s Teensy vo vnútri som použil telefónny kábel spoločnosti Apple. Pretože bola jedna strana zlomená, odrezal som ten koniec a zapájal som štvorpólový konektor a utesnil ho horúcim lepidlom. Toto sa pekne zapojilo do môjho chleba. Strana, na ktorej som nechal zástrčku, išla do modulárneho konektora, ktorý som zachránil zo smerovača. Boli použité všetky štyri vodiče (GND, stavová kontrolka, tlačidlo štart/stop, tlačidlo kódu). Ak ste si to nevšimli, mám rád zástrčky a konektory. Napájacia tehla pripojená k napájaciemu konektoru, ktorý som potiahol zo smerovača. Prevlečenie drôtov stenovými rúrami nebolo príliš ťažké, pretože išlo o flexibilný drapák. To mi skutočne zachránilo deň.

Krok 5: Kód

Kód
Kód
Kód
Kód

Pokúsil som sa komentovať svoj kód. Majte na pamäti, že sa jedná o softvér 1.0, čo znamená, že nie je bez chýb. ## OPERATION ## 1. Stlačením tlačidla štart/stop signalizujete, že ste pripravení začať zadávať kód. Kontrolka stavu začne pomaly blikať. 2. Klepnite na svoj kód na tlačidlo s kódom. Kontrolka stavu bude blikať pri 120 BPM, takže ju môžete použiť ako svoj metronóm, ak chcete. Program cryptap však bude proporcionálne merať dĺžky pulzov navzájom, takže môžete použiť aj svoje vlastné tempo. Len sa uistite, že ste dostatočne presní! 3. Po zadaní kódu znova stlačte tlačidlo štart/stop. Program potom rozhodne, či vás pustí dovnútra. Keďže ľudia nie sú veľmi presní strážcovia času (váš skutočne nie je), nastavil som pomer tolerancie na +/- 30%. To znamená, že dĺžky úderov môžu byť o túto sumu nepresné a stále sa musia skladať. To je dosť dobré na to, aby sme zistili rozdiel medzi dosť podobnými melódiami. Medzi údermi s dvojitou a trojitou dĺžkou existuje malé množstvo ťažko dosiahnuteľného prekrývania, ale kód je stále dosť ťažké prelomiť. Na odomknutie dverí musia byť údery navzájom v správnom pomere (+/- pomer tolerancie) a počet úderov musí byť správny. Ak je zadané neplatné heslo, program niekoľko sekúnd počká a ignoruje všetky vstupy používateľov. Tiež rýchlo zabliká stavová kontrolka. Ak zadáte správny kód, stavová kontrolka sa nerozsvieti a dvere sa na 8 sekúnd odomknú. ## USER CONFIGURATION ## Kľúč je uložený v poli takto: #define keylength 5 const int key = {2, 1, 3, 3, 3}; // "Všetko najlepšie k narodeninám" V poli sa ukladá čas, ktorý nastane MEDZI údermi. Ak má teda vaše heslo SIX poznámok ako „Všetko najlepšie k narodeninám“, v poli by malo byť PÄŤ prvkov. Ak je vaše heslo skutočne dlhé a máte v ňom viac ako 16 úderov ((skutočne ťažké, neodporúčam ho)), musíte zvýšiť počet definovaný v tomto riadku: #define inputCodeLength 16 ## THE REST OF THE CODE # # Bol som zvedavý na prerušenia, a tak som nechal svoje tlačidlá spúšťať prerušenia. Aby boli tieto prerušenia ľahko použiteľné, nechal som svoje obsluhy prerušenia skontrolovať na určité ukazovatele funkcií. Ak ukazovateľ nie je nastavený na NULL, vyvolá sa funkcia, na ktorú ukazuje. Tieto sú nastavené pomocou rôznych funkcií „nastavenia režimu“vo vnútri cryptap.c. Snažil som sa vyhnúť pretečeniu vyrovnávacej pamäte nastavením maximálneho počtu zadaných impulzov. Ak je zadaný maximálny počet impulzov, program okamžite spustí analýzu hesla a rozhodne, či sa majú dvere odomknúť. Dúfam, že moje komentáre v kóde pomôžu. ## CHYBY ## Pokúsil som sa odstrániť ladiaci kód USB, ale kód nebude fungovať, ak áno. Nechal som teda v usb_init () a rôznych príkazoch print (). Ocenil by som, keby ich niekto odstránil a stále fungoval. Ešte lepšie, keď môžu vysvetliť, prečo mi to nefungovalo. Ihneď po naprogramovaní Teensy niekedy neakceptuje zadanie kódu. Ak to chcete vyriešiť, vypnite a zapnite obvod.

Odporúča: