Turinys:

„Cryptap“: ritmu pagrįstas durų užraktas: 5 žingsniai
„Cryptap“: ritmu pagrįstas durų užraktas: 5 žingsniai

Video: „Cryptap“: ritmu pagrįstas durų užraktas: 5 žingsniai

Video: „Cryptap“: ritmu pagrįstas durų užraktas: 5 žingsniai
Video: SnowRunner Wolf Pack REVIEW: A HOWLING DLC success? 2024, Liepa
Anonim
„Cryptap“: ritmu pagrįsta durų spyna
„Cryptap“: ritmu pagrįsta durų spyna
„Cryptap“: ritmu pagrįsta durų spyna
„Cryptap“: ritmu pagrįsta durų spyna
„Cryptap“: ritmu pagrįsta durų spyna
„Cryptap“: ritmu pagrįsta durų spyna

Įkvėptas kelių durų atrakinimo mechanizmų, kuriuos mačiau hackaday.com, nusprendžiau sukurti vieną. Šis turi dviejų mygtukų sąsają; vienas - pradėti ir užbaigti slaptažodžio pateikimą, o kitas - iš tikrųjų bakstelėti ritmu, kuris yra jūsų slaptažodis. Taip pat yra būsenos lemputė. Aš galėjau tai padaryti tikrai pigiai, naudodamas dalis, kurias per pastaruosius kelis mėnesius išnaikinau. Vieninteliai dalykai, už kuriuos turėjau sumokėti, buvo pats mikrokontroleris, kurio kaina buvo 21 USD (https://www.pjrc.com/teensy/), ir keletas pakabinamų laidų, kuriuos turėjau iš anksčiau.

Labai smagu paspausti „Žvaigždžių karų“temą ar kažką įeiti į mano kambarį. Dabar aš neturiu jaudintis, kad vėl uždarysiu save iš savo kambario! Be to, jaučiasi gerai ir šauniai.

1 žingsnis: dalys ir įrankiai

Dalys ir įrankiai
Dalys ir įrankiai
Dalys ir įrankiai
Dalys ir įrankiai

Aš pasirinkau „Teensy“, nes tai mano pirmasis mikrovaldiklis, o programuotojo dar neturiu. „Teensy“reikalingas tik „A-miniB“USB kabelis ir nemokama programinė įranga, suderinama su „Mac“/„Windows“/„Linux“. Be to, labai lengva įkelti šešioliktainį failą; tiesiog sudarykite ir paspauskite „Teensy“mygtuką.

Šio projekto kaina man buvo 21 USD, plius paveikslo kabinimo viela. Gatvės dalys buvo iš kavos perkoliatoriaus (relė, LED, kondensatorius) ir maršrutizatoriaus (LED, modulinis lizdas, maitinimo lizdas, kondensatoriai). Nemokami pavyzdžiai buvo 7805 5 voltų reguliatorius, mygtukai ir jungiklis. Aš taip pat radau daug daiktų savo EE laboratorijos „sugedusių dalių“dėžutėje: bananų jungtys ir kabelis, laidas, „sn754410“tvarkyklė, keturių kontaktų antraštė ir rezistoriai. Aplinkui gulėjau papildomas nešiojamojo kompiuterio įkroviklis, kurį naudojau maitinimui, ir „Apple“modemo kabelis, kurio skirtukas buvo sulaužytas. Kita įranga: sieninė plokštė. Aš naudojau karšto klijų pistoletą, lituoklį, adatų dildę ir elektrinį grąžtą, kurie yra gana standartiniai. Labiausiai neįprastas dalykas, kurį naudojau, buvo ilgas, lankstus griebtuvo įrankis.

2 žingsnis: esama aparatinė įranga

Esama aparatinė įranga
Esama aparatinė įranga
Esama aparatinė įranga
Esama aparatinė įranga
Esama aparatinė įranga
Esama aparatinė įranga
Esama aparatinė įranga
Esama aparatinė įranga

Man labai pasisekė, kad jau buvo tiek daug įdiegta. Mano kambarys yra prieinamas ADA, ten jau buvo sumontuoti įvairūs vamzdžiai, elektros dėžės ir elektrinis durų smūgis. Iš smalsumo pašalinęs durų smūgį, sužinojau, kad jis nebuvo prijungtas. Mano kambario viduje buvo vamzdis nuo durų smūgio iki tuščios sienos plokštės, o kitas vamzdis iš ten į tuščią sienų plokštę lauke.

Durų smūgis sako, kad jam reikia 24 V@3A, tačiau man pavyko išsiversti turint 19 V, 7,9 A maitinimo šaltinį. Durų smūgis buvo poliarizuotas, todėl įsitikinkite, kad poliškumas yra teisingas!

3 žingsnis: grandinės

Grandinės
Grandinės
Grandinės
Grandinės
Grandinės
Grandinės
Grandinės
Grandinės

Norėdami kontroliuoti durų smūgį, aš panaudojau relę, kurią radau kavos perkoliatoriuje. Norint valdyti šią relę, reikėjo daugiau nei 5 V TTL, todėl sn754410 buvo naudojamas TTL išversti į 19 V, o tai pavertė relę. „SN754410“iš tikrųjų yra keturių pusiau H tvarkyklių vairuotojas, todėl eikvojau 3/4 lusto, tačiau neturėjau jokių maitinimo tranzistorių, todėl tai ir naudojau.

„SN754410“mikroschemoje yra du VCC kaiščiai, vienas skirtas 5 V, kitas - bet kokiai įtampai, kurią norite išeiti, o man tai buvo 19 V. Tai tikrai kietas lustas. Tai galite naudoti tiesiogiai varikliams ir relėms valdyti, nes jis gali perjungti 1A per ketvirtį mikroschemą ir turi įmontuotus apsaugos diodus. Pažvelkite į duomenų lapą. Savo grandinėje aš prijungiau sn754410 tiesiai prie „Teensy“išvesties kaiščio. Mygtukai yra prijungti kaip aktyvūs ir žemi, o tai labai įprasta mikrovaldikliams. Jie yra tiesiogiai prijungti prie „Teensy“, o tai reiškia, kad turiu panaikinti programinę įrangą. Būsenos lemputė prijungta prie „Teensy“per 1K omo rezistorių; nieko ypatingo. Grandinė veikė be kondensatorių, bet aš juos įdėjau bet kokiu atveju. 19V ir 5V maitinimo bėgiai turi apsauginius dangtelius prie žemės. Programuojant „Teensy“, 5 V atėjo iš USB, tačiau kai jis veikia savarankiškai, maitinimas gaunamas iš nešiojamojo kompiuterio maitinimo bloko. Kai prijungiau 7805 reguliatorių tiesiai prie 19 V, jis buvo TIKRAI karštas, todėl įdėjau rezistorių tinklą, kad apribotų reguliatoriaus įėjimo įtampą ir srovę. Tai buvo kvailystė, bet dabar viskas yra pasiekiamoje temperatūroje.

4 žingsnis: sujungimas

Sujungimas kartu
Sujungimas kartu
Sujungimas kartu
Sujungimas kartu

„Teensy“nebuvo jokių problemų. Jis tiekiamas su kaiščiais, todėl galite jį prijungti tiesiai prie duonos lentos.

Nusprendžiau spalvotu koduoti laidus prie durų smūgio raudonais (+) ir juodais (-) bananų kabeliais iš laboratorijos sugedusių dalių dėžutės. Nuo jų laidų buvo nupjauti kai kurie kištukai, todėl nuplėšiau plastiką, kad atskleisčiau litavimo tašką. Man labai patinka, kaip laboratoriniai bananų kištukai gali būti prijungti vienas prie kito. Naudojau „Apple“telefono kabelį, kad prijungčiau mygtukus ir būsenos lemputę už kambario ribų prie „Teensy“viduje. Kadangi viena pusė buvo sulaužyta, aš nupjoviau tą galą ir lituodavau keturių kaiščių antraštę, užsandarindama karštais klijais. Tai puikiai įsijungė į mano duonos lentą. Šonas, kuriame palikau kištuką, pateko į modulinį lizdą, kurį išgelbėjau iš maršrutizatoriaus. Buvo naudojami visi keturi laidai (GND, būsenos lemputė, paleidimo/sustabdymo mygtukas, kodo mygtukas). Jei nepastebėjote, man patinka kištukai ir jungtys. Maitinimo plyta prijungta prie maitinimo lizdo, kurį ištraukiau iš maršrutizatoriaus. Sulankstyti laidus per sieninius vamzdžius nebuvo per sunku dėl lankstaus griebtuvo. Tai tikrai išgelbėjo mano dieną.

5 žingsnis: kodas

Kodas
Kodas
Kodas
Kodas

Bandžiau pakomentuoti savo kodą. Atminkite, kad tai yra 1.0 programinė įranga, o tai reiškia, kad ji nėra be klaidų. Būsenos lemputė pradeda lėtai mirksėti. 2. Bakstelėkite kodą kodo mygtuke. Būsenos lemputė mirksės esant 120 BPM, todėl, jei norite, galite tai naudoti kaip metronomą. Tačiau „Cryptap“programa proporcingai išmatuos impulsų ilgį vienas kito atžvilgiu, todėl galėsite naudoti ir savo tempą. Tiesiog įsitikinkite, kad esate pakankamai tikslūs! 3. Įvedę kodą, dar kartą paspauskite paleidimo/sustabdymo mygtuką. Tada programa nuspręs, ar jus įleisti. Kadangi žmonės nėra labai tikslūs laiko laikytojai (jūsų tikrai nėra), aš nustatiau tolerancijos santykį +/- 30%. Tai reiškia, kad smūgio ilgiai gali būti netikslūs tokiu dydžiu ir vis tiek praeiti. Tai pakankamai gerai, kad būtų galima pasakyti skirtumą tarp gana panašių melodijų. Yra nedidelis sunkiai pasiekiamas dvigubo ir trigubo ilgio dūžių sutapimas, tačiau kodą vis tiek gana sunku sulaužyti. Norint atrakinti duris, dūžiai turi būti tinkamų proporcijų (+/- tolerancijos santykis), o smūgių skaičius- teisingas. Jei įvedamas neteisingas slaptažodis, programa laukia kelias sekundes, ignoruodama bet kokį vartotojo įvestį. Taip pat greitai mirksės būsenos lemputė. Jei įvedamas teisingas kodas, būsenos lemputė nuolat įsijungs ir durys atsidarys 8 sekundėms. ## USER CONFIGURATION ## Raktas saugomas tokiame masyve: #define keylength 5 const int key = {2, 1, 3, 3, 3}; // „Su gimtadieniu tau“Masyve saugomas laikas, kuris įvyksta TARP. Taigi, jei jūsų slaptažodis turi šešias pastabas, tokias kaip „Su gimtadieniu jums“, masyve turi būti PENKI elementai. Jei jūsų slaptažodis yra tikrai ilgas ir jame yra daugiau nei 16 dūžių (tikrai sunku, aš to nerekomenduoju), turite padidinti šioje eilutėje apibrėžtą skaičių: #define inputCodeLength 16 ## THE COD LIKTIS # # Man buvo įdomu pertraukos, todėl mano mygtukai sukėlė pertraukas. Kad būtų lengviau naudotis šiais pertraukimais, turėjau pertraukimo tvarkytojus patikrinti, ar nėra tam tikrų funkcijų rodyklių. Jei rodyklė nenustatyta į NULL, iškviečiama funkcija, į kurią ji nurodo. Tai nustatoma naudojant įvairias „režimo nustatymo“funkcijas „cryptap“.c. Aš stengiausi išvengti buferio perpildymo, nustatydamas maksimalų įvestų impulsų skaičių. Jei įvedamas maksimalus impulsų skaičius, programa iš karto pradeda slaptažodžio analizę ir nusprendžia, ar atrakinti duris. Tikiuosi, kad mano komentarai kode padės. ## KLAIDOS ## Bandžiau pašalinti USB derinimo kodą, tačiau kodas neveiks, jei tai padarysiu. Taigi, palikau usb_init () ir įvairius print () pareiškimus. Būčiau dėkingas, jei kas nors juos pašalintų ir programa vis tiek veiktų. Dar geriau, jei jie gali paaiškinti, kodėl man tai nepadėjo. Iškart po programavimo „Teensy“kartais nepriima kodo įvedimo. Norėdami tai išspręsti, įjunkite grandinę maitinimo ciklu.

Rekomenduojamas: