Kazalo:

Cryptap: Zaklepanje vrat na osnovi ritma: 5 korakov
Cryptap: Zaklepanje vrat na osnovi ritma: 5 korakov

Video: Cryptap: Zaklepanje vrat na osnovi ritma: 5 korakov

Video: Cryptap: Zaklepanje vrat na osnovi ritma: 5 korakov
Video: 5 жутких историй ужасов в детском саду 2024, November
Anonim
Cryptap: Zaklepanje vrat na osnovi ritma
Cryptap: Zaklepanje vrat na osnovi ritma
Cryptap: Zaklepanje vrat na osnovi ritma
Cryptap: Zaklepanje vrat na osnovi ritma
Cryptap: Zaklepanje vrat na osnovi ritma
Cryptap: Zaklepanje vrat na osnovi ritma

Navdihnjen z več mehanizmi za odklepanje vrat, ki sem jih videl na hackaday.com, sem se odločil, da ga ustvarim sam. Ta ima vmesnik z dvema gumboma; eno za zagon in konec predložitve gesla in eno za dejansko dotaknitev ritma, ki je vaše geslo. Obstaja tudi lučka stanja. To sem lahko poceni zgradil z deli, ki sem jih pobral v zadnjih nekaj mesecih. Edino, kar sem moral plačati, je bil sam mikrokrmilnik, ki je stal 21 USD (https://www.pjrc.com/teensy/), in nekaj žice za obešanje slik, ki sem jo imel od prej.

Zelo zabavno je, če se dotaknete teme Vojne zvezd ali česa podobnega, da vstopite v svojo sobo. Zdaj mi ni treba skrbeti, da se bom spet zaprl iz sobe! Poleg tega se počuti dobro in čudaško.

Korak: Deli in orodja

Deli in orodja
Deli in orodja
Deli in orodja
Deli in orodja

Za Teensy sem se odločil, ker je to moj prvi mikrokrmilnik in programerja še nimam. Za namestitev Teensyja potrebujete le kabel USB A-miniB in brezplačno programsko opremo, združljivo z Mac/Windows/Linux. Prav tako je zelo enostavno naložiti šestnajstiško datoteko; samo prevedite in pritisnite gumb na Teensyju.

Cena tega projekta je zame znašala 21 USD plus žica za obešanje slik. Deli z ulice so prihajali iz perkolatorja za kavo (rele, LED, kondenzator) in usmerjevalnika (LED, modularna vtičnica, vtičnica, kondenzatorji). Brezplačni vzorci so bili 580-voltni regulator 7805, gumbi in stikalo. V mojem EE laboratoriju sem našel tudi veliko stvari v škatli "lomljeni deli": konektorje in kabel za banane, žico, gonilnik sn754410, štiristopenjsko glavo in upore. Okrog sem imel dodatni polnilec za prenosni računalnik, ki sem ga uporabljal za napajanje, in modelov kabel Apple, katerega jeziček je bil pokvarjen. Druga strojna oprema: stenska plošča. Uporabil sem pištolo za vroče lepilo, spajkalnik, datoteko za iglo in vrtalnik, ki so precej standardni. Najbolj nenavadno stvar, ki sem jo uporabil, je dolgo, prilagodljivo grablje.

2. korak: Že obstoječa strojna oprema

Že obstoječa strojna oprema
Že obstoječa strojna oprema
Že obstoječa strojna oprema
Že obstoječa strojna oprema
Že obstoječa strojna oprema
Že obstoječa strojna oprema
Že obstoječa strojna oprema
Že obstoječa strojna oprema

Imel sem veliko srečo, da je bilo že toliko nameščenega. Moja soba je dostopna ADA in že so bile nameščene različne cevi, električne omarice in električna vrata. Ko sem iz radovednosti odstranil vrata, sem ugotovil, da niso povezani. Od vrat je udarila cev na prazno stensko ploščo v moji sobi, od tam pa še ena cev na prazno stensko ploščo.

Udarna vrata pravijo, da za delovanje potrebuje 24V@3A, vendar sem se lahko rešil z 19V, 7.9A napajanjem, ki sem ga imel. Zadrga na vratih je bila polarizirana, zato se prepričajte, da imate pravilno polariteto!

3. korak: Vezja

Vezja
Vezja
Vezja
Vezja
Vezja
Vezja
Vezja
Vezja

Za nadzor udarca na vratih sem uporabil rele, ki sem ga našel v kompresorju za kavo. Ta rele je za pogon potreboval več kot 5 V TTL, zato je bil sn754410 uporabljen za prevod TTL v 19 V, ki je poganjal rele. Sn754410 je res štirikolesni pol-H gonilnik, zato sem zapravil 3/4 čipa, vendar nisem imel nobenih tranzistorjev za moč, zato sem to uporabil.

Čip sn754410 ima dva VCC zatiča, enega za 5V, drugega za katero koli napetost, ki bi jo radi dobili, kar je zame bilo 19V. To je res kul čip. S tem lahko neposredno poganjate motorje in releje, saj lahko preklopi 1A na četrtinski čip in ima vgrajene zaščitne diode. Oglejte si podatkovni list. V svojem vezju sem sn754410 priključil neposredno na izhodni pin mojega Teensyja. Gumbi so povezani kot aktivni-nizki, kar je zelo pogosto za mikrokrmilnike. Neposredno so povezani s Teensyjem, kar pomeni, da se moram ločiti od programske opreme. Lučka stanja je priključena na Teensy preko 1K ohmskega upora; nič posebnega. Vezje je delovalo brez kondenzatorjev, vendar sem jih vseeno vstavil za vsak slučaj. Tako na 19V kot na 5V napajalnih tirnicah so pritrjene zaščitne kapice. Med programiranjem Teensyja je 5V prihajalo iz USB -ja, ko pa deluje samostojno, napajanje prihaja iz napajalnika prenosnika. Ko sem regulator 7805 priključil neposredno na 19V, se je res segrelo, zato sem v mrežo uporov vstavil omejevanje vhodne napetosti in toka na regulator. To je bil klub, zdaj pa je vse na obvladljivi temperaturi.

4. korak: Povežite ga skupaj

Ožičite skupaj
Ožičite skupaj
Ožičite skupaj
Ožičite skupaj

Teensy ni bil problem. Na voljo je z zatiči, zato ga lahko priključite neposredno na mizo.

Odločil sem se, da bom barvno označil žice do udarca vrat z rdečimi (+) in črnimi (-) bananastimi kabli iz škatle za pokvarjene dele laboratorija. Z žic so jim odrezali nekaj vtičev, zato sem odstranil nekaj plastike, da sem izpostavil mesto spajkanja. Zelo mi je všeč, kako se lahko laboratorijski čepi banan vtaknejo drug v drugega. Appleov telefonski kabel sem uporabil za povezavo gumbov in lučke stanja zunaj sobe z notranjostjo Teensy. Ker je bila ena stran zlomljena, sem odsekal ta konec in ga spajal v štirinožni glavi, ter ga zatesnil z vročim lepilom. To se mi je lepo priklopilo na mizo. Stran, na kateri sem pustil vtič, je šla v modularni priključek, ki sem ga rešil iz usmerjevalnika. Uporabljene so bile vse štiri žice (GND, lučka stanja, gumb za zagon/zaustavitev, kodni gumb). Če niste opazili, so mi všeč vtiči in priključki. Električna opeka, povezana z vtičnico, ki sem jo potegnil z usmerjevalnika. Navoj žic skozi stenske cevi ni bil pretežak zaradi fleksibilnega oprijema. To mi je res rešilo dan.

5. korak: Koda

Koda
Koda
Koda
Koda

Poskušal sem komentirati svojo kodo. Ne pozabite, da je to programska oprema 1.0, kar pomeni, da ni brez napak. ## DELOVANJE ## 1. Pritisnite gumb za zagon/ustavitev, da označite, da ste pripravljeni na začetek vnosa kode. Lučka stanja začne počasi utripati. 2. Dotaknite se kode na gumbu za kodo. Lučka stanja bo utripala pri 120 BPM, zato jo lahko uporabite kot metronom, če želite. Vendar bo program cryptap sorazmerno meril dolžine impulzov med seboj, zato lahko uporabite tudi svoj tempo. Prepričajte se, da ste dovolj natančni! 3. Ko vnesete kodo, znova pritisnite gumb za zagon/ustavitev. Program se bo nato odločil, ali vas bo spustil. Ker ljudje niso zelo natančni časovniki (vaši res ne), sem tolerančno razmerje nastavil na +/- 30%. To pomeni, da so lahko dolžine utripov za to količino netočne in še vedno zbirajo. To je dovolj dobro, da pokaže razliko med precej podobnimi melodijami. Med dvojnimi in trojnimi dolžinami je majhno število težko dostopnih prekrivanj, vendar je kodo še vedno precej težko prekiniti. Za odklepanje vrat morajo biti udarci v pravilnem razmerju (+/- tolerančno razmerje), število udarcev pa pravilno. Če vnesete neveljavno geslo, program počaka nekaj sekund in ne upošteva vnosa uporabnika. Hitro bo utripala tudi lučka stanja. Če vnesete pravilno kodo, se bo lučka stanja stalno prižgala in vrata se bodo odklenila za 8 sekund. ## USER CONFIGURATION ## Ključ je shranjen v matriki, kot je ta: #define keylength 5 const int key = {2, 1, 3, 3, 3}; // "Vesel rojstni dan tebi" Niz shranjuje čas, ki se zgodi MED utripi. Torej, če ima vaše geslo ŠEST zapiskov, kot je »Vesel rojstni dan«, mora biti v matriki pet elementov. Če je vaše geslo res dolgo in imate v njem več kot 16 utripov (res težko, tega ne priporočam), morate povečati število, določeno v tej vrstici: #define inputCodeLength 16 ## REST OF THE CODE # # Zanimalo me je glede prekinitev, zato so mi gumbi sprožili prekinitve. Da bi bile te prekinitve enostavne za uporabo, sem svoje vodnike prekinitev preveril za določene kazalce funkcij. Če kazalec ni nastavljen na NULL, se prikliče funkcija, na katero kaže. Te so nastavljene z različnimi funkcijami "nastavitev načina" znotraj cryptap.c. Poskušal sem se izogniti prelivanju medpomnilnika z nastavitvijo največjega števila vnesenih impulzov. Če je vneseno največje število impulzov, program takoj začne analizo gesla in se odloči, ali bo odklenil vrata. Upam, da bodo moji komentarji v kodi v pomoč. ## BUGS ## Poskušal sem odstraniti kodo za odpravljanje napak USB, vendar koda v tem primeru ne bo delovala. Tako sem pustil v usb_init () in različnih stavkih print (). Vesela bi bila, če bi jih kdo odstranil in bi program še deloval. Še bolje, če mi lahko pojasnijo, zakaj mi ni uspelo. Takoj po programiranju Teensy včasih ne sprejema vnosa kode. Če želite to rešiti, vklopite vezje z močjo.

Priporočena: