Universalus Arduino nuotolinio valdymo pultas. Duomenų perdavimas infraraudonųjų spindulių diapazone naudojant Arduino Infraraudonųjų spindulių imtuvo prijungimas prie arduino

Internete yra daug straipsnių apie tai, kaip sukurti savo televizoriaus nuotolinio valdymo pultą naudojant „Arduino“, tačiau man reikėjo universalaus nuotolinio valdymo pulto, kad galėčiau valdyti televizorių ir daugialypės terpės grotuvą. Pagrindinis mano universalaus nuotolinio valdymo pulto privalumas yra tas, kad Android telefono programėlės mygtukai yra dvejopos paskirties, bet žiūrėkite vaizdo įrašą.



Nuotolinio valdymo pultas labai patogus tuo, kad beveik tais pačiais mygtukais ekrane valdomas televizorius ir grotuvas. Vienas skirtumas yra tas, kad " AV"TV valdymo režimu pakeičiamas mygtukas" " (sustabdyti) perjungiant į grotuvo valdymo režimą. Paveikslėliai rodo du režimus, kairėje yra televizoriaus valdymo režimas, dešinėje - grotuvo valdymo režimas.

Na, dabar aš jums šiek tiek papasakosiu apie tokio nuotolinio valdymo pulto kūrimą. Prietaisui naudojau ERGO televizoriaus ir DUNE HD TV101W medijos grotuvo nuotolinio valdymo pultą.

Duomenims gauti iš nuotolinio valdymo pultelių panaudojau infraraudonųjų spindulių jutiklį TSOP1138 (analogišką TSOP4838), kurio veikimo dažnis 38 kHz ir prijungiau prie Arduino plokštės pagal schemą:

Šis eskizas nebus reikalingas norint nustatyti duomenų perdavimo kodavimą ir nuskaityti nuotolinio valdymo pulto mygtukų kodą.

Eskizo eilutėje int RECV_PIN = 11; nurodykite mūsų PIN numerį 4

Įkėlę eskizą atidarykite „prievado monitorių“ ir, paspausdami nuotolinio valdymo pulto mygtukus, pažiūrėkite į gautus duomenis.

Nuotraukoje parodytas televizoriaus nuotolinio valdymo pulto ir grotuvo nuotolinio valdymo pulto maitinimo mygtuko nuskaitymo pavyzdys. Dabar sukuriame mygtukų kodų lentelę.

Gavau kaip aukščiau esančioje nuotraukoje. Po užrašu televizorius TV nuotolinio valdymo pulto mygtukų kodai; po užrašu Žaidėjas- kodai iš medijos grotuvo nuotolinio valdymo pulto.

Dabar mes atjungiame infraraudonųjų spindulių signalo imtuvą nuo Arduino plokštės ir prijungiame HC-05 Bluetooth modulį ir infraraudonųjų spindulių šviesos diodą pagal nuotraukoje pateiktą schemą.

Po to pereiname tiesiai prie eskizo.

Eskizas

#įtraukti 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) ( // TV nuotolinio valdymo pulto mygtukų kodai if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); delsa (40) ); ) if (x == 98) ( irsend.sendNEC(0x807FA857, 32); delsa (40); ) if (x == 99) ( irsend.sendNEC(0x807F708F, 32); delsa (40); ) if (x == 100) ( irsend.sendNEC(0x807FF00F, 32); delsa (40); ) if (x == 101) ( irsend.sendNEC(0x807F30CF, 32); delsa (40); ) if (x == 102) ( irsend.sendNEC(0x807FB04F, 32); delsa (40); ) if (x == 103) ( irsend.sendNEC(0x807F9867, 32); delsa (40); ) if (x == 104) ( irsend .sendNEC(0x807F58A7, 32); delsa (40); ) if (x == 105) ( irsend.sendNEC(0x807FD827, 32); delsa (40); ) if (x == 106) ( irsend.sendNEC(0xC707F38) , 32); delsa (40); ) if (x == 107) ( irsend.sendNEC(0x807F48B7, 32); delsa (40); ) if (x == 108) ( irsend.sendNEC(0x807FB847, 32); delsa(40); ) if (x == 109) ( irsend.sendNEC(0x807F6897, 32); delsimas(40); ) ) if (y == 2) ( //medijos grotuvo nuotolinio valdymo pulto mygtukų kodai if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); delsa (40); ) if (x == 98) ( irsend. sendNEC(0xFDE01F, 32); delsa (40); ) if (x == 99) ( irsend.sendNEC(0xFD18E7, 32); delsa (40); ) if (x == 100) ( irsend.sendNEC (0xFDE817, 32); delsa (40); ) if (x == 101) ( irsend.sendNEC(0xFDA857, 32); delsa (40); ) if (x == 102) ( irsend.sendNEC(0xFD6897, 32) ); delsa (40); ) if (x == 103) ( irsend.sendNEC(0xFDA857, 32); delsa (40); ) if (x == 104) ( irsend.sendNEC(0xFD6897, 32); delsa ( 40); ) if (x == 105) ( irsend.sendNEC(0xFDE817, 32); delsa (40); ) if (x == 106) ( irsend.sendNEC(0xFD18E7, 32); delsa (40); ) if (x == 107) ( irsend.sendNEC(0xFD9867, 32); delsa (40); ) if (x == 108) ( irsend.sendNEC(0xFD28D7, 32); delsa (40); ) if (x = = 109) ( irsend.sendNEC(0xFD20DF, 32); delsa(40); ) ) )


Eskize turėsite redaguoti mygtukų kodus, būtent eilutėse:

Jei (x == 97) ( irsend.sendNEC(0x807F08F7, 32); delsa (40);
Pakeiskite reikšmę 807F08F7 į:

If (y == 1) ( //TV nuotolinio valdymo pulto mygtuko kodai if (x == 97) ( irsend.sendNEC(0x12345678, 32); delsa (40); )
Kur 12345678 yra jūsų mygtuko kodas.

Redaguodami eskizą naudodami mygtukų kodus, įkelkite eskizą į „Arduino“ plokštę ir pereikite prie programos diegimo telefone.

Telefone įjungiame Bluetooth, ieškome savo įrenginio, sukuriame porą, tada paleidžiame programą Pult telefonu.

Paleidus apatiniame dešiniajame kampe turėsime ekraną su raudona „Bluetooth“ piktograma, kuri signalizuoja, kad nesame prisijungę prie savo įrenginio.

Po to spustelėkite šią piktogramą. Turėtume pamatyti langą su visų galimų „Bluetooth“ įrenginių sąrašu, kuriame pasirenkame įrenginį, kurį norite prisijungti.

Dabar grįžtame į pagrindinį ekraną ir jau galime valdyti televizorių:

Norėdami pereiti į valdymo režimą, turime paspausti pažymėtą mygtuką "Žaidėjas". Kaip jau sakiau anksčiau, mūsų mygtukas, pažymėtas "AV", pasikeis į mygtuką " ":

Norėdami atsijungti nuo mūsų įrenginio, tiesiog keletą sekundžių palaikykite nuspaudę maitinimo mygtuką.

Na, kelios mano baigto įrenginio nuotraukos.

Atrodo, visai gerai pasirodė. Laukiu komentarų apie straipsnį.

Jis siunčia užkoduotų ir moduliuotų duomenų paketą į IR šviesos diodą, o paspaudus mygtuką taip pat kartoja paketus.

  • Nematoma infraraudonųjų spindulių šviesa iš IR šviesos diodo patenka į Trima IR imtuvo modulį, kur ji paverčiama demoduliuotais elektros impulsais.
  • Iarduino_IR biblioteka nuolat skaito ir dekoduoja impulsus iš IR imtuvo (naudodama antrąjį Arduino aparatinės įrangos laikmatį)
  • Ciklo kode patikriname bibliotekos iškoduotus duomenis su priskirtais įrenginiui (lempai) ir jei jie sutampa, tada Trema modulio Solid State įėjime keičiame būseną („1“/“0“). Todėl relė įjunkite arba išjunkite įrenginį (lempą).
  • Prietaisas gali būti naudingas, jei priskirsite nenaudojamus televizoriaus nuotolinio valdymo pulto mygtukus (pavyzdžiui, spalvotus teleteksto mygtukus), kad galėtumėte valdyti kambario apšvietimą.

    Vietoj kaitrinių lempų galima prijungti bet kokį ~220 V tinklo įrenginį, kurio srovės suvartojimas iki 2 A.

    Mums reikės:

    • IR nuotolinio valdymo pultas x 1vnt (tiks bet koks TV IR nuotolinio valdymo pultas)
    • Prietaisai (lempos), kuriuos valdysime x 3 vnt.

    Norėdami įgyvendinti projektą, turime įdiegti biblioteką:

    • Biblioteka iarduino_IR, skirta darbui su IR siųstuvais-imtuvais
      SVARBU: biblioteka naudoja antrą aparatinės įrangos laikmatį,
      NEIŠVEDITE PWM SIGNALO Į 3 AR 11 IŠĖJIMĄ!

    Kaip įdiegti bibliotekas, galite sužinoti Wiki puslapyje - Bibliotekų diegimas Arduino IDE.

    Vaizdo įrašas:

    Sujungimo schema:

    Šioje grandinėje naudojami tik skaitmeniniai moduliai, juos galima prijungti prie bet kokių (tiek skaitmeninių, tiek analoginių) Arduino kaiščių. Pavyzdžiui, visus modulius prijungėme prie analoginių išėjimų. Ne visi žino, kad Arduino analoginiai kaiščiai gali veikti kaip įprasti skaitmeniniai kaiščiai, leidžiantys priimti (iš IR imtuvo) ir perduoti (į kietojo kūno reles) skaitmeninius signalus loginių „0“ ir „1“ pavidalu.

    Jei įrenginius jungsite prie kitų kontaktų, tada jų numerius reikia nurodyti antroje (IR objekto deklaracija) ir trečioje (pinRelay masyvo deklaracija) eskizo eilutėse. Programos kodas parašytas taip, kad galėtumėte prijungti tiek relių, kiek yra laisvų jūsų Arduino kontaktų, tiesiog nurodydami PIN numerius trečioje eskizo eilutėje (pinRelay masyvo deklaracija).

    Darbo algoritmas:

    • Pradžioje, eskizas kiekvienai kietojo kūno relei paeiliui priskiria IR nuotolinio valdymo mygtuko kodą. Pirmiausia mirksi šviesos diodas ir uždaroma kietojo kūno relės grandinė, kurios išėjimas nurodomas pirmiausia. Jei paspausite bet kurį IR nuotolinio valdymo pulto mygtuką, to mygtuko kodas bus priskirtas tai relei, o kitas pradės mirksėti ir taip toliau, kol visoms relėms bus priskirti IR nuotolinio valdymo pulto mygtukai.
    • Po paskyrimoMygtukų funkcijos, visos relės išjungtos. Jei paspausite IR nuotolinio valdymo pultelio mygtuką, įsijungs relė, kuriai priskirtas šio mygtuko kodas. Jei dar kartą paspausite nurodytą mygtuką, relė išsijungs. Įrenginys nereaguos į mygtukų, kurių kodas nebuvo priskirtas jokiai relei, paspaudimus.
    • Jeigu Jei nenorite priskirti mygtukų kodų kiekvieną kartą paleidžiant, aiškiai nurodykite juos deklaruodami varRelay masyvą ir pašalinkite for ir while kilpas iš sąrankos kodo.
    • Sužinokite kiekvieno mygtuko kodą galite parašyti šią eilutę: if(IR.check())(Serial.println(IR.data);)

    Programos kodas:

    #įtraukti // prijungti biblioteką darbui su IR imtuvu iarduino_IR_RX IR(A5); // deklaruoti IR objektą darbui su IR imtuvu (nurodant bet kurį kaištį, prie kurio prijungtas IR imtuvas) const uint8_t pinRelay = (A1,A2,A3); // paskelbti masyvą, nurodantį bet kokių kontaktų (skaitmeninių arba analoginių), prie kurių prijungtos kietojo kūno relės, numerius const uint8_t allRelay = sizeof(pinRelay); // deklaruoti konstantą, perduodant jos elementų skaičių pinRelay masyve (relių skaičius) uint32_t varRelay; // deklaruoti masyvą su IR imtuvo kodais (komandomis), įskaitant reles bool modRelay; // deklaruoti masyvą su relės būsenomis uint8_t setRelay; // deklaruoti kintamąjį su relių skaičiumi, kuriai parašyta komanda iš IR imtuvo void setup())( IR.begin(); // inicijuoti darbą su IR siųstuvu-imtuvu for(uint8_t i=0; i IR imtuvo modulis kartu su IR nuotolinio valdymo pulteliu leis lengvai įgyvendinti nuotolinį Arduino plokštės valdymą.

    Tai ne kas kita, kaip VS1838B IR imtuvas su gamintojo rekomenduojamais laidais, sumontuotais plokštėje.

    Norėdami dirbti su šiuo moduliu, jums reikia nuotolinio valdymo pulto, kurio dažnis yra 38 kHz.

    Šios plokštės privalumas – įstumiama jungtis, leidžianti be litavimo pakeisti IR imtuvą kitu, veikiančiu Jūsų projektui reikiamu dažniu.

    Pagrindinės techninės charakteristikos:

    Maitinimo įtampa: 2,7 - 5,5V

    Moduliacijos dažnis: 38kHz

    Temperatūros diapazonas: - 20 ... + 80°C

    Sąsaja: skaitmeninė

    Prisijungimas prie Arduino

    Modulis turi trijų kontaktų 2,54 mm jungtį

    : jungiasi prie GND kaiščio

    : jungiasi prie +5V išvesties

    : jungiasi prie skaitmeninio kaiščio (pavyzdyje D2)

    Darbo Arduino aplinkoje pavyzdys

    Norėdami dirbti su šiuo moduliu, turite įdiegti IRRemote biblioteką

    Atsisiųskite, išpakuokite ir įdėkite į „Arduino“ aplanko bibliotekos aplanką. Jei Arduino IDE buvo atidaryta pridedant biblioteką, iš naujo paleiskite aplinką.

    Nuotolinio valdymo pulto mygtukų skaitymas

    Norėdami perskaityti nuotolinio valdymo pulto rodmenis, užpildykite žemiau esantį eskizą. Jis išves paspaustų mygtukų kodavimą į prievadą.

    Kaip pavyzdį naudosime nuotolinio valdymo pultą, kaip paveikslėlyje, nes Šio tipo nuotolinio valdymo pultelis yra komplekte

    Apie įvairių nuotolinio valdymo pultelių veikimo logikos skirtumus galite perskaityti originaliame mūsų bendruomenės nario straipsnyje slapyvardžiu

    Kodo pavyzdys:

    #įtraukti int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); //Sukurkite objektą signalui iš konkretaus prievado priimti decode_results rezultatai; //Kintamasis, išsaugantis rezultatą tuštuma sąranka () { Serijinis // Pradėti gauti) tuštuma kilpa() ( if (irrecv.decode(&results)) //Gavę signalą... { Serijinis.println(results.value); //...išveda jo reikšmę į nuoseklųjį prievadą irrecv.resume(); ) )

    Prievado monitoriuje turėtumėte matyti šiuos dalykus:

    Laikydami kiekvieną mygtuką beveik sekundę, gauname apie 10 kodų. Pirmasis yra mygtuko kodas. Ir po jo pradeda pasirodyti standartinis kodas, pranešantis, kad mygtukas užstrigo.

    Arduino plokštės valdymas nuotolinio valdymo pulteliu

    Padarykime, kad šviesos diodas Arduino plokštėje (D13) užsidegtų, kai užkoduotas pirmasis mygtukas, ir išsijungtų, kai užkoduotas antrasis mygtukas.

    Kodo pavyzdys:

    // Išbandyta naudojant Arduino IDE 1.0.3#įtraukti int RECV_PIN = 2; int LED = 13; IRrecv irrecv(RECV_PIN); decode_results rezultatai; tuštuma sąranka () { Serijinis.begin(9600); irrecv.enableIRIn(); // Paleiskite imtuvą pinMode(LED, IŠVESTIS); ) tuštuma kilpa() ( if (irrecv.decode(&results)) ( Serijinis.println(results.value); jei (results.value == 16769565) // Kai gaunate kodavimą 1(digitalWrite (LED, AUKŠTAS); // Įjunkite šviesos diodą) if (results.value == 16761405) // Kai gaunate kodavimą 2(digitalWrite (LED, LOW); // Išjunkite šviesos diodą) irrecv.resume(); // Gaukite kitą reikšmę } }

    Laba diena visiems (arba nakties, kaip norite), pradėkime nuo lyrinės įžangos. Šiuo metu daugelis žmonių turi namus TV su nuotolinio valdymo pulteliu, imtuvu, DVD grotuvu . Daugelis žmonių (ir šeimų) neįsivaizduoja savo namų gyvenimo be nuotolinio valdymo pulto rankoje. Sutikite – kaip puiku būti buitinės technikos meistru ir bet kurią akimirką diktuoti savo valią šioms aparatūros detalėms. Šiame straipsnyje norėtume išsamiau pažvelgti į nuotolinio valdymo technologiją ir pateikti keletą pritaikymo mūsų poreikiams pavyzdžių.

    Taigi, ko mums reikia kaip komponentų mūsų eksperimentui? Kaip pasirinkimas parduodami jau paruošti IR pultelio ir IR imtuvo moduliai. Tačiau nenorime laukti ir mokėti pinigų, todėl elgsimės griežčiau. Paimkime kaip pagrindą neaiškios kilmės nuotolinio valdymo pultelį, taip pat turime kiniško imtuvo plokštės gabalėlį, ant kurio yra lituojamas infraraudonųjų spindulių imtuvas. Žemiau esančioje nuotraukoje galite pamatyti šiuos komponentus. Tiesą sakant, nuotolinio valdymo pultas buvo rastas tarp nereikalingo šlamšto ant biuro stalo, o lenta su IR imtuvu paimta iš artimiausios radijo remonto dirbtuvės.

    Na tada, kaip sakydavau Hanibalas - „Pirmyn į Kartaginą“ . Mums tereikia išlituoti imtuvą ir prijungti jį prie plokštės Arduino pagal sekančią schemą...

    • IR imtuvo prijungimas

    IR imtuvas kuris buvo sulituotas iš plokštės neturi jokių žymėjimų, tai tik dar vienas nežinomas kiniškas radijo komponentas, kurio pagaminta tūkstančiai. Trumpai galima sakyti – viename pastate jis sujungiamasfotodiodas, pirminis stiprintuvas ir tvarkyklė . Išėjimą sudaro normalusTTL signalas be paminkštinimo, tinka tolesniam apdorojimui mikrovaldikliu. Nešlio dažnis galbūt (!) 36 kHz, bet dabar tai nėra taip svarbu... Tiesiog pabandykime prijungti prie plokštėsArduino , sąlyginė diagrama pateiks norimą šio įrenginio pinout. Žemiau esančioje diagramoje raudonai paryškinta kūno, iš kurio pagamintas mūsų, formaIR imtuvas , paryškintas žaliai – smeigtukas, kuriuo jis prijungiamas prie lentosArduino .

    Dėmesio!!! Internete yra daug tokio paketo įrenginių (TSOP) išjungimo diagramų. Šiame straipsnyje pateikti pinouts gali nesutapti su jokiu rastu internete, bet taip viskas su mumis susieta. Jei prijungtas IR imtuvas pradeda kaisti, nedelsdami išjunkite surinktą grandinę, tai reiškia, kad jungties kištukas neatitinka tikrojo ir jį turėsite pasirinkti beveik atsitiktinai. Būtent taip ir padarėme, nes internete rastos grandinės mūsų IR imtuvui netiko. Čia apskritai svarbiausia nesudeginti Arduino plokštės, elkitės atsargiai!!!

    • IRremote biblioteka

    Taigi viskas susiję. Yra biblioteka kodams nuskaityti iš nuotolinio valdymo pulto IRremote.h, būtent jo pagalba išstudijuosime savo nuotolinio valdymo pultelį, tiksliau – mygtukų kodus. Ateityje skaitytus kodus naudosime savo reikmėms. Eskizas, su kuriuo bus skaitomi mygtukų kodai, pateiktas šios bibliotekos pavyzdžiuose, ji vadinasi IRrecvDemo. Dėmesio!!! Sudarant eskizą pateikiama klaida; pačioje pradžioje turite pridėti dar dvi papildinių bibliotekas:

    #include "boarddefs.h" //Papildoma biblioteka #include "IRremote.h" #include "IRremoteInt.h" //Papildoma biblioteka int RECV_PIN = 2; //Infraraudonųjų spindulių imtuvo išvesties signalo prijungimo kaištis //Sukurti IRrecv klasės egzempliorių, perduodant signalo iš IR imtuvo prijungimo kaištį kaip parametrą IRrecv irrecv(RECV_PIN); decode_results rezultatai; //Kintamasis, skirtas išsaugoti gautą paspausto mygtuko kodą void setup() ( Serial.begin(9600); irrecv.enableIRIn(); //Įgalina veikti IR imtuvą ) void loop() ( if (irrecv.decode() &results)) //Jei įvyko įvykis/mygtukas buvo paspaustas ( Serial.println(results.value, HEX); //Paspausto mygtuko kodą šešioliktaine forma išveskite į prievado monitorių irrecv.resume(); // Skaityti kitą reikšmę/mygtuką ) delsa (100);)

    Po to, kai eskizas buvo įkeltas į lentąArduino(mes naudojame Arduino nano ant skydo Įvesties / išvesties belaidis skydas, skirtas nano ), galima atidaryti prievado monitorius ir pamatysite, kokie kodai pasirodo paspaudus nuotolinio valdymo pultelio mygtukus. Eskizo rezultatas parodytas žemiau esančioje ekrano kopijoje:

    Beje, kaip prievado monitorius Mes naudojame savo patikrintą programinę įrangą, jei kas nors domisi, galite perskaityti straipsnį ir atsisiųsti Serial Monitor Pro.

    #define KEY_ONOFF 0x807F807F //Įjungimo/išjungimo mygtukas #define KEY_MUTE 0x807F48B7 //Nutildymo mygtukas #define KEY_1 0x807F00FF //1 mygtukas #define KEY_2 0x807FE01F 3 #define KEY_4 0x807F20DF //4 mygtukas #define KEY_5 0x807FD02F //5 mygtukas #define KEY_6 0x807F50AF //6 mygtukas #define KEY_7 0x807F10EF //7 mygtukas #define KEY_8 0x807FF00F //Button KEY_6/09F8F # define KEY_0 0x807FC837 //Button 0

    O dabar apskritai viskas paruošta paskutiniam testui – tai bus elementarus relių modulių įjungimo/išjungimo valdymo testas. Štai nedidelė užduotis:

    • Mes naudojame du relių modulius
    • Relę Nr. 1 sujungiame su nuotolinio valdymo pulto mygtuku "1".
    • Relė Nr. 2 yra susieta su nuotolinio valdymo pulto mygtuku "2".
    • Bet kuris relės modulis įjungiamas paspaudus mygtuką, kuriam jis priskirtas
    • Bet kuris relės modulis taip pat išjungiamas paspaudus mygtuką, kuriam jis priskirtas
    • Paspaudus įjungimo/išjungimo mygtuką besąlygiškai išjungiami abu relių moduliai (jei jie buvo įjungti arba vienas iš jų įjungtas)

    Eskizas, įgyvendinantis aukščiau pateiktą užduotį:

    #include "boarddefs.h" //Papildoma biblioteka #include "IRremote.h" #include "IRremoteInt.h" //Papildoma biblioteka #define KEY_ONOFF 0x807F807F //Įjungimo/išjungimo mygtukas #define KEY_1 0x807F00FF #/Button KEY1 0x807FE01F //2 mygtukas #define RELOUT1 3 //1 relės išvesties prievadas #define RELOUT2 4 //2 relės išvesties prievadas int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results rezultatai; statinis loginis REL1_ONOFF = klaidingas; statinis loginis REL2_ONOFF = klaidingas; void setup() ( pinMode(RELOUT1, OUTPUT); pinMode(RELOUT2, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); // Paleiskite imtuvą ) void loop() ( if (irrecv.decode(&results) )) ( switch(results.value) (atvejis(KEY_ONOFF): REL1_ONOFF = klaidingas; REL2_ONOFF = klaidingas; pertrauka; atvejis(KEY_1): if(REL1_ONOFF) REL1_ONOFF = klaidingas; else REL1_ONOFF = tiesa; pertrauka; atvejis (KEY_2) ): if(REL2_ONOFF) REL2_ONOFF = klaidinga; kitu atveju REL2_ONOFF = tiesa; pertrauka; ) irrecv.resume(); ) digitalWrite (RELOUT1, REL1_ONOFF); skaitmeninis rašymas (RELOUT2, REL2_ONOFF); delsa (100); )

    O straipsnio pabaigoje yra vaizdo įrašas, kuriame demonstruojamas abiejų eskizų darbas. Jei norite ir turite kūrybinės vaizduotės, galite išplėsti priedų parką ir viską tvarkyti pažangiau. Savo straipsnyje bandėme pateikti pagrindinį šios technologijos naudojimo pavyzdį. Ačiū už dėmesį ir malonaus žiūrėjimo!!!

    Įgalinkite javascript, kad komentarai veiktų.

    Internete yra daug straipsnių apie tai, kaip sukurti savo televizoriaus nuotolinio valdymo pultą naudojant „Arduino“, tačiau man reikėjo universalaus nuotolinio valdymo pulto, kad galėčiau valdyti televizorių ir daugialypės terpės grotuvą. Pagrindinis mano universalaus nuotolinio valdymo pulto privalumas yra tas, kad Android telefono programėlės mygtukai yra dvejopos paskirties, bet žiūrėkite vaizdo įrašą.



    Nuotolinio valdymo pultas labai patogus tuo, kad beveik tais pačiais mygtukais ekrane valdomas televizorius ir grotuvas. Vienas skirtumas yra tas, kad " AV"TV valdymo režimu pakeičiamas mygtukas" " (sustabdyti) perjungiant į grotuvo valdymo režimą. Paveikslėliai rodo du režimus, kairėje yra televizoriaus valdymo režimas, dešinėje - grotuvo valdymo režimas.

    Na, dabar aš jums šiek tiek papasakosiu apie tokio nuotolinio valdymo pulto kūrimą. Prietaisui naudojau ERGO televizoriaus ir DUNE HD TV101W medijos grotuvo nuotolinio valdymo pultą.

    Duomenims gauti iš nuotolinio valdymo pultelių panaudojau infraraudonųjų spindulių jutiklį TSOP1138 (analogišką TSOP4838), kurio veikimo dažnis 38 kHz ir prijungiau prie Arduino plokštės pagal schemą:

    Šis eskizas nebus reikalingas norint nustatyti duomenų perdavimo kodavimą ir nuskaityti nuotolinio valdymo pulto mygtukų kodą.

    Eskizo eilutėje int RECV_PIN = 11; nurodykite mūsų PIN numerį 4

    Įkėlę eskizą atidarykite „prievado monitorių“ ir, paspausdami nuotolinio valdymo pulto mygtukus, pažiūrėkite į gautus duomenis.

    Nuotraukoje parodytas televizoriaus nuotolinio valdymo pulto ir grotuvo nuotolinio valdymo pulto maitinimo mygtuko nuskaitymo pavyzdys. Dabar sukuriame mygtukų kodų lentelę.

    Gavau kaip aukščiau esančioje nuotraukoje. Po užrašu televizorius TV nuotolinio valdymo pulto mygtukų kodai; po užrašu Žaidėjas- kodai iš medijos grotuvo nuotolinio valdymo pulto.

    Dabar mes atjungiame infraraudonųjų spindulių signalo imtuvą nuo Arduino plokštės ir prijungiame HC-05 Bluetooth modulį ir infraraudonųjų spindulių šviesos diodą pagal nuotraukoje pateiktą schemą.

    Po to pereiname tiesiai prie eskizo.

    Eskizas

    #įtraukti 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) ( // TV nuotolinio valdymo pulto mygtukų kodai if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); delsa (40) ); ) if (x == 98) ( irsend.sendNEC(0x807FA857, 32); delsa (40); ) if (x == 99) ( irsend.sendNEC(0x807F708F, 32); delsa (40); ) if (x == 100) ( irsend.sendNEC(0x807FF00F, 32); delsa (40); ) if (x == 101) ( irsend.sendNEC(0x807F30CF, 32); delsa (40); ) if (x == 102) ( irsend.sendNEC(0x807FB04F, 32); delsa (40); ) if (x == 103) ( irsend.sendNEC(0x807F9867, 32); delsa (40); ) if (x == 104) ( irsend .sendNEC(0x807F58A7, 32); delsa (40); ) if (x == 105) ( irsend.sendNEC(0x807FD827, 32); delsa (40); ) if (x == 106) ( irsend.sendNEC(0xC707F38) , 32); delsa (40); ) if (x == 107) ( irsend.sendNEC(0x807F48B7, 32); delsa (40); ) if (x == 108) ( irsend.sendNEC(0x807FB847, 32); delsa(40); ) if (x == 109) ( irsend.sendNEC(0x807F6897, 32); delsimas(40); ) ) if (y == 2) ( //medijos grotuvo nuotolinio valdymo pulto mygtukų kodai if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); delsa (40); ) if (x == 98) ( irsend. sendNEC(0xFDE01F, 32); delsa (40); ) if (x == 99) ( irsend.sendNEC(0xFD18E7, 32); delsa (40); ) if (x == 100) ( irsend.sendNEC (0xFDE817, 32); delsa (40); ) if (x == 101) ( irsend.sendNEC(0xFDA857, 32); delsa (40); ) if (x == 102) ( irsend.sendNEC(0xFD6897, 32) ); delsa (40); ) if (x == 103) ( irsend.sendNEC(0xFDA857, 32); delsa (40); ) if (x == 104) ( irsend.sendNEC(0xFD6897, 32); delsa ( 40); ) if (x == 105) ( irsend.sendNEC(0xFDE817, 32); delsa (40); ) if (x == 106) ( irsend.sendNEC(0xFD18E7, 32); delsa (40); ) if (x == 107) ( irsend.sendNEC(0xFD9867, 32); delsa (40); ) if (x == 108) ( irsend.sendNEC(0xFD28D7, 32); delsa (40); ) if (x = = 109) ( irsend.sendNEC(0xFD20DF, 32); delsa(40); ) ) )


    Eskize turėsite redaguoti mygtukų kodus, būtent eilutėse:

    Jei (x == 97) ( irsend.sendNEC(0x807F08F7, 32); delsa (40);
    Pakeiskite reikšmę 807F08F7 į:

    If (y == 1) ( //TV nuotolinio valdymo pulto mygtuko kodai if (x == 97) ( irsend.sendNEC(0x12345678, 32); delsa (40); )
    Kur 12345678 yra jūsų mygtuko kodas.

    Redaguodami eskizą naudodami mygtukų kodus, įkelkite eskizą į „Arduino“ plokštę ir pereikite prie programos diegimo telefone.

    Telefone įjungiame Bluetooth, ieškome savo įrenginio, sukuriame porą, tada paleidžiame programą Pult telefonu.

    Paleidus apatiniame dešiniajame kampe turėsime ekraną su raudona „Bluetooth“ piktograma, kuri signalizuoja, kad nesame prisijungę prie savo įrenginio.

    Po to spustelėkite šią piktogramą. Turėtume pamatyti langą su visų galimų „Bluetooth“ įrenginių sąrašu, kuriame pasirenkame įrenginį, kurį norite prisijungti.

    Dabar grįžtame į pagrindinį ekraną ir jau galime valdyti televizorių:

    Norėdami pereiti į valdymo režimą, turime paspausti pažymėtą mygtuką "Žaidėjas". Kaip jau sakiau anksčiau, mūsų mygtukas, pažymėtas "AV", pasikeis į mygtuką " ":

    Norėdami atsijungti nuo mūsų įrenginio, tiesiog keletą sekundžių palaikykite nuspaudę maitinimo mygtuką.

    Na, kelios mano baigto įrenginio nuotraukos.

    Atrodo, visai gerai pasirodė. Laukiu komentarų apie straipsnį.