Sadržaj:

Cryptap: Zaključavanje vrata zasnovano na ritmu: 5 koraka
Cryptap: Zaključavanje vrata zasnovano na ritmu: 5 koraka

Video: Cryptap: Zaključavanje vrata zasnovano na ritmu: 5 koraka

Video: Cryptap: Zaključavanje vrata zasnovano na ritmu: 5 koraka
Video: Часть 07 — Аудиокнига «Моби Дик» Германа Мелвилла (гл. 078-088) 2024, Juli
Anonim
Cryptap: Brava za vrata zasnovana na ritmu
Cryptap: Brava za vrata zasnovana na ritmu
Cryptap: Brava za vrata zasnovana na ritmu
Cryptap: Brava za vrata zasnovana na ritmu
Cryptap: Brava za vrata zasnovana na ritmu
Cryptap: Brava za vrata zasnovana na ritmu

Inspirisan nekoliko mehanizama za otključavanje vrata koje sam video na hackaday.com, odlučio sam da ga napravim sam. Ovaj ima interfejs sa dva tastera; jedan za pokretanje i završavanje podnošenja lozinke, i jedan za stvarno dodirivanje ritma vaše lozinke. Tu je i lampica statusa. Uspio sam izgraditi ovo zaista jeftino koristeći dijelove koje sam očistio u posljednjih nekoliko mjeseci. Jedino što sam morao platiti bio je sam mikrokontroler, koji je koštao 21 USD (https://www.pjrc.com/teensy/), i neka žica za vješanje slika koju sam imao od ranije.

Zabavno je dodirnuti temu Star Wars ili nešto drugo da uđete u moju sobu. Ne moram se brinuti da ću se ponovo zaključati iz sobe! Osim toga, osjeća se dobro i štreberski.

Korak 1: Dijelovi i alati

Dijelovi i alati
Dijelovi i alati
Dijelovi i alati
Dijelovi i alati

Izabrao sam Teensy jer je ovo moj prvi mikrokontroler, a još nemam programera. Teensyju je za instaliranje potreban samo A-miniB USB kabel i besplatni softver, kompatibilan s Mac/Windows/Linux. Takođe, zaista je lako učitati heksadecimalnu datoteku; samo kompajlirajte i pritisnite dugme na Teensy -u.

Cijena ovog projekta za mene je bila 21 USD, plus žica za vješanje slika. Dijelovi s ulice dolazili su iz perkolatora za kavu (relej, LED, kondenzator) i usmjerivača (LED, modularna utičnica, utičnica za napajanje, kondenzatori). Besplatni uzorci bili su 7805 regulator od 5 volti, dugmad i prekidač. U kutiji "slomljeni dijelovi" u mojoj EE laboratoriji također sam pronašao mnogo toga: konektore za banane i kabel, žicu, upravljački program sn754410, četveroiglični zaglavlje i otpornike. Oko mene je ležao dodatni punjač za prijenosno računalo koji sam koristio za napajanje i Appleov modemski kabel čiji je jezičak polomljen. Ostali hardver: zidna ploča. Koristio sam pištolj za vruće ljepilo, lemilicu, turpiju za iglu i električnu bušilicu koji su prilično standardni. Najneobičnija stvar koju sam koristio bio je dugačak, fleksibilan alat za hvatanje.

Korak 2: Već postojeći hardver

Već postojeći hardver
Već postojeći hardver
Već postojeći hardver
Već postojeći hardver
Već postojeći hardver
Već postojeći hardver
Već postojeći hardver
Već postojeći hardver

Imao sam veliku sreću što je već toliko instalirano. Moja soba je dostupna ADA-i, a već su bile instalirane razne cijevi, električne kutije i električni štitnik za vrata. Kad sam iz znatiželje uklonio štrajk na vratima, otkrio sam da nisu povezani. Bila je cijev od udara vrata do prazne zidne ploče u mojoj sobi, a druga cijev odatle do prazne zidne ploče izvana.

Udarac na vratima kaže da mu je za rad potrebno 24V@3A, ali uspio sam se snaći sa 19V, 7.9A napajanjem koje sam imao. Udarac na vratima je polarizovan, pa proverite da li je polaritet ispravan!

Korak 3: Krugovi

Kola
Kola
Kola
Kola
Kola
Kola
Kola
Kola

Za kontrolu udarca na vratima upotrijebio sam relej koji sam pronašao u perkolatoru za kavu. Ovom releju je bilo potrebno više od 5 V TTL za pogon, pa je sn754410 korišten za prevođenje TTL -a na 19 V, što je pokretalo relej. Sn754410 je zaista quad half-H driver, pa sam trošio 3/4 čipa, ali nisam imao tranzistore za napajanje, pa sam to i koristio.

Čip sn754410 ima dva VCC pina, jedan za 5V, drugi za bilo koji napon koji želite izaći, što je za mene bilo 19V. To je zaista kul čip. Ovo možete koristiti za izravno pokretanje motora i releja, jer može mijenjati 1A po kvartalnom čipu i ima ugrađene zaštitne diode. Pogledajte tehnički list. U svom krugu spojio sam sn754410 direktno na izlazni pin moje Teensy. Tasteri su povezani kao aktivni-niski, što je vrlo uobičajeno za mikrokontrolere. Oni su izravno povezani s Teensy -jem, što znači da se moram osloboditi softvera. Statusno svjetlo je spojeno na Teensy preko 1K ohmskog otpornika; ništa posebno. Krug je radio bez kondenzatora, ali sam ih ipak stavio za svaki slučaj. Zaštitni poklopci na 19V i 5V strujnim vodilicama imaju masu. Dok je programirao Teensy, 5V je dolazilo sa USB -a, ali kada radi samostalno, napajanje dolazi iz bloka za napajanje laptopa. Kad sam regulator 7805 spojio izravno na 19 V, postalo je STVARNO vruće, pa sam stavio mrežu otpornika da ograničim ulazni napon i struju na regulator. Ovo je bio klub, ali sada je sve na prihvatljivoj temperaturi.

Korak 4: Povežite ga zajedno

Ožičenje zajedno
Ožičenje zajedno
Ožičenje zajedno
Ožičenje zajedno

Teensy nije bio problem. Dolazi s iglama pa ga možete priključiti izravno na matičnu ploču.

Odlučio sam bojom označiti žice do udaraca na vratima crvenim (+) i crnim (-) banana kablovima iz kutije za slomljene dijelove laboratorija. Odrezani su im neki utikači sa žica, pa sam skinuo malo plastike kako bih izložio mjesto lemljenja. Zaista mi se sviđa kako se laboratorijski čepovi za banane mogu spojiti jedan u drugi. Koristio sam Appleov telefonski kabel za povezivanje gumba i statusnog svjetla izvan prostorije s Teensyjem iznutra. Pošto je jedna strana bila slomljena, odsekao sam taj kraj i lemio ga u četvoro iglu, zapečativši ga vrelim lepkom. Ovo je lijepo spojeno na moju ploču. Strana na kojoj sam ostavio utikač ušla je u modularnu utičnicu koju sam izvukao iz usmjerivača. Korištene su sve četiri žice (GND, lampica statusa, tipka start/stop, tipka koda). U slučaju da niste primijetili, sviđaju mi se utikači i konektori. Električna cigla spojena na utičnicu za napajanje koju sam izvukao s usmjerivača. Provlačenje žica kroz zidne cijevi nije bilo previše teško zbog fleksibilne hvataljke. To mi je zaista spasilo dan.

Korak 5: Kodirajte

Kod
Kod
Kod
Kod

Pokušao sam komentirati svoj kôd. Imajte na umu da je ovo softver 1.0, što znači da ne sadrži greške. ## OPERACIJA ## 1. Pritisnite dugme za pokretanje/zaustavljanje da biste signalizirali da ste spremni za početak unosa koda. Lampica statusa počinje polako treptati. 2. Dodirnite svoj kod na dugmetu za kôd. Lampica statusa će treptati pri 120 otkucaja u minuti, pa ga možete koristiti kao metronom ako želite. Međutim, program za kriptiranje proporcionalno će mjeriti međusobno duljinu impulsa, tako da možete koristiti i svoj tempo. Samo se uverite da ste dovoljno tačni! 3. Kada je unos koda završen, ponovo pritisnite dugme start/stop. Program će tada odlučiti hoćete li vas pustiti unutra. Budući da ljudi nisu baš precizni čuvari vremena (vaši zaista nisu), postavio sam omjer tolerancije na +/- 30%. To znači da duljine otkucaja mogu biti neprecizne za tu količinu, a ipak proći. Ovo je dovoljno dobro da pokaže razliku između prilično sličnih melodija. Postoji mala količina teško dostupnih preklapanja između bitova dvostruke i trostruke dužine, ali kôd je i dalje prilično teško probiti. Da biste otključali vrata, otkucaji moraju biti u pravilnim omjerima (+/- omjer tolerancije), a broj otkucaja mora biti točan. Ako se unese nevažeća lozinka, program čeka nekoliko sekundi zanemarujući svaki unos korisnika. Takođe će brzo treptati lampica statusa. Ako se unese ispravan kôd, lampica statusa će se stalno svijetliti i vrata će se otključati na 8 sekundi. ## KORISNIČKA KONFIGURACIJA ## Ključ je pohranjen u nizu poput ovog: #define keylength 5 const int key = {2, 1, 3, 3, 3}; // "Sretan ti rođendan" Niz pohranjuje vrijeme koje se dogodi IZMEĐU otkucaja. Dakle, ako vaša lozinka sadrži ŠEST bilješki poput "Sretan ti rođendan", u nizu bi trebalo biti pet elemenata. Ako je vaša lozinka zaista dugačka i u njoj imate više od 16 otkucaja (jako teško, ne preporučujem je), morate povećati broj definiran u ovom retku: #define inputCodeLength 16 ## OSTATAK KODA # # Bio sam znatiželjan u vezi sa prekidima, pa sam imao dugmad da aktiviraju prekide. Da bi ti prekidi bili laki za upotrebu, rukovatelji prekidima su provjerili određene pokazivače na funkcije. Ako pokazivač nije postavljen na NULL, poziva se funkcija na koju pokazuje. Oni su postavljeni s različitim funkcijama "podešavanja načina rada" unutar cryptap.c. Potrudio sam se izbjeći prelijevanje bafera postavljanjem maksimalnog broja ulaznih impulsa. Ako se unese najveći broj impulsa, program odmah započinje analizu lozinke i odlučuje hoće li otključati vrata. Nadam se da će mi komentari u kodu pomoći. ## BUGS ## Pokušao sam ukloniti USB kod za otklanjanje grešaka, ali kod neće uspjeti ako to učinim. Dakle, ostavio sam u usb_init () i različite naredbe print (). Bio bih zahvalan ako bi ih netko mogao ukloniti, a da program i dalje radi. Još bolje ako mogu objasniti zašto mi to nije uspjelo. Odmah nakon programiranja, Teensy ponekad ne prihvaća unos koda. Da biste to riješili, uključite krug napajanjem.

Preporučuje se: