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, Srpanj
Anonim
Cryptap: Brava na bazi ritma
Cryptap: Brava na bazi ritma
Cryptap: Brava na bazi ritma
Cryptap: Brava na bazi ritma
Cryptap: Brava na bazi ritma
Cryptap: Brava na bazi ritma

Inspiriran s nekoliko mehanizama za otključavanje vrata koje sam vidio na hackaday.com, odlučio sam stvoriti jedan sam. Ovaj ima sučelje s dva gumba; jedan za početak i završetak slanja lozinke, a drugi za stvarno dodirivanje ritma vaše lozinke. Tu je i svjetlo statusa. Uspio sam izgraditi ovo stvarno jeftino koristeći dijelove koje sam očistio u posljednjih nekoliko mjeseci. Jedino što sam morao platiti bio je sam mikrokontroler, koji je bio 21 USD (https://www.pjrc.com/teensy/), i neka žica za vješanje slika koju sam imao od ranije.

Jako je zabavno dodirnuti temu Star Wars ili nešto slično da uđete u moju sobu. Ne moram se brinuti da ću se opet 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

Odabrao sam Teensy jer mi je ovo prvi mikrokontroler, a još nemam programera. Teensyju je za instalaciju potreban samo A-miniB USB kabel i besplatni softver, kompatibilan s Mac/Windows/Linux. Također, vrlo je jednostavno učitati hex datoteku; samo kompajlirajte i pritisnite gumb na Teensyju.

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, gumbi i prekidač. Također sam našao mnogo stvari u kutiji "slomljenih dijelova" u svom EE laboratoriju: konektori i kabel za banane, žica, sn754410 upravljački program, četveroiglično zaglavlje i otpornici. 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ć bilo toliko instalirano. Moja soba je dostupna ADA-i, a već su bile instalirane razne cijevi, električne kutije i električni udar na vratima. 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 od tamo 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 s 19V napajanjem od 7.9A koje sam imao. Udarac na vratima je polariziran, stoga provjerite je li polaritet ispravan!

Korak 3: Krugovi

Krugovi
Krugovi
Krugovi
Krugovi
Krugovi
Krugovi
Krugovi
Krugovi

Za kontrolu udarca na vratima upotrijebio sam relej koji sam pronašao u perkolatoru za kavu. Ovom releju je za pogon bilo potrebno više od 5 V TTL, pa je sn754410 korišten za prevođenje TTL -a na 19 V, što je pokretalo relej. Sn754410 je doista 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 stvarno cool čip. Ovo možete koristiti za izravno pokretanje motora i releja jer može prebacivati 1A po tromjesečnom čipu i ima ugrađene zaštitne diode. Pogledajte podatkovnu tablicu. U svom sam krugu spojio sn754410 izravno na izlazni pin mojeg Teensyja. Gumbi su povezani kao aktivni-niski, što je vrlo uobičajeno za mikrokontrolere. Izravno su povezani s Teensyjem, što znači da se moram osloboditi softvera. Svjetlo statusa je spojeno na Teensy preko 1K ohmskog otpornika; ništa posebno. Krug je radio bez kondenzatora, ali svejedno sam ih stavio za svaki slučaj. Na uzemljenim vodilicama od 19V i 5V postoje zaštitne kape na masi. Tijekom programiranja Teensyja 5V je dolazilo s USB -a, ali kada radi samostalno, napajanje dolazi iz bloka za prijenosno računalo. Kad sam regulator 7805 spojio izravno na 19V, stvarno se zagrijalo, pa sam stavio mrežu otpornika kako bih ograničio ulazni napon i struju na regulator. Ovo je bio klub, ali sada je sve na prihvatljivoj temperaturi.

Korak 4: Ožičite ga zajedno

Ožičite zajedno
Ožičite zajedno
Ožičite zajedno
Ožičite zajedno

Teensy nije bio problem. Isporučuje se s iglama pa ga možete priključiti izravno u ploču za kruh.

Odlučio sam bojom označiti žice do udaraca na vratima crvenim (+) i crnim (-) kablovima od banane iz kutije s polomljenim dijelovima laboratorija. Odrezani su im neki utikači sa žica, pa sam skinuo malo plastike kako bih izložio mjesto lemljenja. Jako 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 sobe s Teensyjem iznutra. Budući da je jedna strana bila slomljena, odrezao sam taj kraj i lemio ga u četveropolnu zaglavlju, zalijepivši ga vrućim ljepilom. Ovo je lijepo spojeno na moju ploču. Strana na kojoj sam ostavio utikač ušla je u modularnu utičnicu koju sam spasio s usmjerivača. Korištene su sve četiri žice (GND, svjetlo statusa, tipka start/stop, tipka koda). U slučaju da niste primijetili, ja volim utikače i konektore. Električna cigla spojena na utičnicu koju sam povukao s usmjerivača. Provlačenje žica kroz zidne cijevi nije bilo previše teško zbog fleksibilne hvataljke. To mi je stvarno spasilo dan.

Korak 5: Kodirajte

Kodirati
Kodirati
Kodirati
Kodirati

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 gumb 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 gumbu za kôd. Svjetlo statusa će treperiti pri 120 BPM, pa ga možete koristiti kao metronom ako želite. Međutim, program cryptap proporcionalno će mjeriti međusobno duljinu impulsa, pa možete koristiti i svoj tempo. Samo provjerite jeste li dovoljno točni! 3. Kada je unos koda završen, ponovno pritisnite tipku start/stop. Program će tada odlučiti hoćete li vas pustiti unutra. Budući da ljudi nisu baš precizni čuvari vremena (vaši uistinu nisu), postavio sam omjer tolerancije na +/- 30%. To znači da duljine otkucaja mogu biti netočne za taj iznos, 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 dvostrukih i trostrukih duljina, ali kôd je još uvijek prilično teško probiti. Za otključavanje vrata otkucaji moraju biti u ispravnom omjeru (+/- 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đer će brzo zasvijetliti svjetlo statusa. Ako se unese točan kôd, lampica statusa stalno će se paliti 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 sprema količinu vremena koja se dogodi IZMEĐU otkucaja. Dakle, ako vaša lozinka ima ŠEST bilješki poput "Sretan ti rođendan", u nizu bi trebalo biti pet elemenata. Ako je vaša lozinka zaista dugačka i imate više od 16 otkucaja u njoj (jako teško, ne preporučujem je), morate povećati broj definiran u ovom retku: #define inputCodeLength 16 ## OSTALI KOD # # Bio sam znatiželjan u vezi s prekidima pa su mi gumbi aktivirali prekide. Kako bi ti prekidi bili laki za korištenje, rukovatelje prekidima sam provjerio za određene pokazivače funkcija. 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 međuspremnika 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 pogrešaka, ali kôd neće uspjeti ako to učinim. Dakle, ostavio sam u usb_init () i razne ispise 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 napajanja.

Preporučeni: