Ունիվերսալ հեռակառավարման վահանակ Arduino-ի համար: Տվյալների փոխանցում ինֆրակարմիր տիրույթում Arduino-ի միջոցով Ինֆրակարմիր ընդունիչի միացում arduino-ին

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



Հեռակառավարման վահանակը շատ հարմար է նրանով, որ էկրանի գրեթե նույն կոճակները օգտագործվում են հեռուստացույցը և նվագարկիչը կառավարելու համար։ Մի տարբերություն այն է, որ « Ա.Վ«Հեռուստացույցի կառավարման ռեժիմում փոխվում է կոճակի» «(դադար) նվագարկիչի կառավարման ռեժիմին անցնելիս: Նկարները ցույց են տալիս երկու ռեժիմ, ձախ կողմում հեռուստացույցի կառավարման ռեժիմն է, աջում՝ նվագարկչի կառավարման ռեժիմը:

Դե, հիմա ես ձեզ մի փոքր կասեմ նման հեռակառավարման ստեղծման մասին: Սարքի համար ես օգտագործել եմ ERGO հեռուստացույցի հեռակառավարման վահանակը և DUNE HD TV101W մեդիա նվագարկչի հեռակառավարման վահանակը:

Հեռակառավարման վահանակներից տվյալներ ստանալու համար ես օգտագործեցի TSOP1138 ինֆրակարմիր սենսորը (TSOP4838-ի անալոգը) 38 կՀց աշխատանքային հաճախականությամբ և միացրեցի այն Arduino տախտակին ըստ սխեմայի.

Այս ուրվագիծը անհրաժեշտ չի լինի տվյալների փոխանցման կոդավորումը որոշելու և հեռակառավարման կոճակների կոդը կարդալու համար:

Էսքիզում int RECV_PIN = 11 տողում; նշեք մեր PIN համար 4-ը

Էսքիզը բեռնելուց հետո բացեք «պորտի մոնիտորը» և, սեղմելով հեռակառավարման կոճակները, դիտեք ստացված տվյալները։

Նկարում պատկերված է միացման կոճակը հեռուստացույցի հեռակառավարման և նվագարկիչի հեռակառավարման վահանակից սկանավորելու օրինակ: Այժմ մենք ստեղծում ենք աղյուսակ կոճակների կոդերի համար:

Ես ստացա այն, ինչպես վերևի լուսանկարում: Գրության տակ ՀեռուստացույցՀեռուստացույցի հեռակառավարման կոճակների կոճակները; մակագրության տակ Խաղացող- կոդերը մեդիա նվագարկչի հեռակառավարման վահանակից:

Այժմ մենք անջատում ենք մեր ինֆրակարմիր ազդանշանի ընդունիչը Arduino տախտակից և միացնում ենք HC-05 Bluetooth մոդուլը և ինֆրակարմիր LED-ը, ըստ լուսանկարի գծապատկերի:

Դրանից հետո մենք անմիջապես անցնում ենք էսքիզին:

Էսքիզ

#ներառում IRsend irsend; int y = 1; void setup() ( Serial.begin(9600); ) void loop() ( if (Serial.available() > 0) ( int x = Serial.read(); if (x == 49) (y = 1; ) if (x == 50) ( y = 2; ) if (y == 1) ( // կոճակները հեռուստացույցի հեռակառավարման վահանակի համար, եթե (x == 97) (irsend.sendNEC(0x807F08F7, 32); ուշացում (40) ); ) if (x == 98) (irsend.sendNEC(0x807FA857, 32); ուշացում (40); ) if (x == 99) (irsend.sendNEC(0x807F708F, 32); ուշացում (40); ) եթե (x == 100) (irsend.sendNEC(0x807FF00F, 32); ուշացում(40); ) if (x == 101) (irsend.sendNEC(0x807F30CF, 32); ուշացում(40); ) եթե (x == 102) (irsend.sendNEC(0x807FB04F, 32); ուշացում (40); ) if (x == 103) (irsend.sendNEC(0x807F9867, 32); ուշացում (40); ) if (x == 104) (irsend) .sendNEC(0x807F58A7, 32); ուշացում(40); ) if (x == 105) (irsend.sendNEC(0x807FD827, 32); ուշացում(40); ) if (x == 106) (irsend.send7FD827, 32); , 32); ուշացում (40); ) if (x == 107) (irsend.sendNEC (0x807F48B7, 32); ուշացում (40); ) if (x == 108) (irsend.sendNEC (0x807FB847, 32); հետաձգում (40); ) եթե (x == 109) (irsend.sendNEC (0x807F6897, 32); ուշացում (40); ) ) եթե (y == 2) ( //մեդիա նվագարկչի հեռակառավարման կոճակների կոդերը, եթե (x == 97) (irsend.sendNEC(0xFDC23D, 32); ուշացում (40); ) եթե (x == 98) (irsend. sendNEC(0xFDE01F, 32); ուշացում (40); ) if (x == 99) (irsend.sendNEC(0xFD18E7, 32); delay(40); ) if (x == 100) (irsend.sendNEC) (0xFDE817, 32); ուշացում (40); ) եթե (x == 101) (irsend.sendNEC (0xFDA857, 32); ուշացում (40); ) եթե (x == 102) (irsend.sendNEC (0xFD6897, 32) ) ուշացում (40); ) եթե (x == 103) (irsend.sendNEC(0xFDA857, 32); ուշացում (40); ) եթե (x == 104) (irsend.sendNEC(0xFD6897, 32); ուշացում( 40); ) if (x == 105) (irsend.sendNEC (0xFDE817, 32); ուշացում (40); ) if (x == 106) (irsend.sendNEC(0xFD18E7, 32); ուշացում (40); ) if (x == 107) (irsend.sendNEC(0xFD9867, 32); ուշացում(40); ) if (x == 108) (irsend.sendNEC(0xFD28D7, 32); ուշացում(40); ) if (x = = 109) (irsend.sendNEC(0xFD20DF, 32); ուշացում (40); ) ) )


Էսքիզում ձեզ հարկավոր է խմբագրել կոճակների կոդերը, մասնավորապես տողերում.

Եթե ​​(x == 97) (irsend.sendNEC(0x807F08F7, 32); ուշացում (40);
Փոխեք 807F08F7 արժեքը հետևյալի.

Եթե ​​(y == 1) ( //կոճակի կոդերը հեռուստացույցի հեռակառավարման համար, if (x == 97) (irsend.sendNEC(0x12345678, 32); ուշացում (40); )
Որտեղ 12345678 ձեր կոճակի կոդը է:

Էսքիզը կոճակների կոճակների միջոցով խմբագրելուց հետո վերբեռնեք էսքիզը Arduino տախտակին և անցեք հավելվածի տեղադրմանը ձեր հեռախոսում:

Մենք հեռախոսում միացնում ենք Bluetooth-ը, փնտրում մեր սարքը, ստեղծում ենք զույգ, այնուհետև գործարկում ենք հավելվածը Պուլտհեռախոսով.

Գործարկումից հետո մենք կունենանք էկրան՝ ներքևի աջ անկյունում կարմիր bluetooth պատկերակով, որն ազդանշան է տալիս, որ մենք միացված չենք մեր սարքին:

Դրանից հետո սեղմեք այս պատկերակը: Մենք պետք է տեսնենք պատուհան բոլոր հասանելի bluetooth սարքերի ցանկով, որտեղ մենք ընտրում ենք մեր սարքը միանալու համար:

Այժմ մենք վերադառնում ենք հիմնական էկրանին և արդեն կարող ենք կառավարել հեռուստացույցը.

Կառավարման ռեժիմին անցնելու համար պետք է սեղմել պիտակավորված կոճակը "Խաղացող". Ինչպես արդեն ասացի, «AV» պիտակավորված մեր կոճակը կփոխվի կոճակի « ":

Մեր սարքից անջատվելու համար պարզապես մի քանի վայրկյան սեղմած պահեք «Power» կոճակը:

Դե, իմ պատրաստի սարքի մի քանի լուսանկար:

Կարծես թե բավականին լավ է ստացվել։ Սպասում եմ հոդվածի մեկնաբանություններին։

Այն ուղարկում է կոդավորված և մոդուլացված տվյալների փաթեթ IR LED-ին, և երբ կոճակը սեղմված է, նաև կրկնում է փաթեթները:

  • IR LED-ից անտեսանելի ինֆրակարմիր լույսը հարվածում է Trima IR ընդունիչի մոդուլին, որտեղ այն վերածվում է դեմոդուլացված էլեկտրական իմպուլսների:
  • Iarduino_IR գրադարանը շարունակաբար կարդում և վերծանում է իմպուլսները IR ընդունիչից (օգտագործելով երկրորդ Arduino ապարատային ժամանակաչափը)
  • Շրջանակային կոդում մենք ստուգում ենք գրադարանի կողմից վերծանված տվյալները սարքին (լամպին) վերագրված տվյալների հետ և եթե դրանք համընկնում են, ապա փոխում ենք վիճակը («1»/«0») Trema մոդուլի Solid State մուտքում: Ռելե, հետևաբար, միացրեք կամ անջատեք սարքը (լամպը):
  • Սարքը կարող է օգտակար լինել, եթե հեռուստացույցի հեռակառավարման վահանակի վրա նշանակեք չօգտագործված կոճակներ (օրինակ՝ գունավոր հեռատեքստային կոճակներ)՝ սենյակի լուսավորությունը կառավարելու համար:

    Շիկացման լամպերի փոխարեն կարող եք միացնել ցանկացած ~220 Վ ցանցային սարք՝ մինչև 2 Ա ընթացիկ սպառմամբ։

    Մեզ անհրաժեշտ կլինի.

    • IR հեռակառավարման վահանակ x 1 հատ (ցանկացած հեռուստացույցի IR հեռակառավարման կհաջողվի)
    • Սարքեր (լամպեր), որոնք մենք կկառավարենք x 3 հատ.

    Նախագիծն իրականացնելու համար անհրաժեշտ է տեղադրել գրադարանը՝

    • Գրադարան irduino_IR՝ IR հաղորդիչների հետ աշխատելու համար
      ԿԱՐԵՎՈՐԳրադարանը օգտագործում է երկրորդ ապարատային ժամանակաչափ,
      ՄԻ ԱՐՏԱԴՐԵՔ PWM ԱԶԳԱՆԱՎՈՐՆԵՐԸ 3 ԿԱՄ 11 ԵԼՔԻՆ:

    Դուք կարող եք իմանալ, թե ինչպես տեղադրել գրադարաններ Վիքի էջում - Գրադարանների տեղադրում Arduino IDE-ում:

    Տեսանյութ.

    Միացման դիագրամ.

    Այս միացումն օգտագործում է միայն թվային մոդուլներ, դրանք կարող են միացված լինել Arduino-ի ցանկացած (թվային և անալոգային) կապին: Օրինակ, մենք բոլոր մոդուլները միացրել ենք անալոգային ելքերին: Ոչ բոլորը գիտեն, որ Arduino անալոգային կապում կարող է աշխատել որպես սովորական թվային կապում, որը թույլ է տալիս ստանալ (IR ստացողից) և փոխանցել (պինդ վիճակի ռելեներ) թվային ազդանշաններ տրամաբանական «0» և «1» տեսքով:

    Եթե ​​դուք սարքերը միացնելու եք այլ կապին, ապա դրանց համարները պետք է նշվեն էսքիզի երկրորդ (IR օբյեկտի հայտարարագրում) և երրորդ (pinRelay զանգվածի հռչակագիր) տողերում: Ծրագրի կոդը գրված է այնպես, որ դուք կարողանաք միացնել այնքան ռելեներ, որքան ձեր Arduino-ի վրա կան անվճար կապիչներ՝ պարզապես ուրվագծերի երրորդ տողում նշելով փին թվերը (pinRelay զանգվածի հռչակագիր):

    Աշխատանքային ալգորիթմ.

    • սկզբում, ուրվագիծը հաջորդաբար վերագրում է IR հեռակառավարման կոճակի կոդը յուրաքանչյուր ամուր վիճակի ռելեին: Նախ, լուսադիոդը թարթում է, և պինդ վիճակի ռելեի միացումը փակվում է, որի ելքը առաջինը նշվում է: Եթե ​​սեղմեք IR հեռակառավարման վահանակի որևէ կոճակ, այդ կոճակի կոդը կհատկացվի այդ ռելեին, իսկ հաջորդը կսկսի թարթել, և այդպես շարունակ, մինչև բոլոր ռելեներին նշանակվեն IR հեռակառավարման կոճակներ:
    • Նշանակվելուց հետոԿոճակի գործառույթներ, բոլոր ռելեներն անջատված են։ Եթե ​​սեղմում եք IR հեռակառավարման կոճակը, ապա ռելեը, որին նշանակված է այս կոճակի կոդը, կբացվի: Եթե ​​կրկին սեղմեք նշված կոճակը, ռելեը կանջատվի: Սարքը չի արձագանքի կոճակների սեղմմանը, որոնց կոդը չի հատկացվել որևէ ռելեի:
    • ԵթեԵթե ​​դուք չեք ցանկանում վերագրել կոճակների կոդերը ամեն մեկնարկի ժամանակ, ապա հստակ նշեք դրանք varRelay զանգվածը հայտարարելիս և հեռացրեք for և while օղակները տեղադրման կոդից:
    • Պարզեք յուրաքանչյուր կոճակի կոդըկարող եք գրել հետևյալ տողը. if(IR.check())(Serial.println(IR.data);)

    Ծրագրի կոդը:

    #ներառում // միացնել գրադարանը IR ընդունիչի հետ աշխատելու համար iarduino_IR_RX IR(A5); // հայտարարել IR օբյեկտ IR ընդունիչի հետ աշխատելու համար (նշելով ցանկացած փին, որին միացված է IR ընդունիչը) const uint8_t pinRelay = (A1,A2,A3); // հայտարարում է զանգված, որը ցույց է տալիս ցանկացած կապի (թվային կամ անալոգային) թվերը, որոնց միացված են պինդ վիճակի ռելեներ const uint8_t allRelay = sizeof(pinRelay); // հայտարարում է հաստատուն՝ փոխանցելով դրա տարրերի քանակը pinRelay զանգվածում (ռելեների թիվը) uint32_t varRelay; // հայտարարել IR ստացողի կոդերով (հրամաններով) զանգված, ներառյալ ռելեներ bool modRelay; // հայտարարում է զանգված, որն ունի ռելեի վիճակներ uint8_t setRelay; // հայտարարում է փոփոխական ռելեների քանակով, որոնց համար IR ստացողի հրամանը գրված է void setup())( IR.begin(); IR Receiver մոդուլը IR հեռակառավարման վահանակի հետ համատեղ թույլ կտա հեշտությամբ իրականացնել Arduino տախտակի հեռակառավարումը:

    Դա ոչ այլ ինչ է, քան VS1838B IR ընդունիչ, որի տախտակի վրա տեղադրված է արտադրողի կողմից առաջարկված ամրագոտի:

    Այս մոդուլի հետ առանց տուփի աշխատելու համար անհրաժեշտ է 38 կՀց հաճախականությամբ հեռակառավարման վահանակ:

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

    Հիմնական տեխնիկական բնութագրերը.

    Մատակարարման լարումը` 2,7 - 5,5 Վ

    Մոդուլյացիայի հաճախականությունը՝ 38 կՀց

    Ջերմաստիճանի միջակայք՝ - 20 ... + 80°C

    Ինտերֆեյս՝ թվային

    Միացում Arduino-ին

    Մոդուլը հագեցած է 2,54 մմ եռափին միակցիչով

    : միանում է GND փին

    : միանում է +5V ելքին

    Միանում է թվային կապին (օրինակ՝ D2)

    Arduino միջավայրում աշխատելու օրինակ

    Այս մոդուլի հետ աշխատելու համար անհրաժեշտ է տեղադրել IRremote գրադարանը

    Ներբեռնեք, բացեք փաթեթավորումը և դրեք այն Arduino թղթապանակի գրադարանների թղթապանակում: Եթե ​​Arduino IDE-ն բաց էր գրադարանն ավելացնելու պահին, վերաբեռնեք միջավայրը:

    Հեռակառավարման կոճակների ընթերցում

    Հեռակառավարման վահանակի ընթերցումները կարդալու համար լրացրեք ստորև ներկայացված էսքիզը: Այն կարտադրի սեղմված կոճակների կոդավորումը դեպի նավահանգիստ:

    Որպես օրինակ, մենք կօգտագործենք հեռակառավարման վահանակը, ինչպես նկարում, քանի որ Այս տեսակի հեռակառավարման վահանակը ներառված է հավաքածուի մեջ

    Դուք կարող եք կարդալ տարբեր հեռակառավարման վահանակների գործառնական տրամաբանության տարբերությունների մասին մեր համայնքի մականունով անդամի բնօրինակ հոդվածում:

    Նմուշ կոդ.

    #ներառում int RECV_PIN = 2; IRrecv irecv (RECV_PIN); //Ստեղծել օբյեկտ կոնկրետ պորտից ազդանշան ստանալու համար decode_results արդյունքները; //Արդյունքը պահող փոփոխականանվավեր կարգավորում () { Սերիալ // Սկսեք ստանալ) անվավեր հանգույց() (եթե (irrecv.decode(&results)) //Ազդանշան ստանալիս... { Սերիալ.println (results.value); //...արտադրեք դրա արժեքը սերիական պորտին irrecv.resume(); ))

    Նավահանգստի մոնիտորում դուք պետք է տեսնեք հետևյալը.

    Յուրաքանչյուր կոճակը գրեթե մեկ վայրկյան պահելով՝ ստանում ենք մոտ 10 կոդ։ Առաջինը կոճակի ծածկագիրն է: Եվ դրանից հետո սկսում է հայտնվել ստանդարտ կոդը, որը հայտնում է, որ կոճակը խրված է։

    Կառավարել Arduino տախտակը հեռակառավարմամբ

    Եկեք այնպես անենք, որ LED-ը Arduino տախտակի վրա (D13) լուսավորվի, երբ առաջին կոճակը կոդավորված է, և անջատվի, երբ երկրորդ կոճակը կոդավորված է:

    Նմուշ կոդ.

    // Փորձարկվել է Arduino IDE 1.0.3-ի վրա#ներառում int RECV_PIN = 2; int LED = 13; IRrecv irecv (RECV_PIN); decode_results արդյունքները; անվավեր կարգավորում () { Սերիալ.սկիզբ (9600); irecv.enableIRIn(); // Սկսել ընդունիչը pinMode (LED, OUTPUT); ) անվավեր հանգույց() ( if (irrecv.decode(&results)) ( Սերիալ.println (results.value); if (results.value == 16769565) // Կոդավորում 1 ստանալու ժամանակ( digitalWrite (LED, HIGH); // Միացրեք լուսադիոդը) if (results.value == 16761405) // Կոդավորում 2 ստանալիս( digitalWrite (LED, LOW); // Անջատեք լուսադիոդը) irrecv.resume(); // Ստացեք հաջորդ արժեքը } }

    Բարի օր բոլորին (կամ գիշեր, ինչպես ցանկանում եք), եկեք սկսենք լիրիկական ներածությունից: Մեր օրերում շատերն ունեն տներ Հեռուստացույց հեռակառավարմամբ, թյուներ, DVD նվագարկիչ . Շատ մարդիկ (և ընտանիքներ) չեն կարող պատկերացնել իրենց տնային կյանքը առանց հեռակառավարման վահանակի ձեռքին: Համաձայն եմ, որքա՜ն հիանալի է լինել կենցաղային տեխնիկայի վարպետ և ցանկացած պահի թելադրել ձեր կամքը այս ապարատային մասերին: Այս հոդվածում մենք կցանկանայինք ավելի խորը դիտարկել հեռակառավարման տեխնոլոգիան և տալ մեր կարիքների համար կիրառման որոշ օրինակներ:

    Այսպիսով, ի՞նչ է մեզ անհրաժեշտ որպես բաղադրիչ մեր փորձի համար: Որպես տարբերակ Վաճառվում են պատրաստի IR հեռակառավարման և IR ընդունիչ մոդուլներ. Բայց մենք չենք ուզում սպասել և գումար վճարել, ուստի ավելի կոշտ կգործենք: Հիմք վերցնենք անհայտ ծագման հեռակառավարման վահանակը, մենք ունենք նաև չինական թյուներների տախտակի մի կտոր, որի վրա զոդված է ինֆրակարմիր ընդունիչ։ Ստորև բերված լուսանկարում դուք կարող եք տեսնել այս բաղադրիչները: Անկեղծ ասած, հեռակառավարման վահանակը հայտնաբերվել է գրասենյակի գրասեղանի ավելորդ աղբի մեջ, իսկ IR ընդունիչով տախտակը վերցվել է մոտակա ռադիովերանորոգման կետից։

    Դե ուրեմն, ինչպես ասում էի Հանիբալ - «Առաջ դեպի Կարթագեն» . Մեզ պարզապես պետք է անջատել ընդունիչը և միացնել այն տախտակին Արդուինոհետևյալ սխեմայով...

    • IR ընդունիչի միացում

    IR ընդունիչ որը զոդված է տախտակից, չունի որևէ գծանշում, դա պարզապես ևս մեկ անհայտ չինական ռադիո բաղադրիչ է, որից հազարավոր արտադրվել են: Մի խոսքով, կարելի է ասել՝ մեկ շենքում այն ​​համատեղում էֆոտոդիոդ, նախաուժեղացուցիչ և դրայվեր . Արդյունքը ձևավորվում է նորմալTTL ազդանշան առանց լիցքավորման, հարմար է միկրոկոնտրոլերի հետագա մշակման համար: Կրիչի հաճախականությունը հնարավոր է (!) 36 կՀց, բայց հիմա դա այնքան էլ կարևոր չէ... Եկեք փորձենք միացնել այն տախտակին:Արդուինո , պայմանական դիագրամը կտա այս սարքի ցանկալի պինութը: Ստորև բերված գծապատկերում կարմիրով ընդգծված է մարմնի ձևը, որով պատրաստված է մերըIR ընդունիչ , ընդգծված կանաչով - pinout, որով այն միացված է տախտակինԱրդուինո .

    Ուշադրություն!!! Ինտերնետում կան բազմաթիվ պինութ դիագրամներ նման փաթեթի սարքերի համար (TSOP): Այս հոդվածում տրված ցուցիչները կարող են չհամընկնել համացանցում հայտնաբերված որևէ մեկի հետ, բայց այսպես ամեն ինչ կապված է մեզ հետ: Եթե ​​IR ստացողը սկսում է տաքանալ, երբ միացված է, անմիջապես անջատեք հավաքված շղթան, սա նշանակում է, որ կապի կետը չի համապատասխանում իրականին, և դուք ստիպված կլինեք ընտրել այն գրեթե պատահականորեն: Սա հենց այն է, ինչ մենք արեցինք, քանի որ ինտերնետում հայտնաբերված սխեմաները հարմար չէին մեր IR ընդունիչին: Այստեղ, ընդհանուր առմամբ, գլխավորը Arduino տախտակը չայրելն է, զգուշությամբ շարժվեք!!!

    • IRremote գրադարան

    Այսպիսով, ամեն ինչ կապված է: Հեռակառավարման վահանակից կոդերը կարդալու գրադարան կա IRremote.h, դրա օգնությամբ մենք կուսումնասիրենք մեր հեռակառավարման վահանակը, ավելի ճիշտ՝ կոճակների կոդերը։ Հետագայում մենք կօգտագործենք ընթերցված ծածկագրերը մեր նպատակների համար: Էսքիզը, որով կկարդան կոճակների կոդերը, ներկայացված է այս գրադարանի օրինակներում, կոչվում է IRrecvDemo. Ուշադրություն!!! Էսքիզը կազմելիս այն սխալ է տալիս, հենց սկզբում պետք է ավելացնել ևս երկու plug-in գրադարան.

    #include "boarddefs.h" //Additional library #include "IRremote.h" #include "IRremoteInt.h" //Additional library int RECV_PIN = 2; //Pin IR ընդունիչից ելքային ազդանշանը միացնելու համար //Ստեղծել IRrecv դասի օրինակ՝ որպես պարամետր IRrecv irrecv(RECV_PIN) փոխանցելով ազդանշանը IR ընդունիչից միացնելու փին; decode_results արդյունքները; //Փոփոխական՝ սեղմված կոճակի ստացված կոդը պահպանելու համար void setup() ( Serial.begin(9600); irrecv.enableIRIn(); //IR ստացողի աշխատանքի հնարավորություն ) void loop() ( if (irrecv.decode( &արդյունքներ)) //Եթե իրադարձություն է տեղի ունեցել/կոճակը սեղմվել է ( Serial.println(results.value, HEX); //Սեղմված կոճակի կոդը տասնվեցական ձևով դուրս բերեք irrecv.resume(); // Կարդացեք հաջորդ արժեքը/կոճակը ) delay (100 );)

    Էսքիզը գրատախտակ վերբեռնվելուց հետոԱրդուինո(մենք օգտագործում ենք Արդուինո Նանովահանի վրա I/O Wireless Shield Nano-ի համար ), կարող է բացվել նավահանգիստ մոնիտոր և տեսեք, թե ինչ կոդեր են հայտնվում, երբ սեղմում եք հեռակառավարման կոճակները: Էսքիզի արդյունքը ներկայացված է ստորև ներկայացված սքրինշոթում.

    Ի դեպ, ինչպես նավահանգիստ մոնիտոր Մենք օգտագործում ենք մեր ապացուցված ծրագրաշարը, եթե որևէ մեկին հետաքրքրում է, կարող եք կարդալ հոդվածը և ներբեռնել Serial Monitor Pro-ն:

    #սահմանել KEY_ONOFF 0x807F807F //Միացնել/Անջատել կոճակ #սահմանել KEY_MUTE 0x807F48B7 //Խլացնել կոճակը #սահմանել KEY_1 0x807F00FF //Կոճակ 1 #սահմանել KEY_2 0x807F60F01_0x807KEY_2 0x807FE001 /K կոճակ 3 #define KEY_4 0x807F20DF //Button 4 #սահմանել KEY_5 0x807FD02F //Button 5 #define KEY_6 0x807F50AF //Button 6 #define KEY_7 0x807F10EF //Button 7 #define KEY_8 0x807F0F00F /Button 9 #define KEY_0 0x807FC837 //Button 0

    Եվ հիմա, ընդհանուր առմամբ, ամեն ինչ պատրաստ է վերջնական փորձարկման համար. սա կլինի ռելե մոդուլների միացում/անջատումը վերահսկելու տարրական թեստ։ Ահա մի փոքրիկ առաջադրանք.

    • Մենք օգտագործում ենք երկու ռելե մոդուլ
    • Մենք կապում ենք No1 ռելեը հեռակառավարման վահանակի «1» կոճակին
    • Թիվ 2 ռելեը կապված է հեռակառավարման վահանակի «2» կոճակին
    • Ռելե մոդուլներից որևէ մեկի միացումը կատարվում է սեղմելով այն կոճակը, որին այն նշանակված է
    • Ռելե մոդուլներից որևէ մեկի անջատումը նույնպես կատարվում է սեղմելով այն կոճակը, որին այն նշանակված է
    • Միացման/անջատման կոճակի սեղմումը անվերապահորեն անջատում է երկու ռելեի մոդուլները (եթե դրանք միացված են, կամ դրանցից մեկը միացված է)

    Էսքիզ, որն իրականացնում է վերը նշված առաջադրանքը.

    #include "boarddefs.h" //Additional library #include "IRremote.h" #include "IRremoteInt.h" //Additional library #define KEY_ONOFF 0x807F807F //On/Off button #define KEY_1 0x807Bfinuton KEY_1 0x807Bfinuton #2_FF 0x807FE01F //Կոճակ 2 #define RELOUT1 3 //Ելքային պորտ ռելեի համար 1 #define RELOUT2 4 //Ելքային պորտ ռելեի համար 2 int RECV_PIN = 2; IRrecv irecv (RECV_PIN); decode_results արդյունքները; ստատիկ բուլյան REL1_ONOFF = կեղծ; ստատիկ բուլյան REL2_ONOFF = կեղծ; void setup() (pinMode(RELOUT1, OUTPUT); pinMode(RELOUT2, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); // Սկսել ստացողը ) void loop() ( if (irrecv.decode(&results) )) ( switch(results.value) (case (KEY_ONOFF): REL1_ONOFF = կեղծ; REL2_ONOFF = կեղծ; ընդմիջում; դեպք (KEY_1): եթե (REL1_ONOFF) REL1_ONOFF = կեղծ; այլապես REL1_ONOFF = ճիշտ; ընդմիջում; դեպք (KEY_2): Եթե ​​(REL2_ONOFF) REL2_ONOFF = կեղծ; այլապես REL2_ONOFF = ճշմարիտ; ընդմիջում; ) irrecv.resume();

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

    Խնդրում ենք միացնել javascript-ը, որպեսզի մեկնաբանությունները աշխատեն:

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



    Հեռակառավարման վահանակը շատ հարմար է նրանով, որ էկրանի գրեթե նույն կոճակները օգտագործվում են հեռուստացույցը և նվագարկիչը կառավարելու համար։ Մի տարբերություն այն է, որ « Ա.Վ«Հեռուստացույցի կառավարման ռեժիմում փոխվում է կոճակի» «(դադար) նվագարկիչի կառավարման ռեժիմին անցնելիս: Նկարները ցույց են տալիս երկու ռեժիմ, ձախ կողմում հեռուստացույցի կառավարման ռեժիմն է, աջում՝ նվագարկչի կառավարման ռեժիմը:

    Դե, հիմա ես ձեզ մի փոքր կասեմ նման հեռակառավարման ստեղծման մասին: Սարքի համար ես օգտագործել եմ ERGO հեռուստացույցի հեռակառավարման վահանակը և DUNE HD TV101W մեդիա նվագարկչի հեռակառավարման վահանակը:

    Հեռակառավարման վահանակներից տվյալներ ստանալու համար ես օգտագործեցի TSOP1138 ինֆրակարմիր սենսորը (TSOP4838-ի անալոգը) 38 կՀց աշխատանքային հաճախականությամբ և միացրեցի այն Arduino տախտակին ըստ սխեմայի.

    Այս ուրվագիծը անհրաժեշտ չի լինի տվյալների փոխանցման կոդավորումը որոշելու և հեռակառավարման կոճակների կոդը կարդալու համար:

    Էսքիզում int RECV_PIN = 11 տողում; նշեք մեր PIN համար 4-ը

    Էսքիզը բեռնելուց հետո բացեք «պորտի մոնիտորը» և, սեղմելով հեռակառավարման կոճակները, դիտեք ստացված տվյալները։

    Նկարում պատկերված է միացման կոճակը հեռուստացույցի հեռակառավարման և նվագարկիչի հեռակառավարման վահանակից սկանավորելու օրինակ: Այժմ մենք ստեղծում ենք աղյուսակ կոճակների կոդերի համար:

    Ես ստացա այն, ինչպես վերևի լուսանկարում: Գրության տակ ՀեռուստացույցՀեռուստացույցի հեռակառավարման կոճակների կոճակները; մակագրության տակ Խաղացող- կոդերը մեդիա նվագարկչի հեռակառավարման վահանակից:

    Այժմ մենք անջատում ենք մեր ինֆրակարմիր ազդանշանի ընդունիչը Arduino տախտակից և միացնում ենք HC-05 Bluetooth մոդուլը և ինֆրակարմիր LED-ը, ըստ լուսանկարի գծապատկերի:

    Դրանից հետո մենք անմիջապես անցնում ենք էսքիզին:

    Էսքիզ

    #ներառում IRsend irsend; int y = 1; void setup() ( Serial.begin(9600); ) void loop() ( if (Serial.available() > 0) ( int x = Serial.read(); if (x == 49) (y = 1; ) if (x == 50) ( y = 2; ) if (y == 1) ( // կոճակները հեռուստացույցի հեռակառավարման վահանակի համար, եթե (x == 97) (irsend.sendNEC(0x807F08F7, 32); ուշացում (40) ); ) if (x == 98) (irsend.sendNEC(0x807FA857, 32); ուշացում (40); ) if (x == 99) (irsend.sendNEC(0x807F708F, 32); ուշացում (40); ) եթե (x == 100) (irsend.sendNEC(0x807FF00F, 32); ուշացում(40); ) if (x == 101) (irsend.sendNEC(0x807F30CF, 32); ուշացում(40); ) եթե (x == 102) (irsend.sendNEC(0x807FB04F, 32); ուշացում (40); ) if (x == 103) (irsend.sendNEC(0x807F9867, 32); ուշացում (40); ) if (x == 104) (irsend) .sendNEC(0x807F58A7, 32); ուշացում(40); ) if (x == 105) (irsend.sendNEC(0x807FD827, 32); ուշացում(40); ) if (x == 106) (irsend.send7FD827, 32); , 32); ուշացում (40); ) if (x == 107) (irsend.sendNEC (0x807F48B7, 32); ուշացում (40); ) if (x == 108) (irsend.sendNEC (0x807FB847, 32); հետաձգում (40); ) եթե (x == 109) (irsend.sendNEC (0x807F6897, 32); ուշացում (40); ) ) եթե (y == 2) ( //մեդիա նվագարկչի հեռակառավարման կոճակների կոդերը, եթե (x == 97) (irsend.sendNEC(0xFDC23D, 32); ուշացում (40); ) եթե (x == 98) (irsend. sendNEC(0xFDE01F, 32); ուշացում (40); ) if (x == 99) (irsend.sendNEC(0xFD18E7, 32); delay(40); ) if (x == 100) (irsend.sendNEC) (0xFDE817, 32); ուշացում (40); ) եթե (x == 101) (irsend.sendNEC (0xFDA857, 32); ուշացում (40); ) եթե (x == 102) (irsend.sendNEC (0xFD6897, 32) ) ուշացում (40); ) եթե (x == 103) (irsend.sendNEC(0xFDA857, 32); ուշացում (40); ) եթե (x == 104) (irsend.sendNEC(0xFD6897, 32); ուշացում( 40); ) if (x == 105) (irsend.sendNEC (0xFDE817, 32); ուշացում (40); ) if (x == 106) (irsend.sendNEC(0xFD18E7, 32); ուշացում (40); ) if (x == 107) (irsend.sendNEC(0xFD9867, 32); ուշացում(40); ) if (x == 108) (irsend.sendNEC(0xFD28D7, 32); ուշացում(40); ) if (x = = 109) (irsend.sendNEC(0xFD20DF, 32); ուշացում (40); ) ) )


    Էսքիզում ձեզ հարկավոր է խմբագրել կոճակների կոդերը, մասնավորապես տողերում.

    Եթե ​​(x == 97) (irsend.sendNEC(0x807F08F7, 32); ուշացում (40);
    Փոխեք 807F08F7 արժեքը հետևյալի.

    Եթե ​​(y == 1) ( //կոճակի կոդերը հեռուստացույցի հեռակառավարման համար, if (x == 97) (irsend.sendNEC(0x12345678, 32); ուշացում (40); )
    Որտեղ 12345678 ձեր կոճակի կոդը է:

    Էսքիզը կոճակների կոճակների միջոցով խմբագրելուց հետո վերբեռնեք էսքիզը Arduino տախտակին և անցեք հավելվածի տեղադրմանը ձեր հեռախոսում:

    Մենք հեռախոսում միացնում ենք Bluetooth-ը, փնտրում մեր սարքը, ստեղծում ենք զույգ, այնուհետև գործարկում ենք հավելվածը Պուլտհեռախոսով.

    Գործարկումից հետո մենք կունենանք էկրան՝ ներքևի աջ անկյունում կարմիր bluetooth պատկերակով, որն ազդանշան է տալիս, որ մենք միացված չենք մեր սարքին:

    Դրանից հետո սեղմեք այս պատկերակը: Մենք պետք է տեսնենք պատուհան բոլոր հասանելի bluetooth սարքերի ցանկով, որտեղ մենք ընտրում ենք մեր սարքը միանալու համար:

    Այժմ մենք վերադառնում ենք հիմնական էկրանին և արդեն կարող ենք կառավարել հեռուստացույցը.

    Կառավարման ռեժիմին անցնելու համար պետք է սեղմել պիտակավորված կոճակը "Խաղացող". Ինչպես արդեն ասացի, «AV» պիտակավորված մեր կոճակը կփոխվի կոճակի « ":

    Մեր սարքից անջատվելու համար պարզապես մի քանի վայրկյան սեղմած պահեք «Power» կոճակը:

    Դե, իմ պատրաստի սարքի մի քանի լուսանկար:

    Կարծես թե բավականին լավ է ստացվել։ Սպասում եմ հոդվածի մեկնաբանություններին։