Satura rādītājs:

Cryptap: uz ritmu balstīta durvju slēdzene: 5 soļi
Cryptap: uz ritmu balstīta durvju slēdzene: 5 soļi

Video: Cryptap: uz ritmu balstīta durvju slēdzene: 5 soļi

Video: Cryptap: uz ritmu balstīta durvju slēdzene: 5 soļi
Video: КАКИМ БУДЕТ PORTAL 3 2024, Novembris
Anonim
Cryptap: uz ritmu balstīta durvju slēdzene
Cryptap: uz ritmu balstīta durvju slēdzene
Cryptap: uz ritmu balstīta durvju slēdzene
Cryptap: uz ritmu balstīta durvju slēdzene
Cryptap: uz ritmu balstīta durvju slēdzene
Cryptap: uz ritmu balstīta durvju slēdzene

Iedvesmojoties no vairākiem durvju atbloķēšanas mehānismiem, ko esmu redzējis vietnē hackaday.com, es nolēmu to izveidot pats. Tam ir divu pogu interfeiss; viens, lai sāktu un pabeigtu paroles iesniegšanu, un viens, lai faktiski pieskartos ritmā, kas ir jūsu parole. Ir arī statusa lampiņa. Es varēju to uzbūvēt patiešām lēti, izmantojot detaļas, kuras biju iztīrījis dažu pēdējo mēnešu laikā. Vienīgais, par ko man bija jāmaksā, bija pats mikrokontrolleris, kura cena bija 21 USD (https://www.pjrc.com/teensy/), un daži attēla piekarināmie vadi, kas man bija iepriekš.

Ir ļoti jautri pieskarties Zvaigžņu karu tēmai vai kaut kam, lai iekļūtu manā istabā. Tagad man nav jāuztraucas par to, ka atkal izslēdzos no savas istabas! Turklāt tas jūtas labi un dīvaini.

1. darbība: detaļas un rīki

Daļas un rīki
Daļas un rīki
Daļas un rīki
Daļas un rīki

Es izvēlējos Teensy, jo šis ir mans pirmais mikrokontrolleris, un man vēl nav programmētāja. Lai instalētu Teensy, ir nepieciešams tikai A-miniB USB kabelis un bezmaksas programmatūra, kas ir saderīga ar Mac/Windows/Linux. Turklāt ir ļoti viegli augšupielādēt hex failu; vienkārši apkopojiet un nospiediet Teensy pogu.

Šī projekta izmaksas man bija 21 ASV dolāri, kā arī attēla piekārtā stieple. Daļas no ielas nāca no kafijas perkolatora (relejs, LED, kondensators) un maršrutētāja (LED, moduļu domkrats, barošanas ligzda, kondensatori). Bezmaksas paraugi bija 7805 5 voltu regulators, pogas un slēdzis. Es savā EE laboratorijas lodziņā "salauztas detaļas" atradu arī daudz lietas: banānu savienotājus un kabeli, vadu, sn754410 draiveri, četru kontaktu galveni un rezistorus. Man apkārt bija papildu klēpjdatora lādētājs, ko izmantoju barošanai, un Apple modema kabelis, kura cilne bija salauzta. Cita aparatūra: sienas plāksne. Es izmantoju karstu līmes pistoli, lodāmuru, adatas vīli un urbi, kas ir diezgan standarta. Visneparastākais, ko izmantoju, bija garš, elastīgs satveršanas rīks.

2. darbība. Iepriekš esoša aparatūra

Iepriekš esoša aparatūra
Iepriekš esoša aparatūra
Iepriekš esoša aparatūra
Iepriekš esoša aparatūra
Iepriekš esoša aparatūra
Iepriekš esoša aparatūra
Iepriekš esoša aparatūra
Iepriekš esoša aparatūra

Man ļoti paveicās, ka jau bija tik daudz instalēta. Mana istaba ir pieejama ADA, un tur jau bija uzstādītas dažādas caurules, elektriskās kastes un elektriskais durvju trieciens. Noņemot durvju streiku aiz ziņkārības, es atklāju, ka tas nav savienots. Tur bija caurule no durvju trieciena līdz tukšai sienas plāksnei manā istabā, un vēl viena caurule no turienes līdz tukšai sienas plāksnei ārpusē.

Durvju streiks saka, ka tā darbībai ir nepieciešami 24 V@3A, bet es varēju iztikt ar 19 V, 7,9 A barošanas avotu, kāds man bija. Durvju trieciens bija polarizēts, tāpēc pārliecinieties, vai polaritāte ir pareiza!

3. solis: shēmas

Ķēdes
Ķēdes
Ķēdes
Ķēdes
Ķēdes
Ķēdes
Ķēdes
Ķēdes

Lai kontrolētu durvju triecienu, es izmantoju releju, ko atradu kafijas perkolatorā. Šim relejam bija nepieciešams vairāk nekā 5 V TTL, lai to vadītu, tāpēc sn754410 tika izmantots, lai tulkotu TTL uz 19 V, kas vadīja releju. Sn754410 patiešām ir četrriteņu H-draiveris, tāpēc es izšķērdēju 3/4 mikroshēmas, bet man nebija jaudas tranzistoru, tāpēc es to izmantoju.

Mikroshēmai sn754410 ir divas VCC tapas, viena 5 V, otra - kādam spriegumam, kuru vēlaties izlaist, kas man bija 19 V. Tā ir patiešām forša mikroshēma. Jūs varat to izmantot, lai vadītu motorus un relejus tieši, jo tas var pārslēgt 1A uz ceturkšņa mikroshēmu un tajā ir iebūvētas aizsardzības diodes. Apskatiet datu lapu. Savā ķēdē es savienoju sn754410 tieši ar savu Teensy izejas tapu. Pogas ir savienotas kā aktīvs-zems, kas ir ļoti bieži mikrokontrolleriem. Tie ir tieši saistīti ar Teensy, kas nozīmē, ka man ir jāatvieno programmatūra. Statusa indikators ir savienots ar Teensy caur 1K omu rezistoru; nekas īpašs. Ķēde strādāja bez kondensatoriem, bet es tos ievietoju jebkurā gadījumā. Gan zem 19V, gan 5V strāvas sliedēm ir aizsargvāciņi. Programmējot Teensy, 5V nāca no USB, bet, kad tas darbojas pats, jauda nāk no klēpjdatora barošanas bloka. Kad es pievienoju 7805 regulatoru tieši pie 19 V, tas tiešām kļuva karsts, tāpēc es ievietoju rezistoru tīklu, lai ierobežotu regulatora ieejas spriegumu un strāvu. Tas bija apmulsums, bet tagad viss ir sasniedzamā temperatūrā.

4. solis: savienojiet to kopā

Elektroinstalācija kopā
Elektroinstalācija kopā
Elektroinstalācija kopā
Elektroinstalācija kopā

Teensy nebija problēmu. Tas ir aprīkots ar tapām, lai jūs varētu to iespraust tieši maizes plāksnē.

Es nolēmu krāsot durvju trieciena vadus ar sarkaniem (+) un melniem (-) banānu kabeļiem no laboratorijas salauzto detaļu kastes. No vadiem bija nogriezti daži aizbāžņi, tāpēc es noplēšu plastmasu, lai atklātu lodēšanas punktu. Man ļoti patīk, kā laboratorijas banānu kontaktdakšas var iespraust savā starpā. Es izmantoju Apple tālruņa kabeli, lai savienotu pogas un statusa gaismu ārpus telpas ar Teensy iekšā. Tā kā viena puse bija salauzta, es to nogriezu un pielodēju četru kontaktu galviņā, noslēdzot to ar karstu līmi. Tas labi ieslēdzās manā maizes dēļā. Tā puse, kurā es atstāju kontaktdakšu, iegāja modulārajā ligzdā, kuru es izglābu no maršrutētāja. Tika izmantoti visi četri vadi (GND, statusa gaisma, start/stop poga, koda poga). Ja neesat pamanījis, man patīk kontaktdakšas un savienotāji. Strāvas ķieģelis ir savienots ar strāvas kontaktligzdu, kuru es izvilku no maršrutētāja. Vītņu izvadīšana caur sienu caurulēm nebija pārāk grūta elastīgā satvērēja dēļ. Tas tiešām izglāba manu dienu.

5. darbība: kods

Kods
Kods
Kods
Kods

Es mēģināju komentēt savu kodu. Paturiet prātā, ka šī ir 1.0 programmatūra, kas nozīmē, ka tā nav brīva. ## DARBĪBA ## 1. Nospiediet start/stop pogu, lai norādītu, ka esat gatavs sākt koda ievadi. Statusa indikators sāk lēnām mirgot. 2. Pieskarieties sava koda koda pogai. Statusa indikators mirgos pie 120 BPM, tāpēc, ja vēlaties, varat to izmantot kā metronomu. Tomēr kriptaps programma proporcionāli izmērīs impulsa garumu attiecībā pret otru, lai jūs varētu izmantot arī savu tempu. Vienkārši pārliecinieties, ka esat pietiekami precīzs! 3. Kad koda ievade ir pabeigta, vēlreiz nospiediet start/stop pogu. Pēc tam programma izlems, vai ielaist jūs iekšā. Tā kā cilvēki nav īpaši precīzi laika turētāji (jūsu īsti nav), es iestatīju pielaides koeficientu uz +/- 30%. Tas nozīmē, ka sitienu garumi var būt neprecīzi par šo summu un joprojām iet garām. Tas ir pietiekami labi, lai pateiktu atšķirību starp diezgan līdzīgām melodijām. Starp dubultiem un trīskāršiem sitieniem ir neliela grūti sasniedzama pārklāšanās, taču kodu joprojām ir diezgan grūti salauzt. Lai atslēgtu durvis, sitieniem jābūt pareizās proporcijās (+/- pielaides attiecība), un sitienu skaitam jābūt pareizam. Ja tiek ievadīta nederīga parole, programma nogaida dažas sekundes, ignorējot lietotāja ievadīto informāciju. Tas arī ātri mirgos statusa indikatoru. Ja tiek ievadīts pareizs kods, statusa lampiņa nepārtraukti iedegsies un durvis tiks atslēgtas uz 8 sekundēm. ## USER CONFIGURATION ## Atslēga tiek saglabāta šādā masīvā: #define keylength 5 const int key = {2, 1, 3, 3, 3}; // "Daudz laimes dzimšanas dienā!" Masīvs saglabā laiku, kas notiek starp sitieniem. Tātad, ja jūsu parolei ir sešas piezīmes, piemēram, "Daudz laimes dzimšanas dienā", masīvā jābūt pieciem elementiem. Ja jūsu parole ir patiešām gara un tajā ir vairāk nekā 16 sitienu (patiešām grūti, es to neiesaku), jums jāpalielina šajā rindā definētais skaitlis: #define inputCodeLength 16 ## THE KEST # Mani interesēja pārtraukumi, tāpēc manas pogas izraisīja pārtraukumus. Lai šos pārtraukumus būtu ērti lietot, es liku saviem pārtraukumu apstrādātājiem pārbaudīt noteiktas funkciju norādes. Ja rādītājs nav iestatīts uz NULL, tiek izsaukta funkcija, uz kuru tā norāda. Tie ir iestatīti ar dažādām "režīma iestatīšanas" funkcijām kriptap iekšpusē. C. Es centos izvairīties no bufera pārpildes, nosakot maksimālo ievadīto impulsu skaitu. Ja tiek ievadīts maksimālais impulsu skaits, programma nekavējoties sāk paroles analīzi un izlemj, vai atvērt durvis. Es ceru, ka mani komentāri kodā palīdzēs. ## BUGS ## Es mēģināju noņemt USB atkļūdošanas kodu, taču kods nedarbosies, ja to izdarīšu. Tātad, es atstāju usb_init () un dažādus drukas () paziņojumus. Es būtu pateicīgs, ja kāds varētu tos noņemt un programma joprojām darbotos. Vēl labāk, ja viņi var izskaidrot, kāpēc tas man nedarbojās. Tūlīt pēc programmēšanas Teensy dažreiz nepieņem koda ievadi. Lai to atrisinātu, ieslēdziet ķēdi barošanas ciklā.

Ieteicams: