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

Տեխնոլոգիա ձեր պապի համար. 13 քայլ (նկարներով)
Տեխնոլոգիա ձեր պապի համար. 13 քայլ (նկարներով)

Video: Տեխնոլոգիա ձեր պապի համար. 13 քայլ (նկարներով)

Video: Տեխնոլոգիա ձեր պապի համար. 13 քայլ (նկարներով)
Video: Գեղեցիկ խոսքեր 2024, Սեպտեմբեր
Anonim
Image
Image

Քանի՞ անգամ եք գնացել ձեր տատիկի և պապիկի տուն ՝ օգնելու «տեխնոլոգիական խնդրին», որն ավարտվել է որպես անջատված հոսանքի մալուխ, մեռած մարտկոց, կամ հեռուստացույցի աղբյուրը չկարողանալով միացնել: Ես գիտեմ, որ ինձ համար դա բավականին հաճախ է պատահում: Թեև նրանց խնդիրների մեծ մասը կարելի է լուծել ՝ պարզապես խանութ գնալով որոշ նոր AA- ների համար, երբեմն նրանք կարող են օգուտ քաղել ավելի հարմարեցված լուծումից:

Օրինակ, ընկերուհուս պապիկը նոր հեռուստացույց ունեցավ, և մենք փորձեցինք սովորեցնել նրան, թե ինչպես փոխել աղբյուրը, որպեսզի նա կարողանա անցնել DVD- ների և հեռուստատեսության միջև, բայց նա պարզապես չկարողացավ դա պարզել: Նա նաև զբաղվում է տեսողության անկմամբ և այնքան էլ շահագրգռված չէ բարդ գործընթացները հիշելու փորձերով, նա պարզապես ցանկանում է դիտել իր շոուները, երբ դա ցանկանա: Մեր վերջին այցի ընթացքում քայլերը հանգիստ կերպով բացատրելուց հետո, առանց մեծ հաջողության, որոշեցի, որ ես նրան կդարձնեմ իր պարզ երկու կոճակ ունեցող հեռակառավարիչը: Սա թույլ կտա նրան ցավոտ կերպով փոխել իր հեռուստատեսության մուտքի աղբյուրը ՝ հեշտությամբ անցնելով իր սիրելի Matlock DVD- ների և Price is Right- ի միջև:

Քայլ 1: Նյութեր

  • PhidgetIR
  • PhidgetSBC4 (կամ Raspberry Pi- ի նման մեկ տախտակ ունեցող համակարգիչ)
  • Sոդման երկաթ
  • Կողքի կտրիչներ
  • Մետաղալարեր
  • Jumper լարերը
  • USB մալուխ
  • Ֆիջեթ մալուխ
  • Պարիսպ
  • Միջանցքային վերնագրեր
  • Heերմասեղման խողովակ

Քայլ 2: Պլանավորում

3D տպագրություն
3D տպագրություն

Հեռակառավարիչը ստեղծելու համար ինձ անհրաժեշտ էր հեռուստատեսությանը սպառողական ինֆրակարմիր (CIR) հրամաններ ուղարկելու ունակություն: Ես որոշեցի օգտագործել PhigetIR- ը այս առաջադրանքի համար: PhidgetIR- ը USB- ով վերահսկվող սարք է, որն ունի CIR հրամաններ ուղարկելու և ստանալու հնարավորություն: Ես ընտրեցի սա մի քանի պատճառով.

  • Ես ուզում էի հնարավորինս արագ ավարտել այս նախագիծը և այն գործի դնել, այնպես որ իմ տատանումների և տախտակի կոտրման մասին միտքը գրավիչ չէր: Բացի այդ, որքանո՞վ է հավանական, որ իմ ձեռքով զոդված սխեմաները դեռ կաշխատեն մեկ-երկու տարի հետո:
  • PhidgetIR- ն ունակ է «սովորել» CIR հրամաններ ՝ զարգացումը դարձնելով չափազանց պարզ:
  • Դուք կարող եք օգտագործել գրեթե ցանկացած հիմնական ծրագրավորման լեզու PhidgetIR- ի միջոցով: Սա նշանակում էր, որ ես կարող եմ օգտագործել Java- ն և արագ ավարտել գործերը:
  • Ի վերջո, ես աշխատում եմ Phidgets- ում, այնպես որ ես հարմար եմ API- ի հետ, և միշտ այնտեղ կան պահեստային սարքեր:

Քանի որ ես որոշեցի օգտագործել PhidgetIR- ը, ինձ անհրաժեշտ էր համակարգիչ, որն այն կաշխատի: Ես ուզում էի, որ այս նախագիծը լինի առանձին ծրագիր, ինչպես սովորական հեռակառավարման վահանակը, այնպես որ աշխատասեղանը կամ նոութբուքը դուրս էր: Ես որոշեցի օգտագործել PhidgetSBC4 (մեկ տախտակ ունեցող համակարգիչ, որն աշխատում է Debian Linux- ով), քանի որ այն ինձ թույլ տվեց միանալ երկու կոճակներին ՝ առանց որևէ լրացուցիչ սարքավորման: Նրանք պարզապես կարող են ուղղակիորեն միացված լինել ներկառուցված VINT հանգույցին: Նշում. Այս նախագծի համար կարող եք նաև օգտագործել Raspberry Pi: Ի վերջո, ֆունկցիոնալ առողջ լինելուց բացի, ես ուզում էի, որ այս նախագիծը հիանալի տեսք ունենար, ուստի որոշեցի, որ 3D տպագիր պարիսպը անհրաժեշտ կլինի:

Քայլ 3: 3D տպում

3D տպագրություն
3D տպագրություն
3D տպագրություն
3D տպագրություն

Այս նախագծի համար Geomagic- ը օգտագործվել է պարիսպի մոդելավորման համար: Կան եռաչափ քայլերի ֆայլեր, որոնք հասանելի են ինչպես PhidgetIR- ի, այնպես էլ PhidgetSBC4- ի համար, ինչը պարզեցրեց գործընթացը: Այս քայլի ընթացքում որոշումներ են ընդունվել ՝ պարիսպի չափի և ֆունկցիոնալության վերաբերյալ.

  • PhidgetIR- ն ունի երկու IR LED, որոնք հրամաններ ուղարկելու համար պետք է ուղղված լինեն դեպի հեռուստացույց: PhidgetIR- ի տախտակի շուրջը պարիսպը նախագծելու փոխարեն, IR LED- ները կարող են ապամոդվել և սոսնձվել պարիսպի կողքի անցքերի մեջ: PhidgetIR տախտակն այնուհետև կարող է տեղադրվել LED- ներից հեռու ՝ օգտագործելով դատարկ տարածքը:
  • PhidgetSBC4- ի VINT Hub միակցիչները կարող են թեքվել դեպի վեր, ինչը դեռ թույլ կտա մուտք գործել կոճակի միացումներին, ինչպես նաև կխոչընդոտի ավելի մեծ պարիսպ ստեղծելու անհրաժեշտությանը:

Ես նաև որոշեցի ավելացնել կոճակների համար պիտակ և պիտակ, որը ցույց է տալիս այն ուղղությունը, որով այն պետք է ուղղված լինի, որպեսզի IR LED- ները նշվեն ճիշտ ուղղությամբ: Տեղանքը տպել եմ սեւ ABS պլաստիկից:

Քայլ 4. Հավաքում - Հեռացրեք LED- ները

Assemblyողով - Հեռացրեք LED- ները
Assemblyողով - Հեռացրեք LED- ները
Assemblyողով - Հեռացրեք LED- ները
Assemblyողով - Հեռացրեք LED- ները
Assemblyողով - Հեռացրեք LED- ները
Assemblyողով - Հեռացրեք LED- ները

IR LED- ները, ի վերջո, կպցվեն պարիսպի կողային անցքերի մեջ: Սա նշանակում է, որ նրանք նախ պետք է ապամոդուլացվեն:

Քայլ 5. Հավաքում. Ավելացրեք անցքերի վերնագրեր

Համագումար - Ավելացրեք անցքերի վերնագրերի միջոցով
Համագումար - Ավելացրեք անցքերի վերնագրերի միջոցով
Համագումար - Ավելացնել անցքերի վերնագրերի միջոցով
Համագումար - Ավելացնել անցքերի վերնագրերի միջոցով

Հաջորդը, անցքերի վերնագրերը ավելացվեցին այնտեղ, որտեղ LED- ները նախկինում էին, ինչը նրանց դյուրին դարձրեց 4-պտուտակ ցատկող մետաղալարի օգտագործումը: Օգտագործեք ջերմության նվազեցման խողովակներ `պատահական շփումը կանխելու համար:

Քայլ 6. Հավաքում - Կցեք LED- ները

Assemblyողով - Կցեք LED- ները
Assemblyողով - Կցեք LED- ները
Համագումար - Կցեք LED- ները
Համագումար - Կցեք LED- ները

Կպցրեք LED- ները պարիսպի կողքին:

Քայլ 7. Հավաքում. Կցեք PhidgetIR- ը

Համագումար - Կցեք PhidgetIR- ը
Համագումար - Կցեք PhidgetIR- ը
Համագումար - Կցեք PhidgetIR- ը
Համագումար - Կցեք PhidgetIR- ը
Համագումար - Կցեք PhidgetIR- ը
Համագումար - Կցեք PhidgetIR- ը

Կցեք PhidgetIR- ը պարիսպին և միացրեք LED- ները:

Քայլ 8. Հավաքում - Ավելացնելով կոճակներ

Վեհաժողով - Ավելացնելով կոճակներ
Վեհաժողով - Ավելացնելով կոճակներ
Վեհաժողով - Ավելացնելով կոճակներ
Վեհաժողով - Ավելացնելով կոճակներ
Վեհաժողով - Ավելացնելով կոճակներ
Վեհաժողով - Ավելացնելով կոճակներ

Սեղմման կոճակները պետք է միացված լինեն PhidgetSBC- ի ներկառուցված VINT հանգույցին, այնպես որ ես կտրեցի Phidget Cable- ը կիսով չափ և ծայրերը կպցրի կոճակներին: Նկատի ունեցեք, որ պահանջվում է միայն սպիտակ մետաղալար (ազդանշան) և սև (հող):

Քայլ 9. Համագումար - Ամեն ինչ միասին հավաքելը

Վեհաժողով - Ամեն ինչ միասին դնել
Վեհաժողով - Ամեն ինչ միասին դնել
Վեհաժողով - Ամեն ինչ միասին դնել
Վեհաժողով - Ամեն ինչ միասին դնել

Ամեն ինչ հավաքելու համար պահանջվում էր մալուխային որոշ կառավարում, այնուամենայնիվ, պարիսպը լավ աշխատեց:

Քայլ 10. Softwareրագրակազմ - ծածկագիր

Այս նախագծի համար պահանջվում է միայն մեկ Java ֆայլ, որը կարող եք գտնել այստեղ: Usesրագիրը օգտագործում է մեկ PhidgetIR օբյեկտ և երկու DigitalInput օբյեկտ: Այս օբյեկտները կարող եք ստեղծել այսպես.

PhidgetIR ir = նոր PhidgetIR ();

DigitalInput tvButton = նոր DigitalInput (); DigitalInput otherButton = նոր DigitalInput ();

Թվային մուտքագրման օբյեկտները քարտեզագրվում են VINT հանգույցի ֆիզիկական կոճակի վրա: Կցման, անջատման, սխալի և վիճակի փոփոխման իրադարձությունները նույնպես բաժանորդագրված են.

tv.setIsHubPortDevice (ճշմարիտ);

tvButton.setHubPort (4); tvButton.addAttachListener (onAttachListener); tvButton.addDetachListener (onDetachListener); tvButton.addErrorListener (onErrorListener); tvButton.addStateChangeListener (onStateChangeListener); tvButton.open (); otherButton.setIsHubPortDevice (ճշմարիտ); otherButton.setHubPort (5); otherButton.addAttachListener (onAttachListener); otherButton.addDetachListener (onDetachListener); otherButton.addErrorListener (onErrorListener); otherButton.addStateChangeListener (onStateChangeListener); otherButton.open ();

Վերը նշված վիճակի ունկնդրի ունկնդիրն ունի հետևյալ տեսքը.

privatestatic DigitalInputStateChangeListener onStateChangeListener = նոր DigitalInputStateChangeListener () {@OverridepublicvoidonStateChange (DigitalInputStateChangeEvent disce) {

DigitalInput ch = (DigitalInput) disce.getSource (); փորձեք {if (ch.getHubPort () == 4 && disce.getState () == true) {tvButtonActivated = true;} if (ch.getHubPort () == 5 && disce.getState () == true) {otherButtonActivated = true;}} catch (PhidgetException ex) {System.out.println ("Սխալ."+ ex.getDescription ());}}};

Երբ կոճակն ակտիվանում է, իրադարձության ծածկագիրը կկիրառվի և դրոշակ կդնի: Այս դրոշները կուղղորդվեն և կվերակայվեն հիմնական հանգույցում: Հիմնական օղակը պարզապես սպասում է կոճակի վիճակի փոփոխությանը, այնուհետև IR հրամաններ է ուղարկում ՝ օգտագործելով PhidgetIR API- ից հասանելի փոխանցման գործառույթը:

while (true) {if (tvButtonActivated) {

tvButtonActivated = կեղծ; Log.log (LogLevel. INFO, «ՓՈՓՈԽՈ SOԹՅԱՆ ԱURԲՅՈՐ - հեռուստատեսություն»); ir.transmit (sourceButtonString, codeInfo); Thread.sleep (500); ir.transmit (rightButtonString, codeInfo); Thread.sleep (500); ir.transmit (enterButtonString, codeInfo);} if (otherButtonActivated) {otherButtonActivated = false; Log.log (LogLevel. INFO, «ՓՈԽՈ Ա SOԲՅՈՐ - DVD»); ir.transmit (sourceButtonString, codeInfo); Thread.sleep (500); ir.transmit (leftButtonString, codeInfo); Thread.sleep (500); ir.transmit (enterButtonString, codeInfo);} Thread.sleep (250);}

Քայլ 11. Softwareրագրակազմ - CIR հրամաններ

Softwareրագրային ապահովում - CIR հրամաններ
Softwareրագրային ապահովում - CIR հրամաններ

Ահա մի օրինակ, թե ինչպես ստեղծել հրաման (այս դեպքում ձայնի բարձրացման հրաման).

// IR ծածկագիր

IRCodeInfo sourceButtonCI = նոր IRCodeInfo (); String volumeUp = "77e1d0f0"; // Կարգավորել աղբյուրի կոճակը sourceButtonCI.bitCount = 32; sourceButtonCI.encoding = IRCodeEncoding. SPACE; sourceButtonCI.gap = 108921; sourceButtonCI.trail = 549; sourceButtonCI.zero = newint [2]; sourceButtonCI.zero [0] = 549; sourceButtonCI.zero [1] = 627; sourceButtonCI.one = newint [2]; sourceButtonCI.one [0] = 549; sourceButtonCI.one [1] = 1755; sourceButtonCI.header = newint [2]; sourceButtonCI.header [0] = 9084; sourceButtonCI.header [1] = 4600; sourceButtonCI.repeat = newint [3]; sourceButtonCI. կրկնել [0] = 9084; sourceButtonCI. կրկնել [1] = 2308; sourceButtonCI. կրկնել [2] = 549; sourceButtonCI.length = IRCodeLength. CONSTANT;

Այս հրամանի մասին տեղեկատվություն ստանալու համար ես պարզապես օգտագործեցի PhidgetIR- ի օրինակը, որն ուղեկցվում է Phidget գրադարաններով: Հեռակառավարիչը PhidgetIR- ի ուղղությամբ ցույց տալուց և ձայնի բարձրացման կոճակը պահելուց հետո IR- ն «սովորում» է ծածկագիրը և լրացնում օրինակը: Այս տեղեկատվությունը կարող է պարզապես պատճենվել կոդի մեջ:

Քայլ 12: ningրագրի գործարկում

Java ֆայլը կարող է գրվել և կազմվել արտաքին համակարգչի վրա: Տեղադրեք PhidgetRemote.java և phidget22.jar նույն թղթապանակում և գործարկեք հետևյալ հրամանը.

Windowsjavac -classpath.; Phidget22.jar PhidgetRemote.java

macOS/Linuxjavac -classpath.: phidget22.jar PhidgetRemote.java

Կազմելուց հետո պատճենեք ստեղծված դասի ֆայլերը PhidgetSBC4- ում և կազմաձևեք, որ այն գործի բեռնման վրա:

Քայլ 13: Արդյունք

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

Հեռակառավարման մրցույթ 2017 թ
Հեռակառավարման մրցույթ 2017 թ
Հեռակառավարման մրցույթ 2017 թ
Հեռակառավարման մրցույթ 2017 թ

Երրորդ մրցանակ Հեռակառավարման մրցույթում 2017 թ

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