Innholdsfortegnelse:

Cryptap: en rytmebasert dørlås: 5 trinn
Cryptap: en rytmebasert dørlås: 5 trinn

Video: Cryptap: en rytmebasert dørlås: 5 trinn

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

Inspirert av flere mekanismer for opplåsing av dører jeg har sett på hackaday.com, bestemte jeg meg for å lage en på egen hånd. Denne har et to-knappers grensesnitt; en for å starte og avslutte passordinnleveringen, og en for å trykke på rytmen som er passordet ditt. Det er også et statuslys. Jeg klarte å bygge dette veldig billig ved å bruke deler jeg hadde fjernet de siste månedene. De eneste tingene jeg måtte betale for var selve mikrokontrolleren, som var $ 21 (https://www.pjrc.com/teensy/), og noen bildehengende ledninger som jeg hadde fra før.

Det er mye moro å trykke på Star Wars Theme eller noe for å komme inn på rommet mitt. Nå trenger jeg ikke bekymre meg for å låse meg ute av rommet mitt igjen! I tillegg føles det bra og nerdete.

Trinn 1: Deler og verktøy

Deler og verktøy
Deler og verktøy
Deler og verktøy
Deler og verktøy

Jeg valgte Teensy fordi dette er min første mikrokontroller, og jeg har ikke en programmerer ennå. Teensy krever bare en A-miniB USB-kabel og gratis programvare for å installere, kompatibel med Mac/Windows/Linux. Det er også veldig enkelt å laste opp hex -filen; bare kompiler, og trykk på knappen på Teensy.

Kostnaden for dette prosjektet for meg var $ 21, pluss den hengende ledningen. Deler fra gaten kom fra en kaffeperkolator (relé, LED, kondensator) og en ruter (LED, modulær kontakt, strømkontakt, kondensatorer). Gratis prøver var 7805 5-volts regulator, knapper og bryter. Jeg fant også mange ting i boksen "ødelagte deler" i EE-laboratoriet mitt: banankontakter og kabel, ledning, sn754410-driveren, en firpinners topp og motstander. Jeg hadde en ekstra bærbar lader som jeg brukte for strøm, og en Apple -modemkabel hvis flik var ødelagt. Annen maskinvare: en veggplate. Jeg brukte en varm limpistol, et loddejern, en nålefil og en boremaskin, som er ganske standard. Det mest uvanlige jeg brukte var et langt, fleksibelt gripeverktøy.

Trinn 2: Eksisterende maskinvare

Eksisterende maskinvare
Eksisterende maskinvare
Eksisterende maskinvare
Eksisterende maskinvare
Eksisterende maskinvare
Eksisterende maskinvare
Eksisterende maskinvare
Eksisterende maskinvare

Jeg var veldig heldig at det allerede var installert så mye. Rommet mitt er ADA-tilgjengelig, og det var allerede installert forskjellige rør, elektriske bokser og en elektrisk dørstreik. Da jeg fjernet dørstreiken av nysgjerrighet, fant jeg ut at den ikke var koblet til. Det var et rør fra dørstreiken til en tom veggplate inne på rommet mitt, og et annet rør derfra til en tom veggplate utenfor.

Dørstrekket sier at den trenger 24V@3A for å fungere, men jeg klarte å klare meg med en 19V, 7.9A strømforsyning jeg hadde. Dørstreiken var polarisert, så sørg for at du har polariteten riktig!

Trinn 3: Kretser

Kretser
Kretser
Kretser
Kretser
Kretser
Kretser
Kretser
Kretser

For å kontrollere dørstreken brukte jeg reléet jeg fant i kaffeperkolatoren. Dette reléet trengte mer enn 5V TTL for å drive det, så sn754410 ble brukt til å oversette TTL til 19V, som drev reléet. Sn754410 er virkelig en quad half-H driver, så jeg kastet bort 3/4 av brikken, men jeg hadde ingen strømtransistorer, så det var det jeg brukte.

Sn754410 -brikken har to VCC -pinner, en for 5V, den andre for hvilken spenning du vil at skal komme ut, som var 19V for meg. Det er en veldig kul chip. Du kan bruke dette til å drive motorer og reléer direkte, fordi den kan bytte 1A per kvartal chip og har innebygde beskyttelsesdioder. Ta en titt på databladet. I kretsen min koblet jeg sn754410 direkte til min tenårings utgangspinne. Knapper er koblet til som aktiv-lav, noe som er veldig vanlig for mikrokontrollere. De er direkte koblet til Teensy, noe som betyr at jeg må gjøre debouncing i programvare. Statuslyset er koblet til Teensy gjennom en 1K ohm motstand; ikke noe spesielt. Kretsen fungerte uten kondensatorer, men jeg satte dem inn uansett for sikkerhets skyld. Det er beskyttelseshetter på både 19V og 5V strømskinner til bakken. Mens du programmerte Teensy, kom 5V fra USB -en, men når den kjører alene, kommer strømmen fra den bærbare datamaskinen. Da jeg koblet 7805 -regulatoren direkte til 19V, ble det VIRKELIG varmt, så jeg satte inn et motstandsnettverk for å begrense inngangsspenningen og strømmen til regulatoren. Dette var en kludge, men nå er alt på en håndterlig temperatur.

Trinn 4: Koble den sammen

Koble det sammen
Koble det sammen
Koble det sammen
Koble det sammen

Teensy var ikke noe problem. Den kommer med pinner, slik at du kan koble den direkte til brødbrettet.

Jeg bestemte meg for å fargekode ledningene til dørstreken med røde (+) og svarte (-) banankabler fra laboratoriets ødelagte deleboks. Det var noen plugger hakket av ledningene deres, så jeg dremeled bort litt plast for å avsløre et loddepunkt. Jeg liker veldig godt hvordan laboratoriebananplugger kan plugges inn i hverandre. Jeg brukte Apples telefonkabel til å koble knappene og statuslyset utenfor rommet til Teensy inne. Siden den ene siden var ødelagt, hakket jeg av den enden og loddet i firepinnerhodet og forseglet den med varmt lim. Dette plugget fint inn i brødbrettet mitt. Siden jeg lot pluggen stå på gikk inn i modulkontakten jeg reddet fra ruteren. Alle fire ledninger ble brukt (GND, statuslys, start/stopp -knapp, kodeknapp). Hvis du ikke har lagt merke til det, liker jeg plugger og kontakter. Strømstenen koblet til strømkontakten som jeg feide fra ruteren. Å tre ledningene gjennom veggrørene var ikke så vanskelig på grunn av den fleksible griperen. Det reddet virkelig dagen min.

Trinn 5: Kode

Kode
Kode
Kode
Kode

Jeg har prøvd å kommentere koden min. Husk at dette er 1.0 programvare, noe som betyr at den ikke er feilfri. ## OPERATION ## 1. Trykk på start/stopp-knappen for å signalisere at du er klar til å begynne kodeinnmatingen. Statuslampen begynner å blinke sakte. 2. Trykk på koden på kodeknappen. Statuslampen blinker med 120 BPM, så du kan bruke dette som metronom hvis du vil. Imidlertid vil kryptaprogrammet måle pulslengdene i forhold til hverandre proporsjonalt, så du kan også bruke ditt eget tempo. Bare vær sikker på at du er nøyaktig nok! 3. Når koden er angitt, trykker du på start/stopp -knappen igjen. Programmet vil da avgjøre om du skal slippe deg inn. Siden mennesker ikke er veldig nøyaktige tidsholdere (din er det ikke), setter jeg toleranseforholdet til +/- 30%. Det betyr at slaglengdene kan være unøyaktige med det beløpet, og fortsatt passere mønstring. Dette er godt nok til å se forskjell på ganske lignende låter. Det er en liten mengde vanskelig tilgjengelig overlapping mellom dobbel og trippel lengde, men koden er fortsatt ganske vanskelig å bryte. For å låse opp døren må slagene være i riktige proporsjoner til hverandre (+/- toleranseforholdet), og antall slag må være riktige. Hvis det er angitt et ugyldig passord, venter programmet i noen sekunder mens det ignorerer brukerinndata. Statuslampen blinker også raskt. Hvis den riktige koden skrives inn, tennes statuslampen jevnt og døren låses opp i 8 sekunder. ## BRUKERKONFIGURASJON ## Nøkkelen er lagret i en matrise som denne: #define keylength 5 const int key = {2, 1, 3, 3, 3}; // "Gratulerer med dagen" Matrisen lagrer hvor lang tid det skjer MELLOM taktene. Så hvis passordet ditt har seks notater som "Gratulerer med dagen", bør det være fem elementer i matrisen. Hvis passordet ditt er veldig langt og du har mer enn 16 slag i det (veldig vanskelig, jeg anbefaler det ikke), må du øke tallet som er definert på denne linjen: #define inputCodeLength 16 ## RESTEN AV KODEN # # Jeg var nysgjerrig på avbrudd, så jeg hadde knappene mine til å utløse avbrudd. For å gjøre disse avbruddene enkle å bruke, lot jeg avbryterbehandlerne se etter bestemte funksjonspekere. Hvis pekeren ikke er satt til NULL, aktiveres funksjonen den peker på. Disse er satt med de forskjellige "modusinnstillings" -funksjonene inne i cryptap.c. Jeg gjorde et forsøk på å unngå bufferoverløp ved å angi et maksimalt antall innførte pulser. Hvis det maksimale antallet pulser legges inn, starter programmet umiddelbart passordanalyse og bestemmer om døren skal låses opp. Jeg håper mine kommentarer i koden hjelper. ## BUGS ## Jeg prøvde å fjerne USB -feilsøkingskoden, men koden fungerer ikke hvis jeg gjør det. Så jeg la igjen i usb_init () og de forskjellige print () -uttalelsene. Jeg ville sette pris på om noen kunne fjerne dem og fortsatt få programmet til å fungere. Enda bedre hvis de kan forklare hvorfor det ikke fungerte for meg. Umiddelbart etter at den ble programmert, godtar Teensy noen ganger ikke kodeinngang. For å løse dette, slå av kretsen.

Anbefalt: