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

Համակարգչային IR հեռակառավարում ՝ 4 քայլ
Համակարգչային IR հեռակառավարում ՝ 4 քայլ

Video: Համակարգչային IR հեռակառավարում ՝ 4 քայլ

Video: Համակարգչային IR հեռակառավարում ՝ 4 քայլ
Video: Zigbee հեռակառավարման վահանակ խելացի տան Moes 4 կոճակների համար: Ընդհանուր ակնարկ, Home Assistant 2024, Նոյեմբեր
Anonim
Համակարգչային IR հեռակառավարում
Համակարգչային IR հեռակառավարում

Բացի բազմաթիվ այլ նպատակներից, ես օգտագործում եմ իմ համակարգիչը որպես մուլտիմեդիա կենտրոն: Կան դեպքեր, երբ ես հանգստանում եմ բազմոցին ՝ երաժշտություն լսելիս կամ ֆիլմ կամ հեռուստացույց դիտելիս և չեմ զգում, որ վեր եմ կենում ձայնը կարգավորելու կամ հեռուստաալիքը փոխելու ամեն անգամ, երբ հիմար գովազդեր են հայտնվում, կամ ես քնում եմ և ցանկանում լռություն: Այսպիսով, ես որոշեցի իմ համակարգիչը հեռակառավարել ստանդարտ IR հեռակառավարմամբ, որպեսզի կարողանամ ուղղակիորեն սեղմել կոճակը `մկնիկը կամ ստեղնաշարի համր ստեղնը կատաղի բռնելու փոխարեն:

Նախագիծը բաղկացած է մի քանի մասից.

  1. Հեռակառավարման վահանակ
  2. Համակարգչի ծրագրակազմ
  3. IR ընդունիչի մոդուլ

Քայլ 1: Հեռակառավարման վահանակ

Հեռակառավարման վահանակ
Հեռակառավարման վահանակ

Առաջին տարրը `հեռակառավարման վահանակը, չնչին է: Պարզապես օգտագործեք ցանկացած IR վերահսկիչ, որը Ձեզ դուր է գալիս: Ես օգտագործել եմ մեկը, որը վաճառվում է որպես հավաքածու ՝ IR ընդունիչի հետ միասին - տես նկարը: Միակ պատճառը, որ ես որոշել եմ այս տեսակի համար, դա այն է, որ ես այն արդեն ունեի տանը:

Քայլ 2: Softwareրագրակազմ

Ես ստեղծել եմ ծրագիրը GNU/Linux OS- ի համար, որն աշխատում է տերմինալում: Աղբյուրի կոդը անվճար է ներբեռնելու/օգտագործելու/համօգտագործելու/փոփոխելու համար: Կոդ կազմելու համար պարզապես տերմինալում թողարկեք այնպիսի հրաման, ինչպիսին է gcc -o remotePC remotePC.c: Typeրագրի տեսակը գործարկելու համար./remotePC:

Այս քայլի հետևյալ տեղեկությունները հասցեագրված են նրանց, ովքեր հետաքրքրված են, թե ինչպես են գործերն աշխատում:

Րագրի նկարագրությունը

Firstրագիրը նախ ստուգում է, թե արդյոք գոյություն ունի ֆայլը /dev /ttyACM0 կամ ttyACM1: Եթե այդպես է, ֆայլի խմբի ID- ն ստուգվում է, որ զրոյից տարբեր է: Սա նշանակում է, որ սերիական պորտը կարող է կարդալ և գրել սովորական օգտվողին: 2 բայթ 0xAA 0x55 արժեքներով այնուհետև գրվում են նավահանգստում ՝ ազդանշան տալու համար, որ ծրագիրը պատրաստ է ստանալ տվյալները: Մուտքային տվյալները համեմատվում են պահպանված արժեքների հետ: Եթե համընկնումը գտնվի, նախապես որոշված գործողությունը կատարվում է:

Volumeավալի վերահսկողություն

Isրագիրը կարող է միացնել/անջատել ձայնը, բարձրացնել/նվազեցնել ձայնի մակարդակը համակարգի մակարդակով: Դա ձեռք է բերվում pactl ծրագրի կիրառմամբ: Այնուհետև հրամաններն այսպիսին են.

pactl set-sink-mute 0 անջատիչ

pactl set-sink-volume 0 +10%

pactl set-sink-volume 0 -10%

Անհրաժեշտության դեպքում տեղադրեք պահանջվող փաթեթները:

VLC Media Player- ի վերահսկում

Programրագիրը կարող է նաև սկսել/դադարեցնել աուդիո/վիդեոն և VLC Media Player- ի երգացանկի նախորդ կամ հաջորդ երգը փոխել: Այս դեպքում օգտագործվում է Desktop Bus- ը: Հրամանները.

dbus-send --type = method_call --dest = org.mpris. MediaPlayer2.vlc

/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. PlayPause

dbus-send --type = method_call --dest = org.mpris. MediaPlayer2.vlc

/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Next

dbus-send --type = method_call --dest = org.mpris. MediaPlayer2.vlc

/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Նախորդ

Քայլ 3: IR ընդունիչի մոդուլ

IR ընդունիչի մոդուլ
IR ընդունիչի մոդուլ
IR ընդունիչի մոդուլ
IR ընդունիչի մոդուլ
IR ընդունիչի մոդուլ
IR ընդունիչի մոդուլ

Նախագծի երրորդ մասը ամենաբարդն է, բայց դեռ բավականին պարզ: Գաղափարն այն է, որ IR ընդունիչն ազդանշանը կուղարկի MCU, որը այն կփոխակերպի եզակի համարի: Այս համարը այնուհետև համակարգչին կփոխանցվի USB- ի միջոցով:

Մոդուլը նախատեսված է տեղադրվել ԱՀ պատյանում և միացված լինել մայր տախտակի USB անցքին մալուխով: Այն դեպքում, երբ նախընտրում եք USB- ի արտաքին կապը, ստիպված կլինեք փոքր ճշգրտումներ կատարել:

MCU

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

IR ընդունիչ

Երկրորդ մասը, որի վրա հիմնված է մոդուլը, IR ընդունիչն է `VS1838B, այն, ինչ նշված է 1 -ին քայլում:

UART/USB փոխարկիչ

Երրորդ մասը MCP2221- ն է, որը UART/I2C/USB փոխարկիչն է:

Խնդիրն է համատեղել այս 3 մասերը `կառուցելու մոդուլ, որը կկարողանա ազդանշաններ ստանալ IR հեռակառավարման վահանակից և դրանք հանձնել համակարգչին:

Էլեկտրամոնտաժը

Առաջին նկարում կա փորձարկման սխեման հացահատիկի վրա: Երկրորդում կա էլեկտրագծերի սխեման:

Մասերի ցանկը

1 հատ PIC16F1829 (կամ որևէ այլ MCU)

1 հատ VS1838B (կամ ցանկացած այլ IR ընդունիչ)

1 հատ MCP2221 (կամ ցանկացած այլ UART/USB փոխարկիչ)

2 հատ 4 պինանի վերնագիր

1 հատ 6-փին վերնագիր

1 հատ դիմադրություն 100R

2 հատ դիմադրություն 10K

2 հատ դիմադրություն 330R

1 հատ կոնդենսատոր 470 nF

2 հատ էլեկտրոլիտիկ կոնդենսատոր 4.7 uF

1 հատ անջատիչ (ըստ ցանկության)

PCB հավաքում

Մոդուլը միացրեք սխեմայի օգտագործմամբ: Դուք կարող եք կամ օգտագործել ունիվերսալ տախտակ կամ ստեղծել անհատական PCB: Եթե վերջինս այդպես է, ես տրամադրել եմ KiCad ֆայլերը ստորև արխիվում:

Որոնվածը

MPLAB X IDE- ի և XC8 կոմպիլյատորի օգտագործմամբ գրված PIC- ի աղբյուրի կոդը հասանելի է ստորև ներբեռնման համար:

Աղբյուրի ծածկագիրը նշում է

Նրանց համար, ովքեր կցանկանային իմանալ, թե կոնկրետ ինչ է անում ծրագիրը, հետևյալ տողերն են:

Բոլոր պարամետրերն անելուց հետո կարմիր LED- ը միացված է, և MCU- ն սպասում է 0x55AA տվյալներին: Դրանից հետո LED- ը դառնում է կանաչ, և MCU- ն սկսում է հայտնաբերել IR ընդունիչից ստացված ազդանշանը `ընդհատումների օգտագործմամբ: Այն չափում և գրանցում է ազդանշանի բարձր և ցածր մակարդակների ժամանակային ընդմիջումները: Այս ժամանակները այնուհետև փոխակերպվում են 32-բիթանոց համարի, որն ուղարկվում է ԱՀ:

Timesամանակների և վերջնական համարի միջև կապը տրվում է NEC արձանագրությամբ:

Քայլ 4: Ինչպես օգտագործել սարքը

Ինչպես օգտագործել սարքը
Ինչպես օգտագործել սարքը
Ինչպես օգտագործել սարքը
Ինչպես օգտագործել սարքը
Ինչպես օգտագործել սարքը
Ինչպես օգտագործել սարքը

Որոնվածը

Ներբեռնեք որոնվածը PIC- ում: Ես օգտագործում եմ PICkit 3 ծրագրավորողը:

Սարքավորումներ

Տեղադրեք IR ընդունիչի մոդուլը, ինչպես երևում է նկարներում.

  1. USB- ի վերնագիրը միացրեք համակարգչի պատյանում գտնվող մայր տախտակի ներքին USB բնիկին `համապատասխան 4-մետաղալար մալուխով կամ արտաքինից` USB ստեղնին `ստանդարտ USB մալուխով: Երկրորդ դեպքում դուք պետք է ինքներդ ձեզ ինչ -որ կերպ օգնեք, օրինակ. ինչպես երևում է 3 -րդ նկարում ՝ ոգեշնչման համար:
  2. 5 Վ լարման հոսանքի մալուխը համակարգչի պատյանում տեղադրեք էներգիայի աղբյուրը 4 պինային վերնագրին: Կամ արտաքին օգտագործման դեպքում մոդուլը միացրեք այլ կերպ:

Փնտրեք մայրական տախտակի USB վարդակների կապերի նկարագրությունը: Ես վստահ չեմ, որ էլեկտրագծերը հետևում են ինչ -որ ստանդարտի, այնպես որ ավելի լավ է համոզվել: Իմ դեպքում կան երկու քորոց տողեր, որոնցից 5 -ը վերին շարքում են, իսկ 4 -ը ՝ ստորին: Ձախից աջ կապում են + 5 V, D-, D +, Gnd: Առաջին շարքի 5 -րդ կապը միացված չէ: Ես կցեցի մալուխը, ինչպես երևում է երկրորդ նկարում:

Ծրագրային ապահովում

Գործարկեք ծրագիրը տերմինալում: Եթե ամեն ինչ ճիշտ ընթանա, ծրագրի վերջին հաղորդագրությունը «սպասում է տվյալների…»: Այժմ, երբ սեղմում եք հեռակառավարման վահանակի կոճակը, ստացված կոդը կհայտնվի տերմինալում: Այս կերպ դուք կիմանաք, թե որ կոճակն է ինչ կոդ թողարկում:

Այժմ որոշ ծրագրավորման նյութեր սպասում են ձեզ, բայց մի անհանգստացեք: Sourceրագրի աղբյուրի կոդի մեջ ընդամենը մի քանի բան պետք է փոխվի, որպեսզի ծրագիրը արձագանքի ձեր հեռակառավարման վահանակին: Եթե ցանկանում եք, բացեք ֆայլը remotePC.c տեքստային խմբագրիչում կամ IDE- ում և փոխարինեք իմ ծածկագրերը ձերով: Պարզապես սեղմեք կոճակները, որոնք մտադիր եք օգտագործել յուրաքանչյուր գործողության համար մեկ առ մեկ: Պարզապես պատճենեք տերմինալում հայտնված կոդերը և դրանք համապատասխան գործողությամբ տեղադրեք սկզբնական կոդի վրա:

Ավարտելուց հետո դադարեցրեք ծրագիրը և նորից կազմեք կոդը gcc -o remotePC remotePC.c հրամանով: Կրկին գործարկեք ծրագիրը, և այն այսուհետ կպատասխանի ձեր հեռակառավարման վահանակին:

Thisրագրում կոդավորված գործողությունների դեպքում ես օգտագործում եմ այս եղանակը, քանի որ անիմաստ եմ համարում ժամանակս վատնել ծրագրի հետագա զարգացման վրա, երբ հնարավոր է ավելացնել/փոխել ծածկագրեր/գործողություններ օգտագործողի համար հարմար գրաֆիկական միջավայրում, օրինակ: Բայց եթե ցանկանում եք դա անել կամ նույնիսկ ավելին, կարող եք:

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