Cryptap: ռիթմի վրա հիմնված դռան կողպեք ՝ 5 քայլ
Cryptap: ռիթմի վրա հիմնված դռան կողպեք ՝ 5 քայլ
Anonim

Ոգեշնչված hackaday.com կայքում տեսած դռների բացման մի քանի մեխանիզմներով, ես որոշեցի ինքնուրույն ստեղծել մեկը: Այս մեկն ունի երկու կոճակի ինտերֆեյս; մեկը `գաղտնաբառի ներկայացումը սկսելու և ավարտելու համար, և մեկը` իրականում ձեր գաղտնաբառի ռիթմի վրա թակելու համար: Կա նաև կարգավիճակի լույս: Ես կարողացա կառուցել սա իսկապես էժան ՝ օգտագործելով մասեր, որոնք ես մաքրեցի վերջին մի քանի ամիսների ընթացքում: Միակ բանը, որի համար ես պետք է վճարեի, դա միկրոկառավարիչն էր, որը 21 դոլար էր (https://www.pjrc.com/teensy/) և նկարներից կախված մետաղալարեր, որոնք ունեի նախկինում:

Շատ զվարճալի է «Աստղային պատերազմների» թեման կամ ինչ -որ բան մտնել իմ սենյակ: Հիմա ես կարիք չունեմ անհանգստանալու, որ նորից փակվեմ իմ սենյակից: Բացի այդ, այն իրեն լավ ու հմայիչ է զգում:

Քայլ 1: Մասեր և գործիքներ

Ես ընտրեցի Teensy- ն, քանի որ սա իմ առաջին միկրոկոնտրոլերն է, իսկ ծրագրավորող դեռ չունեմ: Teensy- ն պահանջում է միայն A-miniB USB մալուխ և տեղադրելու անվճար ծրագրակազմ ՝ համատեղելի Mac/Windows/Linux- ի հետ: Բացի այդ, իսկապես հեշտ է վերբեռնել վեցանկյուն ֆայլը. պարզապես կազմեք և սեղմեք դեռահասի կոճակը:

Այս նախագծի արժեքը ինձ համար 21 դոլար էր ՝ գումարած նկարը կախող մետաղալարը: Փողոցից մասեր էին գալիս սուրճի պերկոլյատորից (ռելե, LED, կոնդենսատոր) և երթուղիչից (LED, մոդուլային խցիկ, հոսանքի վարդակ, կոնդենսատորներ): Անվճար նմուշներ էին 7805 5 վոլտ կարգավորիչը, կոճակները և անջատիչը: Ես նաև բազմաթիվ իրեր գտա իմ EE լաբորատորիայում `« կոտրված մասերի »տուփում` բանանի միակցիչներ և մալուխ, մետաղալարեր, sn754410 վարորդը, չորս պտտվող գլխիկ և դիմադրիչներ: Ես ունեի նոթբուքի լրացուցիչ լիցքավորիչ, որը ես օգտագործում էի էներգիայի համար, և Apple մոդեմի մալուխ, որի ներդիրը կոտրված էր: Այլ սարքավորումներ `պատի ափսե: Ես օգտագործեցի տաք սոսինձ ատրճանակ, եռակցման երկաթ, ասեղի ֆայլ և էլեկտրական փորվածք, որոնք բավականին ստանդարտ են: Ամենաարտասովոր բանը, որ ես օգտագործեցի, երկար, ճկուն գրավի գործիք էր:

Քայլ 2. Նախապես գոյություն ունեցող սարքավորում

Ես շատ բախտավոր էի, որ արդեն այդքան տեղադրված կար: Իմ սենյակը հասանելի է ADA- ին, և արդեն տեղադրված էին տարբեր խողովակներ, էլեկտրական արկղեր և էլեկտրական դռան հարված: Հետաքրքրասիրությունից դռան հարվածը հեռացնելով ՝ ես պարզեցի, որ այն միացված չէ: Դռան հարվածից դեպի սենյակս պատի դատարկ ափսե կար մի խողովակ, իսկ այնտեղից `մեկ այլ խողովակ` դրսի պատի դատարկ ափսեի մեջ:

Դռան հարվածը ասում է, որ այն 24V@3A կարիք ունի աշխատելու համար, բայց ես կարողացա գլուխ հանել 19V, 7.9A հոսանքով, որն ունեի: Դռան հարվածը բևեռացված էր, այնպես որ համոզվեք, որ բևեռականությունը ճիշտ է:

Քայլ 3: Շղթաներ

Դռան հարվածը վերահսկելու համար ես օգտագործեցի ռելեն, որը գտել էի սուրճի թրծիչում: Այս ռելեին անհրաժեշտ էր ավելի քան 5V TTL այն վարելու համար, ուստի sn754410- ը օգտագործվում էր TTL- ը 19V- ի թարգմանելու համար, ինչը փոխանցում էր ռելեին: Sn754410- ն իրոք քառամսյա H- ի վարորդ է, այնպես որ ես վատնում էի չիպի 3/4-ը, բայց ես չունեի որևէ ուժային տրանզիստոր, ուստի այն, ինչ ես օգտագործել էի:

Sn754410 չիպը ունի երկու VCC կապ, մեկը 5 Վ -ի համար, մյուսը `ինչ լարվածության համար եք ուզում դուրս գալ, որն ինձ համար 19 Վ էր: Դա իսկապես թույն չիպ է: Դուք կարող եք դա օգտագործել շարժիչներ և ռելեներ անմիջականորեն վարելու համար, քանի որ այն կարող է միկրոսխեմայի 1 Ա-ն փոխել և ներկառուցված պաշտպանական դիոդներ ունի: Նայեք տվյալների թերթիկին: Իմ միացումում ես sn754410- ը միացրեցի անմիջապես Teensy- ի ելքային քորոցին: Կոճակները միացված են որպես ակտիվ-ցածր, ինչը շատ տարածված է միկրոկոնտրոլերների համար: Նրանք ուղղակիորեն կապված են Teensy- ի հետ, ինչը նշանակում է, որ ես պետք է ծրագրաշարում debouncing անեմ: Կարգավիճակի լույսը միացված է Teensy- ին 1K ohm դիմադրության միջոցով; առանձնապես ոչինչ. Շղթան աշխատում էր առանց կոնդենսատորների, բայց ամեն դեպքում դրանք դնում եմ ամեն դեպքում: Կան պաշտպանական գլխարկներ ինչպես 19V, այնպես էլ 5V հոսանքի ռելսերի վրա գետնին: Teensy- ի ծրագրավորման ժամանակ 5V- ը գալիս էր USB- ից, բայց երբ այն աշխատում է ինքնուրույն, էներգիան գալիս է նոութբուքի հզորության աղյուսից: Երբ ես միացրեցի 7805 կարգավորիչը անմիջապես 19 Վ -ին, այն ԻՐԱԿԱՆ տաքացավ, ուստի ես տեղադրեցի ռեզիստորների ցանց `մուտքային լարումը և հոսանքը կարգավորիչին սահմանափակելու համար: Սա կուլդաժ էր, բայց հիմա ամեն ինչ կառավարելի ջերմաստիճանում է:

Քայլ 4: Միացրեք այն միասին

The Teensy- ը խնդիր չէր: Այն գալիս է կապում, այնպես որ կարող եք այն ուղղակիորեն միացնել հացատախտակին:

Որոշեցի լաբորատորիայի կոտրված մասերի տուփից կարմիր (+) և սև (-) բանանի մալուխներ ներկել դռան հարվածի լարերը: Կային մի քանի խրոցակներ, որոնք կտրված էին նրանց լարերից, այնպես որ ես հեռացրեցի պլաստմասսայից ՝ կպցնելով կպցնելու տեղը: Ինձ շատ դուր է գալիս, թե ինչպես են լաբորատոր բանանի խրոցակները կարող միացվել միմյանց: Ես օգտագործեցի Apple- ի հեռախոսի մալուխը `սենյակից դուրս գտնվող կոճակները և կարգավիճակի լույսը Teensy- ին միացնելու համար: Քանի որ մի կողմը կոտրված էր, ես կտրեցի այդ ծայրը և կպցրեցի չորս կապանի վերնագրում ՝ այն փակելով տաք սոսինձով: Սա գեղեցիկ կերպով միացվեց իմ տախտակին: Այն կողմը, որը ես թողեցի վարդակից, մտավ մոդուլային խցիկի մեջ, որը ես փրկեցի երթուղիչից: Բոլոր չորս լարերն էլ օգտագործվել են (GND, կարգավիճակի լույս, մեկնարկի/կանգառի կոճակ, կոդի կոճակ): Եթե դուք չեք նկատել, ես սիրում եմ վարդակներ և միակցիչներ: Էլեկտրաէներգիայի աղյուսը միացված է հոսանքի վարդակին, որը ես հեռացրի երթուղիչից: Պատերի խողովակներով լարերը լարելը այնքան էլ դժվար չէր, քանի որ ճկուն գրավի առարկան էր: Դա իսկապես փրկեց իմ օրը:

Քայլ 5: Կոդ

Փորձեցի մեկնաբանել իմ կոդը: Նկատի ունեցեք, որ սա 1.0 ծրագրակազմ է, այսինքն ՝ այն սխալներից զերծ չէ: ## ԳՈՐՈՆԵՈ #ԹՅՈ #Ն ## 1. Սեղմեք մեկնարկի/կանգառի կոճակը ՝ ազդանշան տալու համար, որ պատրաստ եք սկսել մուտքագրման ծածկագիրը: Կարգավիճակի լույսը սկսում է դանդաղ բռնկվել: 2. Հպեք ձեր կոդը կոդի կոճակին: Կարգավիճակի լույսը կթարթվի 120 BPM- ով, այնպես որ, ցանկության դեպքում, կարող եք օգտագործել այն որպես ձեր չափագրիչ: Այնուամենայնիվ, գաղտնագրման ծրագիրը չափելու է զարկերակի երկարությունները միմյանց համեմատաբար, այնպես որ կարող եք նաև օգտագործել ձեր սեփական տեմպը: Պարզապես համոզվեք, որ դուք բավականաչափ ճշգրիտ եք: 3. Երբ ծածկագրի մուտքագրումն ավարտված է, նորից սեղմեք մեկնարկ/դադարեցման կոճակը: Programրագիրը այնուհետև կորոշի ՝ թույլ կտա ձեզ ներս թողնել: Քանի որ մարդիկ այնքան էլ ճշգրիտ ժամանակապահ չեն (ձերն իրականում այդպես չէ), ես հանդուրժողականության հարաբերակցությունը սահմանել եմ +/- 30%: Դա նշանակում է, որ հարվածի երկարությունը կարող է այդ չափով ճշգրիտ չլինել և, այնուամենայնիվ, ավելի արագ անցնել: Սա բավական լավ է, որպեսզի տարբերվի բավականին նմանատիպ մեղեդիների միջև: Կա փոքր քանակությամբ դժվար հասանելի համընկնում կրկնակի և եռակի երկարության զարկերի միջև, բայց կոդը դեռևս բավականին դժվար է կոտրել: Դուռը բացելու համար հարվածները պետք է լինեն միմյանց միջև ճիշտ համամասնությամբ (+/- հանդուրժողականության հարաբերակցությունը), իսկ հարվածների թիվը `ճիշտ: Եթե սխալ գաղտնաբառ է մուտքագրվում, ծրագիրը սպասում է մի քանի վայրկյան ՝ անտեսելով օգտվողի ցանկացած մուտքագրում: Այն նաև արագ կթափի կարգավիճակի լույսը: Եթե ճիշտ կոդը մուտքագրվի, կարգավիճակի լույսը անշեղորեն կմիանա, և դուռը կբացվի 8 վայրկյան: ## USER CONFIGURATION ## Բանալին պահվում է այսպիսի զանգվածում ՝#սահմանել բանալիի երկարությունը 5 const int key = {2, 1, 3, 3, 3}; // «Happyնունդդ շնորհավոր քեզ» arանգվածը պահում է այն ժամանակը, որը տեղի է ունենում հարվածների միջև: Այսպիսով, եթե ձեր գաղտնաբառը ունի վեց գրառում, ինչպիսին է «birthdayնունդդ շնորհավոր քեզ», ապա զանգվածում պետք է լինի ՀԻՆԱԿ տարր: Եթե ձեր գաղտնաբառն իսկապես երկար է, և դրա մեջ ավելի քան 16 հարված կա, (իսկապես դժվար է, խորհուրդ չեմ տալիս), դուք պետք է ավելացնեք այս տողում սահմանված թիվը. # Ես հետաքրքրված էի ընդհատումներով, այնպես որ ես ունեի իմ կոճակների ձգան ընդհատումները: Այս ընդհատումները դյուրին դարձնելու համար ես իմ ընդհատիչ կարգավորիչներին ստուգեցի գործառույթի որոշակի ցուցիչների առկայությունը: Եթե սլաքը դրված չէ NULL- ի վրա, ապա կանչվում է այն գործառույթը, որը ցույց է տալիս: Դրանք դրված են cryptap.c- ի ներսում առկա տարբեր «ռեժիմի կարգավորման» գործառույթներով: Ես ջանքեր գործադրեցի խուսափելու բուֆերի արտահոսքից `սահմանելով մուտքագրված իմպուլսների առավելագույն քանակ: Եթե զարկերակների առավելագույն քանակը մուտքագրվում է, ծրագիրը անմիջապես սկսում է գաղտնաբառի վերլուծությունը և որոշում, թե արդյոք բացելու է դուռը: Հուսով եմ, որ կոդի իմ մեկնաբանությունները կօգնեն: ## BUGS ## Ես փորձեցի հեռացնել USB կարգաբերման կոդը, բայց եթե չանեմ, կոդը չի աշխատի: Այսպիսով, ես թողեցի usb_init () և տարբեր print () հայտարարությունները: Ես կգնահատեի, եթե ինչ -որ մեկը կարողանար հեռացնել դրանք և դեռ աշխատել ծրագրի հետ: Նույնիսկ ավելի լավ, եթե նրանք կարողանան բացատրել, թե ինչու դա ինձ մոտ չաշխատեց: Medրագրավորվելուց անմիջապես հետո Teensy- ն երբեմն չի ընդունում կոդի մուտքագրումը: Դա լուծելու համար միացրեք հոսանքի ցիկլը միացումով:

Խորհուրդ ենք տալիս: