Mündəricat:

Cryptap: Ritmə əsaslanan Qapı Kilidi: 5 addım
Cryptap: Ritmə əsaslanan Qapı Kilidi: 5 addım

Video: Cryptap: Ritmə əsaslanan Qapı Kilidi: 5 addım

Video: Cryptap: Ritmə əsaslanan Qapı Kilidi: 5 addım
Video: CrypTap Bitcoin Maden Kazarak Para Kazanma 2024, Noyabr
Anonim
Cryptap: Ritm əsaslı Qapı Kilidi
Cryptap: Ritm əsaslı Qapı Kilidi
Cryptap: Ritm əsaslı Qapı Kilidi
Cryptap: Ritm əsaslı Qapı Kilidi
Cryptap: Ritm əsaslı Qapı Kilidi
Cryptap: Ritm əsaslı Qapı Kilidi

Hackaday.com saytında gördüyüm bir neçə qapı kilidini açma mexanizmindən ilhamlanaraq özüm yaratmağa qərar verdim. Bu iki düyməli bir interfeysə malikdir; biri şifrənin təqdim edilməsini başlamaq və bitirmək üçün, biri də şifrəniz olan ritmə vurmaq üçün. Vəziyyət işığı da var. Bunu son bir neçə ay ərzində təmizlədiyim hissələrdən istifadə edərək həqiqətən də ucuza tikə bildim. Ödəməli olduğum tək şey 21 dollar olan mikro nəzarətçinin özü idi (https://www.pjrc.com/teensy/) və əvvəllər aldığım şəkil asma teli.

Ulduz Döyüşləri mövzusuna toxunmaq və ya otağıma girmək çox əyləncəlidir. İndi yenidən otaqdan çıxıb özümü kilidləməkdən narahat olmaq lazım deyil! Üstəlik, özünü yaxşı və qəribə hiss edir.

Addım 1: Parçalar və Alətlər

Parçalar və Alətlər
Parçalar və Alətlər
Parçalar və Alətlər
Parçalar və Alətlər

Teensy -ni seçdim, çünki bu mənim ilk mikro nəzarətçimdir və hələ də proqramçım yoxdur. The Teensy yalnız Mac/Windows/Linux ilə uyğun A-miniB USB kabeli və quraşdırılması üçün pulsuz proqram tələb edir. Ayrıca, hex faylını yükləmək çox asandır; sadəcə tərtib edin və Teensy düyməsini basın.

Mənə bu layihənin qiyməti 21 dollar, üstəlik şəkil asma teli idi. Küçədəki hissələr bir qəhvə süzgəcindən (röle, LED, kondansatör) və bir yönləndiricidən (LED, modul jak, güc jakı, kondansatörlər) gəldi. Pulsuz nümunələr 7805 5 voltluq tənzimləyici, düymələr və açar idi. EE laboratoriyamdakı "qırıq hissələr" qutusunda çox şey tapdım: banan bağlayıcıları və kabel, tel, sn754410 sürücüsü, dörd pinli başlıq və rezistorlar. Ətrafımda güc üçün istifadə etdiyim əlavə bir dizüstü kompüter şarj cihazı və çıxarıldığı Apple modem kabeli vardı. Digər avadanlıq: divar lövhəsi. İsti bir yapışqan silahı, bir lehimləmə dəmiri, iynə faylı və olduqca standart olan bir elektrik matkabı istifadə etdim. İstifadə etdiyim ən qeyri -adi şey uzun, çevik bir tutma vasitəsi idi.

Addım 2: Əvvəlcədən mövcud olan Hardware

Əvvəlcədən mövcud olan Avadanlıq
Əvvəlcədən mövcud olan Avadanlıq
Əvvəlcədən mövcud olan Avadanlıq
Əvvəlcədən mövcud olan Avadanlıq
Əvvəlcədən mövcud olan Avadanlıq
Əvvəlcədən mövcud olan Avadanlıq
Əvvəlcədən mövcud olan Avadanlıq
Əvvəlcədən mövcud olan Avadanlıq

Çox şanslı idim ki, artıq çox şey quraşdırılıb. Otağım ADA üçün əlçatandır və artıq quraşdırılmış müxtəlif borular, elektrik qutuları və elektrik qapı zərbəsi var idi. Maraq ucbatından qapı zərbəsini aradan qaldıranda, əlaqəli olmadığını gördüm. Qapının vuruşundan otağımın içindəki boş bir divar lövhəsinə, oradan isə kənarda boş divar lövhəsinə başqa bir boru vardı.

Qapı tətili, işləməsi üçün 24V@3A -ya ehtiyacı olduğunu söyləyir, amma məndə olan 19V, 7.9A enerji təchizatı ilə öhdəsindən gələ bildim. Qapı zərbəsi qütbləşdi, buna görə polariteyi düzgün etdiyinizə əmin olun!

Addım 3: Dövrlər

Dövrlər
Dövrlər
Dövrlər
Dövrlər
Dövrlər
Dövrlər
Dövrlər
Dövrlər

Qapı zərbəsini idarə etmək üçün qəhvə süzgəcində tapdığım röleyi istifadə etdim. Bu röleyi idarə etmək üçün 5V -dən çox TTL lazım idi, buna görə də sn754410, röleyi idarə edən TTL -ni 19V -ə çevirmək üçün istifadə edildi. Sn754410 həqiqətən dörddə bir yarım H sürücüsüdür, buna görə çipin 3/4 hissəsini israf edirdim, amma heç bir güc tranzistorum yox idi, buna görə də istifadə etdim.

Sn754410 çipində biri 5V üçün, digəri isə çıxmaq istədiyiniz gərginlik üçün iki VCC pin var, bu mənim üçün 19V idi. Həqiqətən də gözəl bir çipdir. Bunu mühərrikləri və röleləri birbaşa idarə etmək üçün istifadə edə bilərsiniz, çünki hər çipdə 1A-ı dəyişə bilər və quraşdırılmış qoruyucu diodlara malikdir. Məlumat cədvəlinə baxın. Dövrümdə sn754410 -u birbaşa Teensy -nin çıxış pininə bağladım. Düymələr mikro nəzarətçilər üçün çox yaygın olan aktiv-aşağı olaraq bağlanır. Onlar birbaşa Teensy ilə əlaqəlidirlər, yəni proqram təminatında debunq etməliyəm. Vəziyyət işığı 1K ohm rezistor vasitəsilə Teensy -yə qoşulur; xüsusi heçnə. Dövrə kondansatör olmadan işləyirdi, amma hər halda onları qoydum. Yerə qədər həm 19V, həm də 5V güc raylarında qoruyucu qapaqlar var. Teensy -ni proqramlaşdırarkən 5V USB -dən gəldi, ancaq öz -özünə işləyərkən güc laptopun güc kərpicindən gəlir. 7805 tənzimləyicisini 19V -a birbaşa bağladığımda, həqiqətən də çox isti oldu, buna görə giriş gərginliyini və cərəyanı tənzimləyiciyə məhdudlaşdırmaq üçün bir rezistor şəbəkəsi qoydum. Bu bir şey idi, amma indi hər şey idarə oluna bilən bir temperaturdadır.

Addım 4: Birlikdə kabel çəkin

Birlikdə naqillər çəkmək
Birlikdə naqillər çəkmək
Birlikdə naqillər çəkmək
Birlikdə naqillər çəkmək

Teensy -də heç bir problem yox idi. Sancaqlar ilə gəlir, buna görə birbaşa çörək taxtasına qoşa bilərsiniz.

Laboratoriyanın sınmış hissələri qutusundan qırmızı (+) və qara (-) banan kabelləri ilə qapıya vurulan telləri rənglə kodlaşdırmağa qərar verdim. Tellərindən kəsilmiş bəzi fişlər var idi, buna görə bir lehim nöqtəsini açmaq üçün bir az plastik götürdüm. Laboratoriya banan fişlərinin bir -birinə necə bağlana biləcəyini çox sevirəm. Otağın xaricindəki düymələri və vəziyyət işığını içəridəki Teensy -yə bağlamaq üçün Apple telefon kabelindən istifadə etdim. Bir tərəfi qırıldığından o ucunu kəsdim və dörd pinli başlığa lehim edərək isti yapışqanla bağladım. Bu çörək lövhəmə gözəl bir şəkildə yapışdı. Fişi tərk etdiyim tərəf, yönlendiricidən qurtardığım modul yuvaya girdi. Bütün dörd teldən istifadə edildi (GND, vəziyyət işığı, start/stop düyməsi, kod düyməsi). Diqqət etməmisinizsə, fişləri və bağlayıcıları sevirəm. Routerdən sürüşdürdüyüm elektrik cərəyanına qoşulmuş güc kərpic. Telləri divar borularından keçirtmək, elastik tutma işi səbəbindən çox da çətin deyildi. Bu, həqiqətən də mənim günümü xilas etdi.

Addım 5: Kod

Kod
Kod
Kod
Kod

Kodumu şərh etməyə çalışdım. Unutmayın ki, bu 1.0 proqramdır, yəni səhvsiz deyil. ## Əməliyyat ## 1. Kod daxil etməyə başlamağa hazır olduğunuzu bildirmək üçün start/stop düyməsini basın. Vəziyyət işığı yavaş -yavaş yanıb sönməyə başlayır. 2. Kod düyməsinə kodunuzu vurun. Vəziyyət işığı 120 BPM -də yanıb -sönəcək, buna görə də istəsəniz bunu metronomunuz kimi istifadə edə bilərsiniz. Bununla birlikdə, kriptovalyuta proqramı bir -birinə nisbətlə nəbz uzunluqlarını ölçəcək, buna görə də öz tempinizi istifadə edə bilərsiniz. Yalnız kifayət qədər dəqiq olduğuna əmin olun! 3. Kod daxil edildikdən sonra yenidən start/stop düyməsini basın. Proqram sizi içəri buraxıb-buraxmayacağınıza qərar verəcək. İnsanlar çox dəqiq vaxt qoruyucusu olmadıqları üçün (sizinki həqiqətən deyil), tolerantlıq nisbətini +/- 30%olaraq təyin etdim. Bu o deməkdir ki, döyüntü uzunluqları bu məbləğdə qeyri -dəqiq ola bilər və yenə də toplanışdan keçə bilər. Bu olduqca oxşar melodiyalar arasındakı fərqi izah etmək üçün kifayət qədər yaxşıdır. İkiqat və üçqat uzunluqlu vuruşlar arasında az miqdarda çatmaq çətin olan üst-üstə düşmə var, amma kodu pozmaq hələ də olduqca çətindir. Qapının kilidini açmaq üçün vuruşlar bir-birinə doğru nisbətdə olmalıdır (+/- tolerantlıq nisbəti) və vuruşların sayı düzgün olmalıdır. Yanlış bir parol daxil edildikdə, proqram hər hansı bir istifadəçi girişinə məhəl qoymadan bir neçə saniyə gözləyir. Vəziyyət işığını da tez bir zamanda yandıracaq. Doğru kod daxil edildikdə, vəziyyət işığı davamlı olaraq yanacaq və qapı 8 saniyə kilidini açacaq. ## İSTİFADƏÇİ KONFİGÜRASİYASI ## Açar belə bir massivdə saxlanılır: #deleine keylength 5 const int key = {2, 1, 3, 3, 3}; // "Ad günün mübarək" serialı, atışlar arasında baş verən vaxtı saxlayır. Şifrənizdə "Sənin ad günün mübarək" kimi ALTI qeyd varsa, serialda BEŞ element olmalıdır. Şifrəniz həqiqətən uzundursa və içərisində 16 -dan çox vuruşunuz varsa (həqiqətən çətin, bunu məsləhət görmürəm), bu sətirdə göstərilən sayını artırmalısınız: #decine inputCodeLength 16 ## KODUN QALDIĞI # # Fasilələrlə maraqlandım, buna görə də düymələrimdə fasilələri işə saldım. Bu fasilələrin istifadəsini asanlaşdırmaq üçün kəsmə işçilərimdən müəyyən funksiya göstəricilərini yoxlamasını istədim. Göstərici NULL olaraq təyin edilmədikdə, göstərdiyi funksiya çağırılır. Bunlar cryptap.c daxilindəki müxtəlif "rejim tənzimləmə" funksiyaları ilə qurulur. Maksimum sayda daxil edilmiş impuls təyin edərək tampon daşmalarının qarşısını almağa çalışdım. Maksimum impuls sayı daxil olarsa, proqram dərhal parol analizinə başlayır və qapının kilidini açıb açmayacağına qərar verir. Ümid edirəm koddakı şərhlərim kömək edəcək. ## BUGS ## USB ayıklama kodunu silməyə çalışdım, amma etsəm kod işləməyəcək. Beləliklə, usb_init () və müxtəlif print () ifadələrini buraxdım. Kimsə onları silə bilsə və hələ də proqram üzərində işləsə, çox sevinərəm. Bunun mənim üçün niyə işləmədiyini izah etsələr daha yaxşı olar. Proqramlaşdırıldıqdan dərhal sonra, Teensy bəzən kod girişini qəbul etmir. Bunu həll etmək üçün dövrəni elektrik dövrəsinə keçirin.

Tövsiyə: