Բովանդակություն:

Պիտպոյը կառուցված է ջարդոնից. 26 քայլ (նկարներով)
Պիտպոյը կառուցված է ջարդոնից. 26 քայլ (նկարներով)

Video: Պիտպոյը կառուցված է ջարդոնից. 26 քայլ (նկարներով)

Video: Պիտպոյը կառուցված է ջարդոնից. 26 քայլ (նկարներով)
Video: Модуль ЭДиН:ЭДО для 1С 2024, Հուլիսի
Anonim
Image
Image
Շինարարի սիրտը կառուցելը
Շինարարի սիրտը կառուցելը

Սա իմ աշխատանքային Pipboy- ն է, որը կառուցվել է ավտոտնակից պատահական աղբից և իմ էլեկտրոնային բաղադրիչների պահեստի արշավանքից: Ես գտա այս բարդ կառուցվածքը և ինձանից պահանջվեց մի քանի ամիս աշխատանք, այնպես որ ես դա չէի դասակարգի որպես սկսնակների ամբողջական նախագիծ: Անհրաժեշտ հմտությունները ներառում են պլաստիկի և փայտի աշխատանք, էլեկտրոնիկա և կոդավորում: Մարմինը կառուցված է պլաստմասսայի ջարդոնի տարբեր կտորներից, որոնք կտրված և եռակցված են միասին: Ես որպես միկրոհսկիչ օգտագործեցի Raspberry Pi 0 ՝ ցուցադրման վերնագրով, որը տեղադրված էր GPIO կապում: Մնացած կապումներն օգտագործվում են LED- ները վարելու և կոճակները/կառավարման տարրերը միացնելու համար: Thրագիրը ավարտին հասցնելու համար ես Python- ում գրել եմ «Pipboy» ոճի ինտերֆեյս որոշ ցուցադրական էկրաններով:

Նախագծի իմ նպատակներն էին.

  • Պետք է աշխատեր, այսինքն ՝ անհրաժեշտ էր իրականում ունենալ այնպիսի նյութ, որը կատարում էր իրերը
  • Ես ուզում էի, որ այն ունենար «հավաքիչ» ՝ տարբեր էկրաններ ընտրելու համար, քանի որ այն միշտ առանձնանում էր ինձ համար որպես Fallout- ի UI- ի խորհրդանշական մաս:
  • Ամբողջ շինությունը պետք է ավարտվեր ՝ օգտագործելով ավտոտնակում կամ իմ գրասենյակում եղած իրերը (դա ամբողջովին չէր ստացվել, բայց ես մոտենում էի - դրա 90% -ից ավելին գտնվել են իրեր կամ իրեր, որոնք արդեն կողքիս դրել եմ)
  • Անհրաժեշտ է կրել

Իմ նպատակը մեկն էր ՝ դա դարձնել խաղի մոդելներից մեկի ճշգրիտ կրկնօրինակը. Ես նախընտրում եմ իրեր կառուցել «իրի ոճով», քանի որ դա ինձ հնարավորություն է տալիս հարմարեցնել իմ գտած պատահական աղբը և թույլ տվեք մի փոքր ավելի ստեղծագործական լինել: Ի վերջո, այո, ես գիտեմ, որ դուք կարող եք դրանք գնել, բայց դա էլ իմաստը չէր;)

Պարագաներ

Պարագաներ

  • Լայն անցք ունեցող խողովակ (օրինակ ՝ ջրահեռացման խողովակի մի կտոր)
  • Պլաստմասսա (ինչպես մարմինը ստեղծելու, այնպես էլ դեկորատիվ նպատակներով)
  • Փոքր տարա
  • Փրփուր հատակ
  • Ազնվամորի Պի
  • 3.5 "էկրան
  • KY040 Պտտվող կոդավորիչ
  • 3x լուսադիոդներ
  • 2 անգամ սեղմիչ կոճակներ
  • Powerbank
  • Հաղորդալարեր
  • Պտուտակներ, սոսինձներ, ներկեր, լցոնիչ և այլն

Գործիքներ

  • Դրեմել
  • Բազմաֆունկցիոնալ գործիք ՝ կտրող և հղկող կցորդներով
  • Գայլիկոն
  • Ֆայլեր
  • Sոդման երկաթ
  • Տաք սոսինձ ատրճանակ
  • Պտուտակահան (ներ)
  • Սուր դանակ
  • Տեսավ

Քայլ 1. Կառուցեք կծու տղայի սիրտը

Կառուցել կծու տղայի սիրտը
Կառուցել կծու տղայի սիրտը

Առաջին բանը, որ ես պետք է անեի, դա ապահովելն էր, որ ես կարողանայի ունենալ դիսփլեյ և միկրոհսկիչ այն ձևի գործոնով, որի հետ կարող էի աշխատել: Ինձ պատահեց 3.5 դյույմանոց էկրան, որը նստած էր որպես գլխարկ ՝ Raspberry PI- ի GPIO կապումներին, ուստի որոշեցի օգտագործել այն: Ես այն զուգորդեցի Raspberry Pi 0 -ի հետ և համոզվեցի, որ այն լավ է աշխատում, կան մի քանի քայլ ՝ Linux- ը ճանաչելու համար այն էկրանը, որով պետք է անցնել:

Ինչպես կարող եք տեսնել երկրորդ նկարում, ես ավելացրեցի մի փոքրիկ ստվարաթղթե/փրփուր հարթակ, որը սոսնձեցի պատյանին, որպեսզի աջակցեմ էկրանին: Ես դա արեցի, քանի որ գիտեի, որ շատ կզբաղվեմ այս հատվածով և չէի ցանկանում կոտրել կապում կամ ցուցադրումը աջակցության բացակայության պատճառով: Ի վերջո, սա փոխարինվեց, բայց դա լավ հավելյալ պաշտպանություն էր շինարարության ընթացքում:

Այս պահին նույնպես արժե նշել, որ հետագայում կառուցման ընթացքում ես բախվեցի այս կարգավորման կատարողականի հետ կապված խնդիրների հետ. Հիմնականում Pi- ի և ցուցադրման միջերեսի ինտերֆեյսի թարմացման արագությունը, ես դրան ավելի ուշ կանդրադառնամ, բայց եթե ես դա նորից արեցի, ես կարող եմ այստեղ տարբեր սարքավորումներ համարել:

Ահա դրա համար մի քանի օգտակար հղումներ.

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?f…

learn.sparkfun.com/tutorials/serial-periph…

Ես դրա հետ կապված github- ում կներառեմ նաև որոշ նշումներ այն մասին, թե ինչ եմ ես իրականում արել այս աշխատանքը (թեև թեմայի իմ ընթերցումից շատ փոփոխականություններ կան, թե ինչպես է դա աշխատում կոնկրետ օրինակների/վարորդների համար, այնպես որ ձեր խափանումը կարող է տարբեր լինել):

Քայլ 2: Ստվարաթղթե նախատիպ

Ստվարաթղթե նախատիպ
Ստվարաթղթե նախատիպ
Ստվարաթղթե նախատիպ
Ստվարաթղթե նախատիպ
Ստվարաթղթե նախատիպ
Ստվարաթղթե նախատիպ

Ես գտա մի հին փորվածք/խողովակ, որը ես կարող էի օգտագործել մարմնի համար, բայց ես պետք է նախագիծ մշակեի էկրանի իրական տարածքի և կառավարման վահանակի համար: Դրա համար ես պարզապես պատրաստեցի ստվարաթղթե ծաղրեր և օգտագործեցի դիմակավոր ժապավեն `դրանք խողովակին ամրացնելու համար: Առաջինը պարզ «տուփ» էր, բայց այն չափազանց պարզ էր թվում, ուստի այն փոփոխեցի, որպեսզի էկրանի տարածքն ավելի հետաքրքիր լինի և ավելացրեցի կառավարման վահանակի առանձին տարածք: Սա քիչ թե շատ դարձավ վերջնական դիզայնը (ինչպես կտեսնեք մի քանի փոփոխություններ եղան, բայց դրանք փակվեցին):

Քայլ 3. Նախատիպից մինչև Կաղապար

Նախատիպից մինչև Կաղապար
Նախատիպից մինչև Կաղապար
Նախատիպից մինչև Կաղապար
Նախատիպից մինչև Կաղապար
Նախատիպից մինչև Կաղապար
Նախատիպից մինչև Կաղապար

Այժմ ես ունեի մի նախատիպ, որից ես գոհ էի, կարող էի հարթեցնել ստվարաթուղթը և այն վերածել ձևանմուշի, որը այնուհետև տեղափոխեցի հին համակարգչի հին պատյանների մի մասի վրա, որի շուրջը հարվածում էի: Similarանկացած նմանատիպ կոշտ պլաստիկ կաշխատի, ես պարզապես օգտագործում էի աղբը, որը պետք է հանձնեի: Նշվելուց հետո ես կարողացա կտրել կտորները, որպեսզի սկսեմ հավաքել հիմնական մարմինը: Օգտակար հուշում այստեղ, որպեսզի ավելի դյուրին լինի պլաստիկի գծանշումը և հետագայում կտրելը, ես ծածկեցի այն տարածքները, որոնք պետք է կտրեի նախ դիմակավոր ժապավենով, ինչը երկուսն էլ ինձ ավելի հեշտ միջոց տվեց կաղապարը պլաստիկի վրա գծելու համար, և ինչ -որ բան, որն օգնում է կանգնեցնել կտրող սկավառակի սայթաքումը, երբ ես առաջին կտրվածքներն էի կատարում:

Քայլ 4: Ավելացրեք պատյան էկրանի և Pi- ի համար

Ավելացնել պատյան էկրանի և Pi- ի համար
Ավելացնել պատյան էկրանի և Pi- ի համար
Ավելացնել պատյան էկրանի և Pi- ի համար
Ավելացնել պատյան էկրանի և Pi- ի համար

Ես ուզում էի, որ էկրանի տարածքի անկյունները թեքվեին, և ինձ պետք էր ինչ -որ բան, որ իրականում պահեր Pi- ն և ցուցադրվեր. Իմ լուծումը եղած փոքրիկ պլաստիկ տարայի օգտագործումն էր: Ես մարմնի վերևից մի փոս կտրեցի և սոսնձեցի տարան դրա միջով: Հետո ես սոսնձեցի բոլոր կողմերը միասին: Ես այստեղ սոսինձ օգտագործեցի առատ խմորի սոդայով, որն օգնում էր ամրացնել եռակցումները: Հետագայում ես լրացրեցի և գրանցեցի/հղկեցի ամեն ինչ `ամեն ինչ կարգի բերելու և ավելի« կաղապարված »զգացում հաղորդելու համար:

Քայլ 5: Կրկնեք կառավարման վահանակի համար

Կրկնել կառավարման վահանակի համար
Կրկնել կառավարման վահանակի համար
Կրկնել կառավարման վահանակի համար
Կրկնել կառավարման վահանակի համար
Կրկնել կառավարման վահանակի համար
Կրկնել կառավարման վահանակի համար

Հաջորդը, ես կատարեցի նույն ձևանմուշը ՝ փոխարկելով, կտրելով և սոսնձելով ՝ կառավարման վահանակի պատյան կառուցելու համար:

Քայլ 6: Կտրեք խողովակը

Կտրեք խողովակը
Կտրեք խողովակը

Ինչպես տեսնում եք, այն տարան, որը ես պլանավորում եմ օգտագործել հիմնական էլեկտրոնային բաղադրիչների տեղադրման համար, այժմ հպարտորեն նստած է սև պլաստիկ շրջապատի ներսում, սա նշանակում է, որ ես պետք է խողովակի մեջ բացվածք բացեմ, որպեսզի այն տեղավորվի: Ես նորից դիմակավոր ժապավենով շարեցի այն տեղը, որտեղ ուզում էի կտրել, և կտրեցի խողովակի քառակուսին, որպեսզի մասերը տեղավորվեն:

Քայլ 7: Շրջանակ

Բեզել
Բեզել
Բեզել
Բեզել

Մի մարտահրավեր, որը ես պատահաբար պարտադրեցի ինքս ինձ, փորձում էի գտնել մի եզր, որը կլրացներ ցուցադրման շուրջը մինչև տարայի ծայրերը: Unfortunatelyավոք, էկրանի ձևի ձևի դեպքում այն ոչ մի օգտակար բան չունի իր ձևավորման մեջ (ինչպես անցքեր կամ որևէ այլ բան), որը կարող է օգնել այն ամրացնելուն, այնպես որ շրջանակը նույնպես ստիպված էր էկրանը պահել իր տեղում: Իմ առաջին փորձը (տես այստեղ) պլաստիկի և փրփուրի խառնուրդ էր: Ի վերջո, ես դա մի քանի անգամ կրկնեցի, և այն ավարտվեց որպես շինության առավել դժվար հատվածներից մեկը: Վատթարացել է ինչպես փոքր շրջանակի, այնպես էլ դիսփլեյի փոքր հանդուրժողականության և նուրբ բնույթի շնորհիվ:

Քայլ 8: Մարտկոցի փորձարկում

Մարտկոցի փորձարկում
Մարտկոցի փորձարկում
Մարտկոցի փորձարկում
Մարտկոցի փորձարկում
Մարտկոցի փորձարկում
Մարտկոցի փորձարկում

Այս պահին ես միտքս ուղղեցի այն մասին, թե ինչպես դա անել անկախ ցանցի մատակարարվող USB- ից: Ես փորձարկեցի տարբեր մարտկոցներ և պարզեցի, որ Raspberry Pi + էկրանն իրականում այդքան ուժ չի խլում, և դա կատարյալ ուրախություն էր առաջացնում նույնիսկ իմ փոքր մարտկոցներից մեկի վրա (առևտրի ցուցադրությունից անվճար): Սա իսկապես բախտավոր էր, քանի որ փաթեթը հիանալի տեղավորվում էր շինության ներսում գտնվող բացվածքի մեջ (լուսանկարներն ավելի ուշ): Այժմ մենք կարող ենք ժամանակավորապես ամրացնել մարմնի հիմնական բաղադրամասերը և ձեռք բերել դրա առաջին փորձնական աշխատանքը իմ ձեռքից:

Քայլ 9: Պիտանիության փորձարկում

Testing Fit
Testing Fit
Testing Fit
Testing Fit
Testing Fit
Testing Fit

Այստեղ դուք կարող եք տեսնել, թե որտեղ եմ ես ավելի փոփոխել միջուկի խողովակը ՝ թույլ տալով մուտք գործել բաղադրիչների ստորին հատված: Կարող եք նաև տեսնել, թե ինչպես ես բախտ ունեցա, երբ մարտկոցը գեղեցիկ տեղադրվեց Pi- ի տարայի մի կողմի խոռոչում: Վերջապես սկսվեց կապերը մաքրելու, լցնելու, հղկելու գործընթացը և կատարեց նախնական շերտ ՝ պատրաստի տեսքը զգալու համար (ես գիտեի, որ այս փուլում ես դեռ շատ անգամ կփայլեմ և գրեթե բոլոր այբբենարանները կգնան, բայց ես ուզում էի զգալ, թե ինչպիսին կլինի այն):

Քայլ 10: Ավելացրեք վերահսկողություն և մանրամասնեցում

Ավելացնել վերահսկողություն և մանրամասներ
Ավելացնել վերահսկողություն և մանրամասներ
Ավելացնել վերահսկողություն և մանրամասներ
Ավելացնել վերահսկողություն և մանրամասներ
Ավելացնել վերահսկողություն և մանրամասներ
Ավելացնել վերահսկողություն և մանրամասներ

Ես ուզում էի կարմիր/դեղին/կանաչ LED- ների շարք `չափիչ, ինչպես նաև պտտվող հավաքիչ և առնվազն 2 կոճակ: Դրանք բոլորը տեղադրված էին կառավարման վահանակի հատվածում `պարզապես բոլոր ճիշտ անցքերը հորատելու դեպք: Ես նաև սկսեցի ավելացնել պլաստմասսայի ջարդոնի փոքր կտորներ (հիմնականում հավաքածու) `մանրամասներին և ավելի մեծ հետաքրքրություն հաղորդելու մարմնին և կառավարման վահանակին:

Քայլ 11. Bezel Rebuild No. 3

Bezel Rebuild No 3
Bezel Rebuild No 3
Bezel Rebuild No 3
Bezel Rebuild No 3
Bezel Rebuild No 3
Bezel Rebuild No 3

Ինչպես ավելի վաղ նշեցի, ես այս կառույցի համար պայքարեցի եզրով և մի քանի անգամ վերակառուցեցի այն: Սա երրորդ կրկնումն է, որին ես հավատարիմ մնացի: Իմ մոտեցումն այստեղ այն է, որ օգտագործեմ կարծր տախտակ և կտրեցի 2 տարբեր ձևեր ՝ մեկը մյուսից մտածող, այնուհետև դրանք սոսնձեց (և սեղմեց) ՝ միջին պատկերը ձևավորելու համար: Այս ձևերը թույլ տվեցին քառակուսի ցուցադրումը նստել դրա ներսում, այնուհետև այն պահեց ցուցադրությունը տեղում տարայի ներսում (ինչպես նկար 3 -ում): Սա ինձ բավականաչափ նյութ տվեց 4 շատ փոքր պտուտակներ որպես ամրացումներ օգտագործելու համար, որոնք ես օգտագործում էի այն ամուր ամրացնելու համար պատյանում, իսկ դա իր հերթին էկրանը կայուն և ապահով կպահի: Հետադարձ հայացքով ես կգտնեի մի էկրան, որը հագեցած էր տեղադրման որոշ պարկեշտ տարբերակներով (կամ օգտագործել 3D տպիչ - որը ես այդ ժամանակ չունեի):

Քայլ 12. Էլեկտրոնիկայի նախատիպը

Էլեկտրոնիկայի նախատիպավորում
Էլեկտրոնիկայի նախատիպավորում
Էլեկտրոնիկայի նախատիպավորում
Էլեկտրոնիկայի նախատիպավորում

Ես օգտագործում եմ տախտակ ՝ այս պարզ սխեմաներն այսպես դասավորելու համար, և քանի որ հաճախ նախագծի այս հատվածը կատարում եմ հիմնական մարմնի այլ կառուցվածքում այլ տարածության մեջ, այն նաև զուգակցում էի այլ ազնվամորի PI- ի հետ: Այստեղ ես օգտագործեցի 3 -րդ մոդելը, որն ինձ մի փոքր ավելի մեծ ուժ տվեց իրականում ուղղակիորեն դրան միանալու և ինքնաթիռում IDE գործարկելու համար: Սա պարզապես ինձ համար մի փոքր հեշտացրեց արագ ծածկագրի նախատիպերի պատրաստումը: Կան բազմաթիվ այլ եղանակներ ՝ հեռակա միացնելու/ծածկագրելու/կարգաբերելու համար, սա պարզապես այն է, ինչ ես նախընտրեցի անել այստեղ:

Այստեղ դիզայնը բավականին ուղիղ է, մենք ունենք.

  1. Պտտվող կոդավորիչ - սա օգտագործում է GPIO կապում գրունտ և փունջ `կտտոցների ուղղության և սեղմման կոճակի հետ գործ ունենալու համար:
  2. Pushույգ սեղմման կոճակներ, դրանք պարզապես օգտագործում են մեկ GPIO- ի յուրաքանչյուր քորոց և ընդհանուր հիմք
  3. 3 լուսադիոդներ, որոնցից յուրաքանչյուրը ունի դիմադրողականություն, որպեսզի դադարեցնի դրանք առաջանալը, բոլորը գնում են ընդհանուր հիմքի, բայց յուրաքանչյուրը GPIO- ի առանձին քորոցով, որպեսզի յուրաքանչյուրը կարողանա առանձին անդրադառնալ:

Սա ինձ տվեց 3 լուսադիոդային չափիչ, պտտվող կոդավորիչ, որը պտտվում էր խողովակի էկրանների միջով և 3 կոճակ ՝ գործողությունները քշելու համար (մեկը պտտվող կոդավորիչի վրա և 2 առանձին լարով): Սա այն ամենի մասին էր, ինչ կարող էի տեղավորել, և երբ էկրանը մի քանի կապում է զբաղեցնում, գրեթե սպառում է այն, ինչ ունեք ստանդարտ Pi GPIO դասավորության վրա: Այնուամենայնիվ, դա լավ էր իմ նպատակների համար:

Երկրորդ նկարը բավականին ցույց է տալիս ներքին ներքին դասավորությունը, որով ես գնացել եմ: Ես որոշ ժամանակ այստեղ անցկացրեցի ՝ փորձարկելով բաղադրիչները քշելու եղանակները և ստուգելով, որ ամեն ինչ ստացվել է, նախքան դա կառուցվածքի կառուցվածքում տեղափոխելը: Ամբողջ ծածկագիրը github- ում է:

Նշում պտտվող կոդավորիչների մասին: Ես ժամանակ անցկացրեցի իմ սեփական Rotary Encoder պետական մեքենայի վրա `GPIO- ի բարձր/ցածր փոփոխություններին հետևելու և դրանք պտտվող դիրքերի քարտեզագրելու համար: Ես այստեղ խառը հաջողություն ունեի, այն ստացվեց «շատ» դեպքերի դեպքում, բայց միշտ կա ծայրահեղ դեպքեր և (դե) ցատկում և այլն: Նրա պատրաստ, շատ ավելի հեշտ է օգտագործել պատրաստի գրադարանը, և այն հիանալի է Python- ի համար տեղադրելու համար: Ես դա օգտագործեցի վերջում, քանի որ դա ինձ թույլ տվեց կենտրոնանալ շենքի զվարճալի հատվածի վրա, այլ ոչ թե տարիքներ ծախսել կարգաբերման խնդիրների վրա: Դրա բոլոր մանրամասները ներառված են աղբյուրի կոդի մեջ:

Եթե դուք նոր եք Raspberry Pi- ի, GPIO- ի և էլեկտրոնիկայի մեջ, խորհուրդ եմ տալիս հետևյալ ձեռնարկները, որոնք ձեզ կտանեն այն ամենը, ինչ անհրաժեշտ է վերը նշված դասավորությունը կատարելու համար.

projects.raspberrypi.org/hy/projects/physi…

thepihut.com/blogs/raspberry-pi-tutorials/…

Քայլ 13: Էլեկտրոնիկայի տեղափոխում մարմնի մեջ

Էլեկտրոնիկայի տեղափոխումը մարմնում
Էլեկտրոնիկայի տեղափոխումը մարմնում
Էլեկտրոնիկայի տեղափոխումը մարմնում
Էլեկտրոնիկայի տեղափոխումը մարմնում
Էլեկտրոնիկայի տեղափոխումը մարմնում
Էլեկտրոնիկայի տեղափոխումը մարմնում

Այն բանից հետո, երբ ես ավարտեցի հատակագիծը ՝ օգտագործելով սեղանի տախտակ, ժամանակն էր սկսել մտածել, թե ինչպես դրանք սոսնձել կափարիչի մարմնում: Ես որոշեցի, որ ուզում եմ այնպես անել, որ կարողանամ ապամոնտաժել և հեռացնել բոլոր էլեկտրոնային բաղադրիչները, եթե հետագայում ինչ -որ բան վերանորոգելու կամ փոխելու կարիք ունենամ: Դա իրականացնելու համար ես որոշեցի բոլոր ենթամասերը միացնել plug- ի միջոցով ՝ օգտագործելով dupont միակցիչներ:

Կոճակների համար, որոնք ես կպցրեցի որոշ երկարացման լարերի վրա և օգտագործեցի մետաղալար ՝ ծայրերը մեկուսացնելու համար, դա ինձ թույլ տվեց հավաքել և ապամոնտաժել դրանք մարմնից (օրինակ ՝ փորձարկման, այնուհետև ներկման և այլն): The Rotary Encoder- ն արդեն ուներ կապիչներ, որոնք կարող էին ընդունել dupont միակցիչները, այնպես որ ես պարզապես պետք է որոշ երկար լարեր պատրաստեի:

LED- ները մի փոքր ավելի շատ աշխատանք տևեցին. Դրա համար ես որոշեցի օգտագործել մի փոքր պլաստիկ ջարդոն (որն անհրաժեշտ էր կտրել) `շարժական վահանակ պատրաստելու համար` LED- ները տեղադրելու համար: Հետո ես դրանք տաք սոսնձեցի տեղում և սոսնձեցի դիմադրիչները և լարերը: Սա ստեղծեց հեռացման միավոր, որը ես կարող էի տեղավորել և հեռացնել, և դյուրացրեց նկարելը և ավարտելը:

Ուշադրություն դարձրեք, որ իմ զոդումը սարսափելի է, այնպես որ ես պահեցի այս պարզը և խուսափեցի չափազանց մանրամասն/տուգանքից: Վերջնական նկարում, որը կարող եք տեսնել, ես ունեի նաև շատ փոքր լայնատախտակներ (5x5), ես դրանցից մեկը տեղադրեցի ներսից ՝ վահանակ ապահովելու համար ՝ ամեն ինչ GPIO- ին/GPIO- ին միացնելու համար: Հատկապես դա օգտակար էր ընդհանուր գետնի երկաթուղի ստեղծելու համար, որը ես կարող էի օգտագործել և խուսափել գետնին հաղորդալարերի հետ միաժամանակ պտտվելուց դեպի Pi:

Այնուհետև ես տարայի մեջ կտրեցի տարբեր անցքեր ՝ լարերը Pi- ով հաղորդելու և GPIO- ին միացնելու համար: Այս դիզայնը թույլ տվեց ինձ լրացնել ամեն ինչ, եթե անհրաժեշտ լիներ (ինչ -որ բան մի քանի անգամ արեցի, երբ ավարտում էի շինարարությունը):

Քայլ 14: Հարմարեցման լավ կարգավորում

Fine Tuning the Fit
Fine Tuning the Fit
Fine Tuning the Fit
Fine Tuning the Fit

Այս պահին ես բախվեցի որոշ «համապատասխան» հարցերի: Նախ `երկկողմանի միակցիչների օգտագործումը էլեկտրագծերի համար նշանակում էր, որ դժվար էր դրանք դնել ցուցադրվող գլխարկով կապում, քանի որ բարձրության բավարար հեռավորություն չկար: Ես դա լուծեցի ՝ գնելով (սա այն սակավ բաներից մեկն է, որն իրականում գնել եմ այս նախագծի համար) մի փոքր GPIO քորոց երկարացնող սարք, որպեսզի ես կարողանամ ցուցադրվող գլխարկը ավելի բարձր նստել և տեղ թողնել, որպեսզի մուտք գործեմ մնացած GPIO կապում ՝ օգտագործելով dupont միակցիչներ:

Ես նաև կտրեցի փրփուրի հատակի մի քանի փոքր կտորներ ՝ տարայի ներսում կողային բարձիկներ պատրաստելու համար, ինչը օգնեց Pi + էկրանը ճիշտ տեղում դնել և դադարեցնել այն շարժվելուց:

Քայլ 15. Retro Up the Rotary Encoder

Retro Up the Rotary Encoder
Retro Up the Rotary Encoder

Պտտվող կոդավորիչները հաճախ գալիս են (ինչպես և իմը) գեղեցիկ փայլուն ժամանակակից «hi fi» ոճով բռնակով: Սա բոլորովին բնավորություն չէր կառուցվածքի համար, այնպես որ ես ստիպված էի այլ բան մտածել: Մասերի իմ պատահական տուփի մեջ ես հանդիպեցի մի հին ատամի, որը երկար ժամանակ կոտրել էի: Սա լավ տեսք ուներ, բայց չէր համապատասխանում պտտվող կոդավորիչին: Այստեղ իմ լուծումն այն էր, որ փորձեմ տարբեր պատի խրոցակներ, մինչև չգտա մեկը, որը տեղավորվում է պտտվող համարանիշի վրա, այնուհետև կտրում եմ այն ձևի մեջ, որպեսզի կարողանամ այն օգտագործել որպես «ներքին օձիք» ՝ պտուտակավոր կոդավորիչի վրա փորվածք տեղադրելու համար ՝ որպես ավելի համապատասխան թեմա: վերահսկողություն:

Քայլ 16: Ներքին երեսպատում

Ներքին երեսպատում
Ներքին երեսպատում
Ներքին երեսպատում
Ներքին երեսպատում

Ավելի շատ փրփուր հատակի սալիկներ: Այս անգամ ես դրանք օգտագործեցի փափուկ երեսպատում կառուցելու համար, որպեսզի այն ավելի հարմարավետ տեղավորվի (առանց դրա չափազանց չամրացված): Փրփուրից փոս կտրելով ես կարողացա նաև ներծծել որոշ «մի կտոր», որը պատրաստում է Pi- ի համար նախատեսված տարան: Ընդհանուր առմամբ, դա շատ ավելի կրելի էր դարձնում: Այս լուսանկարներում ցույց չի տրված, բայց ես այն փոքրացրել եմ հիմնական մարմնից, այնպես որ այն տեսանելի է ծայրերում, որը հետագայում նկարել եմ և այդ ամենը օգնել է մի փոքր հակադրություն և հետաքրքրություն հաղորդել պատրաստի իրին:

Քայլ 17: Մանրամասների ավելացում

Մանրամասների ավելացում
Մանրամասների ավելացում
Մանրամասների ավելացում
Մանրամասների ավելացում

Timeամանակն է սկսել ինչ -որ դեկոր ավելացնել և այն ավելի հետաքրքիր դարձնել: Առաջին հերթին ես ավելացրեցի պլաստիկի մի քանի շերտեր մեկ երեսի երկայնքով `դրան մի փոքր տեսողական հետաքրքրություն հաղորդելու համար: Հետո ես որոշ տերմինալներին ավելացրեցի մի քանի կեղծ լարեր և դրանք պարզապես հրեցի մարմնի մեջ փորված անցքի մեջ: Այս ամենը հետագայում ներկվել է տարբեր գույներով:

Քայլ 18. Ներկել և ավարտել մարմնի կառուցվածքը

Ներկում և ավարտում մարմնի կառուցում
Ներկում և ավարտում մարմնի կառուցում
Ներկում և ավարտում մարմնի կառուցում
Ներկում և ավարտում մարմնի կառուցում
Ներկում և ավարտում մարմնի կառուցում
Ներկում և ավարտում մարմնի կառուցում

Ես այնքան էլ մտահոգված չէի անարատ ավարտով, քանի որ ենթադրվում է, որ այն հին է և ամեն դեպքում լավ օգտագործված (իրականում ես կարող եմ վերադառնալ և ինչ -որ պահի նույնիսկ ավելի եղանակային փոփոխություններ անել դրա վրա): Բայց ես իսկապես ուզում էի, որ այն հետևողական և ամբողջական առարկայի տեսք ունենար, որը պատահական աղբից միախառնված չէր (չնայած դա հենց դա էր): Ես անցա հղկման, լցման (բազմափուլը պլաստիկի համար իմ ընտրած լցոնիչը) բազմաթիվ կրկնումների և կրկնելու: Այնուհետև մի քանի շերտ այբբենարան և ներկ, որոնք հետագայում կօգնեն հարթել բոլոր միացումները: Հետո ավելի շատ հղկում և ավելի լցնում, և ավելի շատ ներկում:

Երբ ես տեսա և զգացի այն մարմինը, որից ես գոհ էի, ես սկսեցի ավելացնել որոշ մանրամասներ: Կառավարիչների վրա գրիլների վրա քսում և քսում էի, որպեսզի նրանց ավելի զգալ մետաղական ցանցը: Ես նաև ավելացրել եմ ներկի փոքր մանրամասներ այստեղ և այնտեղ ՝ օգտագործելով ակրիլներ:

Ես փորեցի պատահական կպչուն պիտակների իմ հավաքածուն և ավելացրեցի մի քանիսը ՝ էֆեկտն ավարտելու համար: Հետո ես եղանակային լվացում արեցի մի քանի խառը ներկերով, որպեսզի մի քիչ կեղտ և կեղտ ավելացնեմ դժվարամատչելի տարածքներում, որոնք դժվար կլինի մաքրել: Սա գուցե այս պահին մի փոքր չափազանց նուրբ է, և ես կարող եմ վերադառնալ և մի քանիսը ավելացնել ավելի ուշ:

Քայլ 19: Կոդավորում

Կոդավորում
Կոդավորում

Այս նախագծի իմ հավակնության մի մասն էր նրան ստիպել արձագանքել իրական փիփոբիի նման, և ինձ համար այդ խաղի ամենանշանավոր հատվածը ժամացույցը շրջելն է տարբեր էկրանների միջև: Դրան հասնելու համար ես որոշեցի գրել pipboy ինտերֆեյս, որը կկարողանա ցուցադրել մի շարք էկրաններ և թույլ կտա ձեզ ոլորել դրանց միջև: Ես ուզում էի էկրանների բովանդակությունը դարձնել մի բան, որը ես հեշտությամբ կարող էի փոխել, և իսկապես կարողանայի ավելացնել/հեռացնել էկրաններ:

Ես ընտրում եմ սա գրել Python- ում ՝ Raspberry Pi- ի, GPIO- ի և այլնի գերազանց աջակցության շնորհիվ: Python- ը բավականին ցածր է իմ ծանոթ լեզուների ցանկում, ուստի սա ինձ համար ուսուցման մեծ կոր էր, և կոդի մեծ մասը խառնաշփոթ արդյունքում. Thisամանակի ընթացքում ես կթարմացնեմ սա, քանի որ ես ամբողջովին չեմ ավարտել այն ամենը, ինչ ուզում էի անել այստեղ, բայց այն բավականին մոտ է կիսվել հիմա, քանի որ բոլոր հիմնական հասկացությունները կան:

UI կոդի իմ ձևավորումը ողջամիտ է, կա հիմնական Python սցենար, որը կարգավորում է էկրանը, կարգավորում GPIO- ն, բեռնում էկրանները և մտնում անսահման թարմացման օղակ ՝ սպասելով օգտվողի իրադարձություններին և անհրաժեշտության դեպքում թարմացնելով էկրանը: Բացի այդ, կան տարբեր օժանդակ սցենարներ, որոնք օգնում են UI էկրաններ առաջացնել ժամանակից շուտ:

Օգտագործված հիմնական գրադարանները.

  • pygame: Ես դա օգտագործում եմ որպես շարժիչ ՝ UI- ն գործարկելու համար, քանի որ դա թույլ տվեց ինձ գծել կամայական գրաֆիկա, շահարկել պատկերներ, տառատեսակներ, անցնել ամբողջական էկրան և այլն:
  • pyky040. Սա ապահովում է պտտվող հավաքիչի գործածումը և ինձ շատ ժամանակ խնայում է (շատ շնորհակալ եմ Ռաֆայել Յանսին ՝ սա թողարկելու համար:
  • RPi. GPIO. GPIO- ի լավ վարման համար ես խաղացի այստեղ մի քանի տարբերակով, բայց դա ինձ տվեց իմ ուզած ճկունության ճիշտ մակարդակը, մասնավորապես այն, ինչ վերաբերում է պտտվող կոդավորիչը վարելու համար պահեստային GPIO- ի օգտագործմանը որպես այլ 3.3 վ և այլն:
  • աղմուկ. Պերլինի աղմուկ ստեղծելու համար թույլ տվեք ստեղծել ռադիոյի էկրանի համար պատահական ալիքի ձև, որն ավելի բնական տեսք ունի
  • հերթ. Ես բախվեցի մի հիասթափեցնող սխալի հետ, երբ պտտվող կոդավորողից շրջվում են իրադարձությունները և LCD դիսփլեյի թարմացման (շատ) դանդաղ արագությունը: Ի վերջո, այն, ինչ ես լուծեցի, դա այն էր, որ հերթի մեջ մտցնեմ իրադարձությունները պտտվող կոդավորիչից և դրանք մեկ առ մեկ վերցնել, երբ էկրանը թարմացվում էր:
  • os, sys, threading, time: բոլորը օգտագործվում են պիթոնի ստանդարտ գործառույթների համար

Նշում էկրանի մշակման նախագծման վերաբերյալ: Էկրանները սահմանվում են որպես ծածկագրում առկա անունների ցանկ: Entryանկի յուրաքանչյուր գրառում կարող է ունենալ դրա հետ կապված կամ png, կամ txt ֆայլ (կամ երկուսն էլ), ծածկագիրը յուրաքանչյուր էկրանին պահում է քեշի հետ կապված linux գրացուցակի կառուցվածքում ֆայլեր փնտրելուց հետո:

Այդ ֆայլերի բովանդակությունը ստեղծվում է այլուր (ձեռքով կամ այլ սցենարներով), որոնց ելքը պահվում է որպես-p.webp

Կան տարօրինակ բացառություններ, երբ մի քանի բան կոդավորված է, օրինակ ՝ պատահական ռադիոյի էկրանի ալիքի ձևը, որը հաշվարկված է իրական ժամանակում և անիմացիոն:

Եթե անալոգիան օգնում է, պատկերացրեք UI- ի դիզայնը որպես չափազանց կոպիտ և պարզ վեբ դիտարկիչ. Դրանց բովանդակությունը անկախ է և պարզապես կազմված է UI- ի կողմից, ինչպես զննարկիչը կգրավի վեբ էջ:

Ահա այստեղ օգտագործված հիմնական գրադարանների հղումները.

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

Քայլ 20: Վիճակագրության էկրան

Վիճակագրության էկրան
Վիճակագրության էկրան

Առանց դասական pipboy ուրվագծերի վիճակագրության էկրանի ոչ մի տղա չի լինի ամբողջական: Դրա համար իմ ընկերը ստեղծեց ստատիկ PNG, որը ես պարզապես ցուցադրում եմ որպես տեղապահ: Ապագա ամսաթվին ես կարող եմ վերադառնալ և ավելի դինամիկ դարձնել որոշ պատահական վնասների ներկայացմամբ կամ նմանատիպ այլ բաներով, բայց առայժմ դա ստատիկ էկրան է:

Քայլ 21. Գույքագրման էկրան

Գրապահոցների էկրան
Գրապահոցների էկրան

Ինչ -որ բան, որը միշտ օգտակար է Pi նախագծերի հետ, հիմնական տեղեկատվության ցուցադրման միջոց է, ինչպես IP հասցեն, ինչպես նաև DHCP'd և այլն: Ես գրել եմ մի փոքր Linux սցենար `այս տեղեկատվությունը հավաքելու և պարզապես այն վերահղելու համար համապատասխան անունով տեքստային (.txt) ֆայլին, որն այնուհետև վերցնում և ցուցադրում է UI համակարգը: Այս կերպ, եթե ես երբևէ գտնվեմ այլ վայրում, կարող եմ արձակել սցենարը և վերցնել թարմ.txt ֆայլ ՝ արդի IP հասցեով և այլն:

Քայլ 22: Քարտեզի էկրան

Քարտեզի էկրան
Քարտեզի էկրան

Այս էկրանը աշխատելու համար առավել բարդ էկրաններից մեկն էր: Raspberry Pi 0 -ը չի գալիս GPS մոդուլով, բայց ես ուզում էի այնպես անել, որ Քարտեզը որոշակի վավերականություն ունենա այնտեղ, որտեղ Pi- ն էր: Սրա լուծումը առանձին սցենար է, որը քաշում է Pi IP հասցեն, օգտագործում է https://ipinfo.io- ն ՝ մոտավոր տեղ գտնելու համար: JSON- ի պատասխանը գրվում է, այնուհետև ես փոխակերպում եմ կոորդինատները, որպեսզի կարողանամ մոտակայքում բացել openstreetmap.org սալիկը:

Սալիկներն իջնում են բազմաթիվ գույներով, բայց ես ուզում էի, որ կանաչ մասշտաբի պատկերը համապատասխանի Pipboy- ի տեսքին և զգացմունքներին, և չգտա հենց այդպիսի մեկը, ուստի ես գրեցի կանաչ մասշտաբի զտիչ Python- ում ՝ գույները վերափոխելու համար: openstreetmap սալիկի և այնուհետև պահեք նոր պատկերը-p.webp

Վերոնշյալ գործընթացի ընթացքում տեքստային ֆայլ է ստեղծվում մոտավոր տեղադրությամբ և կոորդինատներով, իսկ քարտեզի սալիկը ստեղծվում է որպես png: The pipboy UI- ն քաշում է այս երկու ֆայլերը և համընկնում բովանդակության հետ ՝ ստեղծելով աշխատող Քարտեզի էկրան (ըստ գտնվելու վայրի IP հասցեի լուծման ճշգրտության):

Քայլ 23. Տվյալների էկրան

Տվյալների էկրան
Տվյալների էկրան

Սա պարզապես թեստային քարտ է (որը ստեղծվել է մեկ այլ պիթոնի սցենարով և թողարկվում է-p.webp

Քայլ 24. Ռադիոյի էկրան

Ռադիոէկրան
Ռադիոէկրան

Քարտեզի էկրանին զուգահեռ, սա այն մյուս էկրանն է, որն ինձ իսկապես շատ աշխատանք է պատճառել: Սա միակ էկրանն է, որտեղ ես խաղացել եմ անիմացիայի հետ, և այն հիմնականում աշխատում է ըստ նախատեսվածի, բայց կատարումը դեռևս խնդիր է LCD էկրանի թարմացման տեմպերի հետ: Էկրանի կառուցվածքը տեքստային ֆայլ է, որը պարունակում է որոշ պատահականորեն ընտրված ռադիո անուններ (դրանք պարզապես կամայական տողեր են և ոչինչ չեն անում, քան էկրանին ցուցակ ներկայացնելը),-p.webp

Սա միակ էկրանն է, որտեղ pygame- ի օղակը կատարում է իրական աշխատանք յուրաքանչյուր ցիկլի ընթացքում, այն պետք է հաշվարկի նոր ալիքի ձևը, ջնջի էկրանի այն հատվածը և վերագծի:

Քայլ 25. Վերջնական մտքեր

Image
Image
Վերջնական մտքեր
Վերջնական մտքեր

Սա, հավանաբար, իմ կատարած ամենաբարդ կառույցն է, որի մեջ կան բազմաթիվ տարբեր հասկացություններ և հմտություններ, բայց դա նաև ամենահաճելիներից մեկն է, որն իրականում աշխատում է արդյունքում: Ես դեռ կարգի եմ բերում իմ որոշ ավելի տեխնիկական նշումներ, ինչպես նաև կոդի համար github ռեպո: Բոլորը շուտով հասանելի կդարձնեմ, այնպես որ շուտով նորից կվերադառնամ ՝ լրացուցիչ մանրամասների և տեղեկությունների համար, քանի որ ժամանակ կստանամ դրանք ավելացնելու համար:

Եթե դուք մոտենում եք նման բան անելուն, ես կցանկանայի տեսնել արդյունքները, և եթե ունեք որևէ հարց, խնդրում ենք ազատ զգալ կապի մեջ, և ես կփորձեմ ավելի շատ տեղեկություններ ավելացնել ցանկացած քայլում, որտեղ ցանկանում եք օգնել:

Քայլ 26. Բաց կոդ Github- ում

Կոդ բաց է Github- ում
Կոդ բաց է Github- ում

Վերջապես սկսեցի բացել ծածկագիրը Github- ում: Այն հասանելի է այս հղումով ՝

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