Telekomandë universale për Arduino. Transmetimi i të dhënave në intervalin infra të kuqe duke përdorur Arduino Lidhja e një marrësi infra të kuqe me arduino

Ka shumë artikuj në internet se si të krijoni telekomandën tuaj duke përdorur Arduino, por më duhej një telekomandë universale për të kontrolluar televizorin tim dhe luajtësin e mediave. Avantazhi kryesor i telekomandës sime universale është se butonat në aplikacionin e telefonit Android janë me qëllime të dyfishta, por shikoni videon.



Telekomanda është shumë e përshtatshme në atë që pothuajse të njëjtat butona në ekran përdoren për të kontrolluar televizorin dhe luajtësin. Një ndryshim është se " AV"në modalitetin e kontrollit të televizorit ndryshon në një buton" " (ndaloni) kur kaloni në modalitetin e kontrollit të luajtësit. Fotografitë tregojnë dy mënyra, në të majtë është modaliteti i kontrollit të televizorit, në të djathtë është modaliteti i kontrollit të luajtësit.

Epo, tani do t'ju tregoj pak për krijimin e një telekomande të tillë. Për pajisjen përdora telekomandën për televizorin ERGO dhe telekomandën për media playerin DUNE HD TV101W.

Për të marrë të dhëna nga telekomanda, përdora një sensor infra të kuqe TSOP1138 (analog me TSOP4838) me një frekuencë funksionimi prej 38 kHz dhe e lidha atë me tabelën Arduino sipas skemës:

Kjo skicë nuk do të nevojitet për të përcaktuar kodimin e transmetimit të të dhënave dhe për të lexuar kodin e butonave të telekomandës.

Në skicën në rreshtin int RECV_PIN = 11; tregoni numrin tonë të pinit 4

Pas ngarkimit të skicës, hapni "monitorin e portit" dhe, duke shtypur butonat e telekomandës, shikoni të dhënat e marra.

Figura tregon një shembull të skanimit të butonit të energjisë nga telekomanda e televizorit dhe telekomanda e luajtësit. Tani krijojmë një tabelë për kodet e butonave.

E kam marrë si në foton e mësipërme. Nën mbishkrimin TV Kodet e butonave të telekomandës së televizorit; nën mbishkrim Lojtar- kodet nga telekomanda e luajtësit të mediave.

Tani ne shkëputim marrësin tonë të sinjalit infra të kuqe nga bordi Arduino dhe lidhim modulin Bluetooth HC-05 dhe një LED infra të kuqe me të sipas diagramit në foto.

Pas kësaj, ne kalojmë drejtpërdrejt në skicë.

Skicë

#përfshi 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; ) nëse (x == 50) ( y = 2; ) nëse (y == 1) ( // kodet e butonave për telekomandën e televizorit nëse (x == 97) ( irsend.sendNEC(0x807F08F7, 32); vonesë(40 ); ) nëse (x == 98) (irsend.sendNEC(0x807FA857, 32); vonesë(40); ) nëse (x == 99) (irsend.sendNEC(0x807F708F, 32); vonesë(40); ) nëse (x == 100) ( irsend.sendNEC(0x807FF00F, 32); vonesë(40); ) nëse (x == 101) (irsend.sendNEC(0x807F30CF, 32); vonesë(40); ) nëse (x == 102) ( irsend.sendNEC(0x807FB04F, 32); vonesë (40); ) nëse (x == 103) (irsend.sendNEC(0x807F9867, 32); vonesë (40); ) nëse (x == 104) (irsend .sendNEC(0x807F58A7, 32); vonesë (40); ) nëse (x == 105) (irsend.sendNEC(0x807FD827, 32); vonesë(40); ) nëse (x == 106) (irsend.send7FD827, 32); , 32); vonesë(40); ) nëse (x == 107) (irsend.sendNEC(0x807F48B7, 32); vonesë(40); ) nëse (x == 108) (irsend.sendNEC(0x807FB847, 32); vonesë (40); ) nëse (x == 109) (irsend.sendNEC (0x807F6897, 32); vonesa (40); ) ) nëse (y == 2) ( //kodet e butonave të telekomandës së luajtësit të mediave nëse (x == 97) (irsend.sendNEC(0xFDC23D, 32); vonesë(40); ) nëse (x == 98) ( irsend. sendNEC(0xFDE01F, 32); vonesë (40); ) nëse (x == 99) (irsend.sendNEC(0xFD18E7, 32); vonesë (40); ) nëse (x == 100) (irsend.sendNEC (0xFDE817, 32); vonesë (40); ) nëse (x == 101) (irsend.sendNEC(0xFDA857, 32); vonesë (40); ) nëse (x == 102) (irsend.sendNEC(0xFD6897, 32 ); vonesë (40); ) nëse (x == 103) (irsend.sendNEC(0xFDA857, 32); vonesë (40); ) nëse (x == 104) (irsend.sendNEC(0xFD6897, 32); vonesë( 40); ) nëse (x == 105) (irsend.sendNEC(0xFDE817, 32); vonesë (40); ) nëse (x == 106) (irsend.sendNEC(0xFD18E7, 32); vonesë (40); ) nëse (x == 107) ( irsend.sendNEC (0xFD9867, 32); vonesë (40); ) nëse (x == 108) (irsend.sendNEC (0xFD28D7, 32); vonesë (40); ) nëse (x = = 109) (irsend.sendNEC(0xFD20DF, 32); vonesë (40); ) ) )


Në skicë do t'ju duhet të redaktoni kodet e butonave, përkatësisht në rreshtat:

Nëse (x == 97) (irsend.sendNEC(0x807F08F7, 32); vonesë (40);
Ndryshoni vlerën 807F08F7 në:

Nëse (y == 1) ( //kodet e butonave për telekomandën e televizorit nëse (x == 97) ( irsend.sendNEC(0x12345678, 32); vonesë (40); )
Ku 12345678 është kodi për butonin tuaj.

Pasi të redaktoni skicën duke përdorur kodet tuaja të butonave, ngarkoni skicën në tabelën Arduino dhe vazhdoni me instalimin e aplikacionit në telefonin tuaj.

Ne aktivizojmë Bluetooth-in në telefon, kërkojmë pajisjen tonë, krijojmë një çift dhe më pas hapim aplikacionin Pult në telefon.

Pas nisjes do të kemi një ekran me një ikonë të kuqe bluetooth në këndin e poshtëm djathtas, i cili sinjalizon se nuk jemi të lidhur me pajisjen tonë.

Pas kësaj, klikoni në këtë ikonë. Ne duhet të shohim një dritare me një listë të të gjitha pajisjeve të disponueshme Bluetooth, ku zgjedhim pajisjen tonë për t'u lidhur.

Tani jemi kthyer në ekranin kryesor dhe tashmë mund të kontrollojmë televizorin:

Për të kaluar në modalitetin e kontrollit, duhet të shtypim butonin e etiketuar "Lojtar". Siç thashë më herët, butoni ynë i emërtuar "AV" do të ndryshojë në një buton " ":

Për t'u shkëputur nga pajisja jonë, thjesht mbani të shtypur butonin "Power" për disa sekonda.

Epo, disa foto të pajisjes sime të përfunduar.

Doli mjaft mirë, me sa duket. Pres komente për artikullin.

Ai dërgon një paketë të dhënash të koduara dhe të moduluara në IR LED, dhe kur butoni mbahet i shtypur, përsëritni gjithashtu paketat.

  • Drita e padukshme infra të kuqe nga IR LED godet modulin e marrësit Trima IR, ku shndërrohet në impulse elektrike të demoduluara.
  • Biblioteka iarduino_IR lexon dhe dekodon vazhdimisht pulset nga marrësi IR (duke përdorur kohëmatësin e dytë të harduerit Arduino)
  • Në kodin e ciklit, ne kontrollojmë të dhënat e deshifruara nga biblioteka me ato të caktuara për pajisjen (llambën) dhe nëse ato përputhen, atëherë ndryshojmë gjendjen ("1"/"0") në hyrjen e modulit Trema Gjendja e ngurtë. Prandaj, stafetë, ndizni ose fikni pajisjen (llambën).
  • Pajisja mund të jetë e dobishme nëse caktoni butona të papërdorur në telekomandën e televizorit (për shembull, butonat e teletekstit me ngjyra) për të kontrolluar ndriçimin në dhomë.

    Në vend të llambave inkandeshente, mund të lidhni çdo pajisje rrjeti ~220 V me një konsum aktual deri në 2 A.

    Do të na duhen:

    • Telekomanda IR x 1 copë (do ta bëjë çdo telekomandë IR TV)
    • Pajisjet (llambat) që do t'i kontrollojmë x 3 copë.

    Për të zbatuar projektin duhet të instalojmë bibliotekën:

    • Biblioteka iarduino_IR për të punuar me marrës IR
      E RËNDËSISHME: biblioteka përdor një kohëmatës të dytë të harduerit,
      MOS DELIZO SINJALET PWM NE 3 OSE 11 DALJE!

    Mund të mësoni se si të instaloni bibliotekat në faqen Wiki - Instalimi i bibliotekave në Arduino IDE.

    Video:

    Diagrami i lidhjes:

    Ky qark përdor vetëm module dixhitale; ato mund të lidhen me çdo kunj (si dixhitale ashtu edhe analoge) Arduino. Për shembull, ne i lidhëm të gjitha modulet me daljet analoge. Jo të gjithë e dinë që kunjat analoge të Arduino mund të funksionojnë si kunja dixhitale të rregullta, duke ju lejuar të merrni (nga një marrës IR) dhe të transmetoni (në reletë e gjendjes së ngurtë) sinjale dixhitale në formën e "0" dhe "1" logjike.

    Nëse do të lidhni pajisjet me kunjat e tjera, atëherë numrat e tyre duhet të tregohen në rreshtin e dytë (deklarimi i objektit IR) dhe i tretë (deklarimi i grupit pinRelay) të skicës. Kodi i programit është shkruar në mënyrë që të mund të lidhni sa më shumë rele sa ka kunja të lira në Arduino-n tuaj, thjesht duke renditur numrat e pineve në rreshtin e tretë të skicës (deklarimi i grupit pinRelay).

    Algoritmi i punës:

    • Në fillim, skica cakton kodin e butonit të telekomandës IR për çdo stafetë të gjendjes së ngurtë në mënyrë sekuenciale. Së pari, LED pulson dhe qarku i stafetës së gjendjes së ngurtë mbyllet, dalja e të cilit tregohet së pari. Nëse shtypni ndonjë buton në telekomandën IR, kodi për atë buton do t'i caktohet atij rele dhe tjetri do të fillojë të pulsojë, e kështu me radhë, derisa të gjitha reletë t'u caktohen butonat në telekomandën IR.
    • Pas takimitFunksionet e butonit, të gjitha reletë janë të fikur. Nëse shtypni butonin e telekomandës IR, stafeta të cilës i është caktuar kodi i këtij butoni do të ndizet. Nëse shtypni përsëri butonin e treguar, stafeta do të fiket. Pajisja nuk do t'i përgjigjet shtypjes së butonave, kodi i të cilëve nuk është caktuar në asnjë stafetë.
    • Nëse Nëse nuk dëshironi të caktoni kodet e butonave në çdo fillim, atëherë tregoni në mënyrë eksplicite kur deklaroni grupin varRelay dhe hiqni sythe for dhe while nga kodi i konfigurimit.
    • Gjeni kodin për secilin buton mund të shkruani rreshtin e mëposhtëm: if(IR.check())(Serial.println(IR.data);)

    Kodi i programit:

    #përfshi // lidhni bibliotekën për të punuar me marrësin IR iarduino_IR_RX IR(A5); // deklaroni një objekt IR për të punuar me një marrës IR (duke treguar çdo pin me të cilin është lidhur marrësi IR) const uint8_t pinRelay = (A1,A2,A3); ( // deklaroni një konstante duke kaluar numrin e elementeve të saj në grupin pinRelay (numri i releve) uint32_t varRelay; // deklaroni një grup me kode (komanda) të marrësit IR duke përfshirë reletë bool modRelay; // deklaroni një grup me gjendje rele uint8_t setRelay; // deklaroni një variabël me numrin e releve për të cilat komanda nga marrësi IR është shkruar void setup())( IR.begin(); // inicializoni punën me transmetuesin IR for(uint8_t i=0; i Moduli IR Receiver në kombinim me një telekomandë IR do t'ju lejojë të zbatoni lehtësisht telekomandën e tabelës Arduino.

    Nuk është asgjë më shumë se një marrës IR VS1838B me parzmoren e rekomanduar të prodhuesit të instaluar në tabelë.

    Për të punuar me këtë modul jashtë kutisë, ju nevojitet një telekomandë me një frekuencë prej 38 kHz.

    Avantazhi i kësaj borde është lidhësi push-in, i cili ju lejon të zëvendësoni marrësin IR me një tjetër që funksionon në frekuencën e kërkuar për projektin tuaj pa saldim.

    Karakteristikat kryesore teknike:

    Tensioni i furnizimit: 2.7 - 5.5V

    Frekuenca e modulimit: 38 kHz

    Gama e temperaturës: - 20 ... + 80°C

    Ndërfaqja: Dixhitale

    Lidhja me Arduino

    Moduli është i pajisur me një lidhës me tre kunja 2.54 mm

    : lidhet me pinin GND

    : lidhet me daljen +5V

    : lidhet me pinin dixhital (D2 në shembull)

    Një shembull i punës në mjedisin Arduino

    Për të punuar me këtë modul, duhet të instaloni bibliotekën IRremote

    Shkarkoni, shpaketoni dhe vendoseni në dosjen e librarive në dosjen Arduino. Nëse Arduino IDE ishte i hapur në kohën e shtimit të bibliotekës, rinisni mjedisin.

    Leximi i butonave të telekomandës

    Për të lexuar leximet e telekomandës, plotësoni skicën më poshtë. Ai do të nxjerrë kodimin e butonave të shtypur në port.

    Si shembull, do të përdorim telekomandën, si në foto, sepse Ky lloj i telekomandës përfshihet në komplet

    Ju mund të lexoni për ndryshimet në logjikën e funksionimit të telekomandave të ndryshme në artikullin origjinal nga një anëtar i komunitetit tonë me pseudonimin

    Shembull i kodit:

    #përfshi int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); //Krijoni një objekt për marrjen e një sinjali nga një port specifik rezultatet e dekodimit të rezultateve; //Ndryshorja që ruan rezultatin i pavlefshëm konfigurimi () { Serial // Filloni të merrni) i pavlefshëm lak() (nëse (irrecv.dekodimi(&rezultatet)) //Kur merr një sinjal... { Serial.println(rezultatet.vlera); //...jato vlerën e tij në portën serike irrecv.resume(); ) )

    Ju duhet të shihni sa vijon në monitorin e portit:

    Duke mbajtur çdo buton për pothuajse një sekondë, marrim rreth 10 kode. I pari është kodi i butonit. Dhe pas tij, fillon të shfaqet një kod standard, i cili raporton se butoni është mbërthyer.

    Kontrollimi i tabelës Arduino me telekomandë

    Le të bëjmë që LED në tabelën Arduino (D13) të ndizet kur butoni i parë është i koduar dhe të fiket kur butoni i dytë është i koduar.

    Shembull i kodit:

    // Testuar në Arduino IDE 1.0.3#përfshi int RECV_PIN = 2; int LED = 13; IRrecv irrecv(RECV_PIN); rezultatet e dekodimit të rezultateve; i pavlefshëm konfigurimi () { Serial.fillim(9600); irrecv.enableIRIn(); // Nis marrësin pinMode (LED, OUTPUT); ) i pavlefshëm lak() ( nëse (irrecv.dekodi(&rezultatet)) ( Serial.println(rezultatet.vlera); nëse (rezultatet.vlera == 16769565) // Kur merrni kodimin 1(Dixhital Shkrimi (LED, LARTË); // Ndizni LED) if (results.value == 16761405) // Kur merrni kodimin 2(DixhitalWrite (LED, LOW); // Fikni LED-in) irrecv.resume(); // Merrni vlerën tjetër } }

    Ditën e mirë të gjithëve (ose natën, sipas dëshirës), le të fillojmë me një hyrje lirike. Në ditët e sotme shumë njerëz kanë shtëpi TV me telekomandë, akordues, DVD player . Shumë njerëz (dhe familje) nuk mund ta imagjinojnë jetën e tyre në shtëpi pa një telekomandë në dorë. Pajtohem - sa e mrekullueshme është të jesh mjeshtër i pajisjeve shtëpiake dhe në çdo moment të diktosh vullnetin tënd ndaj këtyre pjesëve të pajisjeve. Në këtë artikull, ne do të dëshironim të shikonim më në thellësi teknologjinë e telekomandës dhe të japim disa shembuj aplikimi për nevojat tona.

    Pra, çfarë na nevojitet si komponentë për eksperimentin tonë? Si opsion Shiten të gatshme telekomanda IR dhe modulet e marrësit IR. Por ne nuk duam të presim dhe të paguajmë para, kështu që do të veprojmë më fort. Le të marrim si bazë një telekomandë me origjinë të panjohur, kemi gjithashtu një copë dërrase nga një sintonizues kinez, mbi të cilin është ngjitur një marrës infra të kuqe. Në foton më poshtë mund t'i shihni këto përbërës. Për të qenë i sinqertë, telekomanda u gjet mes mbeturinave të panevojshme në tavolinën e zyrës dhe bordi me marrësin IR u mor nga dyqani më i afërt i riparimit të radios.

    Epo atëherë, siç thoja Hanibali - "Përpara në Kartagjenë" . Thjesht duhet të shkyçim marrësin dhe ta lidhim atë me tabelën Arduino sipas skemës së mëposhtme...

    • Lidhja e një marrësi IR

    Marrës IR e cila është ngjitur nga pllaka nuk ka asnjë shenjë, është thjesht një tjetër komponent i panjohur i radios kineze, nga të cilat janë prodhuar mijëra. Me pak fjalë, mund të themi - në një ndërtesë kombinohetfotodiodë, parapërforcues dhe drejtues . Prodhimi është formuar nga një normaleSinjali TTL pa mbushje, i përshtatshëm për përpunim të mëtejshëm nga mikrokontrolluesi. Frekuenca e bartësit është ndoshta (!) 36 kHz, por tani kjo nuk është aq e rëndësishme... Le të përpiqemi ta lidhim atë me tabelënArduino , diagrami i kushtëzuar do të japë pikën e dëshiruar të kësaj pajisjeje. Në diagramin më poshtë, e theksuar me të kuqe është forma e trupit në të cilin është bërë i yniMarrës IR , i theksuar me ngjyrë të gjelbër - pinout në të cilin është i lidhur me tabelënArduino .

    Kujdes!!! Në internet ka shumë diagrame pinout për pajisjet në një paketë të tillë (TSOP). Pikat e dhëna në këtë artikull mund të mos përkojnë me ndonjë të gjetur në internet, por kjo është mënyra se si gjithçka lidhet me ne. Nëse marrësi IR fillon të nxehet kur lidhet, fikni menjëherë qarkun e montuar; kjo do të thotë që pika e lidhjes nuk korrespondon me atë aktuale dhe do t'ju duhet ta zgjidhni atë pothuajse në mënyrë të rastësishme. Kjo është pikërisht ajo që bëmë, sepse qarqet e gjetura në internet nuk ishin të përshtatshme për marrësin tonë IR. Këtu, në përgjithësi, gjëja kryesore nuk është të digjni tabelën Arduino, vazhdoni me kujdes!!!

    • Biblioteka e largët

    Pra, gjithçka është e lidhur. Ekziston një bibliotekë për të lexuar kodet nga telekomanda IRremote.h, është me ndihmën e tij që ne do të studiojmë telekomandën tonë, ose më saktë kodet e butonave. Në të ardhmen, ne do të përdorim kodet e lexuara për qëllimet tona. Skica me të cilën do të lexohen kodet e butonave është paraqitur në shembujt e kësaj biblioteke, quhet IRrecvDemo. Kujdes!!! Kur përpiloni skicën, jep një gabim; që në fillim, duhet të shtoni dy biblioteka të tjera shtesë:

    #include "boarddefs.h" //Bibliotekë shtesë #include "IRremote.h" #include "IRremoteInt.h" //Bibliotekë shtesë int RECV_PIN = 2; //Pin për lidhjen e sinjalit dalës nga marrësi IR //Krijoni një shembull të klasës IRrecv, duke kaluar pinin për lidhjen e sinjalit nga marrësi IR si parametër IRrecv irrecv(RECV_PIN); rezultatet e dekodimit të rezultateve; //Variable për ruajtjen e kodit të marrë të butonit të shtypur void setup() ( Serial.begin(9600); irrecv.enableIRIn(); //Aktivizimi i marrësit IR për të punuar ) void loop() ( if (irrecv.decode( &rezultatet)) //Nëse ka ndodhur një ngjarje/butoni është shtypur ( Serial.println(results.value, HEX); //Nxjerrë kodin e butonit të shtypur në formë heksadecimal në monitorin e portit irrecv.resume(); // Lexoni vlerën/butonin tjetër ) vonesë (100 ); )

    Pasi skica të jetë ngarkuar në tabelëArduino(ne përdorim Arduino Nano në mburojë Mburoja me valë I/O për Nano ), mund të hapet monitor porti dhe shikoni se cilat kode shfaqen kur shtypni butonat në telekomandë. Rezultati i skicës tregohet në pamjen e mëposhtme të ekranit:

    Nga rruga, si monitor porti Ne përdorim softuerin tonë të provuar, nëse dikush është i interesuar, mund të lexojë artikullin dhe të shkarkojë Serial Monitor Pro.

    #define KEY_ONOFF 0x807F807F //Butoni On/Off #define KEY_MUTE 0x807F48B7 //Butoni i heshtjes #define KEY_1 0x807F00FF //Button 1 #define KEY_2 0x807BF6001F F //Button 3 #define KEY_4 0x807F20DF //Button 4 #define KEY_5 0x807FD02F //Button 5 #define KEY_6 0x807F50AF //Button 6 #define KEY_7 0x807F10EF //Button 7 #define KEY_8 0x807FF00F8 0x807FF00F0F8/7 /Button 9 # define KEY_0 0x807FC837 //Button 0

    Dhe tani, në përgjithësi, gjithçka është gati për provën përfundimtare - ky do të jetë një test elementar i kontrollit të ndezjes/fikjes së moduleve të stafetës. Këtu është një detyrë e vogël:

    • Ne përdorim dy module stafetë
    • Ne e lidhim stafetën nr. 1 me butonin "1" të telekomandës
    • Releja nr. 2 është e lidhur me butonin "2" të telekomandës
    • Ndezja e ndonjë prej moduleve rele bëhet duke shtypur butonin të cilit i është caktuar
    • Fikja e ndonjë prej moduleve të stafetës bëhet gjithashtu duke shtypur butonin të cilit i është caktuar
    • Shtypja e butonit Ndezje/Fikje i fiket pa kushte të dy modulet e stafetës (nëse janë të ndezur, ose njëra prej tyre është e ndezur)

    Një skicë që zbaton detyrën e mësipërme:

    #include "boarddefs.h" //Biblioteka shtesë #include "IRremote.h" #include "IRremoteInt.h" //Biblioteka shtesë #define KEY_ONOFF 0x807F807F //Butoni On/Off #define KEY_1 0x807Bfinute10FF 0x807FE01F //Butoni 2 #define RELOUT1 3 //Portën e daljes për stafetën 1 #define RELOUT2 4 //Portën e daljes për stafetën 2 int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); rezultatet e dekodimit të rezultateve; statike boolean REL1_ONOFF = false; statike boolean REL2_ONOFF = false; void setup() ( pinMode(RELOUT1, OUTPUT); pinMode(RELOUT2, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); // Nis marrësin ) void loop() ( if (irrecv.decode(&results )) ( switch(results.value) (rast (KEY_ONOFF): REL1_ONOFF = e rreme; REL2_ONOFF = e rreme; pushim; rast (KEY_1): nëse (REL1_ONOFF) REL1_ONOFF = e rreme; tjetër REL1_ONOFF = e vërtetë; pushim; rast (KEY_2 ): nëse (REL2_ONOFF) REL2_ONOFF = e rreme; përndryshe REL2_ONOFF = e vërtetë; thyer; ) irrecv.rini ();

    Dhe në fund të artikullit ka një video që demonstron punën e të dy skicave. Nëse dëshironi dhe keni imagjinatë krijuese, mund të zgjeroni flotën e shtojcave dhe të menaxhoni gjithçka në një mënyrë më të avancuar. Në artikullin tonë, ne u përpoqëm të japim një shembull bazë të aplikimit të kësaj teknologjie. Faleminderit për vëmendjen tuaj dhe shijoni shikimin!!!

    Ju lutemi aktivizoni javascript që komentet të funksionojnë.

    Ka shumë artikuj në internet se si të krijoni telekomandën tuaj duke përdorur Arduino, por më duhej një telekomandë universale për të kontrolluar televizorin tim dhe luajtësin e mediave. Avantazhi kryesor i telekomandës sime universale është se butonat në aplikacionin e telefonit Android janë me qëllime të dyfishta, por shikoni videon.



    Telekomanda është shumë e përshtatshme në atë që pothuajse të njëjtat butona në ekran përdoren për të kontrolluar televizorin dhe luajtësin. Një ndryshim është se " AV"në modalitetin e kontrollit të televizorit ndryshon në një buton" " (ndaloni) kur kaloni në modalitetin e kontrollit të luajtësit. Fotografitë tregojnë dy mënyra, në të majtë është modaliteti i kontrollit të televizorit, në të djathtë është modaliteti i kontrollit të luajtësit.

    Epo, tani do t'ju tregoj pak për krijimin e një telekomande të tillë. Për pajisjen përdora telekomandën për televizorin ERGO dhe telekomandën për media playerin DUNE HD TV101W.

    Për të marrë të dhëna nga telekomanda, përdora një sensor infra të kuqe TSOP1138 (analog me TSOP4838) me një frekuencë funksionimi prej 38 kHz dhe e lidha atë me tabelën Arduino sipas skemës:

    Kjo skicë nuk do të nevojitet për të përcaktuar kodimin e transmetimit të të dhënave dhe për të lexuar kodin e butonave të telekomandës.

    Në skicën në rreshtin int RECV_PIN = 11; tregoni numrin tonë të pinit 4

    Pas ngarkimit të skicës, hapni "monitorin e portit" dhe, duke shtypur butonat e telekomandës, shikoni të dhënat e marra.

    Figura tregon një shembull të skanimit të butonit të energjisë nga telekomanda e televizorit dhe telekomanda e luajtësit. Tani krijojmë një tabelë për kodet e butonave.

    E kam marrë si në foton e mësipërme. Nën mbishkrimin TV Kodet e butonave të telekomandës së televizorit; nën mbishkrim Lojtar- kodet nga telekomanda e luajtësit të mediave.

    Tani ne shkëputim marrësin tonë të sinjalit infra të kuqe nga bordi Arduino dhe lidhim modulin Bluetooth HC-05 dhe një LED infra të kuqe me të sipas diagramit në foto.

    Pas kësaj, ne kalojmë drejtpërdrejt në skicë.

    Skicë

    #përfshi 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; ) nëse (x == 50) ( y = 2; ) nëse (y == 1) ( // kodet e butonave për telekomandën e televizorit nëse (x == 97) ( irsend.sendNEC(0x807F08F7, 32); vonesë(40 ); ) nëse (x == 98) (irsend.sendNEC(0x807FA857, 32); vonesë(40); ) nëse (x == 99) (irsend.sendNEC(0x807F708F, 32); vonesë(40); ) nëse (x == 100) ( irsend.sendNEC(0x807FF00F, 32); vonesë(40); ) nëse (x == 101) (irsend.sendNEC(0x807F30CF, 32); vonesë(40); ) nëse (x == 102) ( irsend.sendNEC(0x807FB04F, 32); vonesë (40); ) nëse (x == 103) (irsend.sendNEC(0x807F9867, 32); vonesë (40); ) nëse (x == 104) (irsend .sendNEC(0x807F58A7, 32); vonesë (40); ) nëse (x == 105) (irsend.sendNEC(0x807FD827, 32); vonesë(40); ) nëse (x == 106) (irsend.send7FD827, 32); , 32); vonesë(40); ) nëse (x == 107) (irsend.sendNEC(0x807F48B7, 32); vonesë(40); ) nëse (x == 108) (irsend.sendNEC(0x807FB847, 32); vonesë (40); ) nëse (x == 109) (irsend.sendNEC (0x807F6897, 32); vonesa (40); ) ) nëse (y == 2) ( //kodet e butonave të telekomandës së luajtësit të mediave nëse (x == 97) (irsend.sendNEC(0xFDC23D, 32); vonesë(40); ) nëse (x == 98) ( irsend. sendNEC(0xFDE01F, 32); vonesë (40); ) nëse (x == 99) (irsend.sendNEC(0xFD18E7, 32); vonesë (40); ) nëse (x == 100) (irsend.sendNEC (0xFDE817, 32); vonesë (40); ) nëse (x == 101) (irsend.sendNEC(0xFDA857, 32); vonesë (40); ) nëse (x == 102) (irsend.sendNEC(0xFD6897, 32 ); vonesë (40); ) nëse (x == 103) (irsend.sendNEC(0xFDA857, 32); vonesë (40); ) nëse (x == 104) (irsend.sendNEC(0xFD6897, 32); vonesë( 40); ) nëse (x == 105) (irsend.sendNEC(0xFDE817, 32); vonesë (40); ) nëse (x == 106) (irsend.sendNEC(0xFD18E7, 32); vonesë (40); ) nëse (x == 107) ( irsend.sendNEC (0xFD9867, 32); vonesë (40); ) nëse (x == 108) (irsend.sendNEC (0xFD28D7, 32); vonesë (40); ) nëse (x = = 109) (irsend.sendNEC(0xFD20DF, 32); vonesë (40); ) ) )


    Në skicë do t'ju duhet të redaktoni kodet e butonave, përkatësisht në rreshtat:

    Nëse (x == 97) (irsend.sendNEC(0x807F08F7, 32); vonesë (40);
    Ndryshoni vlerën 807F08F7 në:

    Nëse (y == 1) ( //kodet e butonave për telekomandën e televizorit nëse (x == 97) ( irsend.sendNEC(0x12345678, 32); vonesë (40); )
    Ku 12345678 është kodi për butonin tuaj.

    Pasi të redaktoni skicën duke përdorur kodet tuaja të butonave, ngarkoni skicën në tabelën Arduino dhe vazhdoni me instalimin e aplikacionit në telefonin tuaj.

    Ne aktivizojmë Bluetooth-in në telefon, kërkojmë pajisjen tonë, krijojmë një çift dhe më pas hapim aplikacionin Pult në telefon.

    Pas nisjes do të kemi një ekran me një ikonë të kuqe bluetooth në këndin e poshtëm djathtas, i cili sinjalizon se nuk jemi të lidhur me pajisjen tonë.

    Pas kësaj, klikoni në këtë ikonë. Ne duhet të shohim një dritare me një listë të të gjitha pajisjeve të disponueshme Bluetooth, ku zgjedhim pajisjen tonë për t'u lidhur.

    Tani jemi kthyer në ekranin kryesor dhe tashmë mund të kontrollojmë televizorin:

    Për të kaluar në modalitetin e kontrollit, duhet të shtypim butonin e etiketuar "Lojtar". Siç thashë më herët, butoni ynë i emërtuar "AV" do të ndryshojë në një buton " ":

    Për t'u shkëputur nga pajisja jonë, thjesht mbani të shtypur butonin "Power" për disa sekonda.

    Epo, disa foto të pajisjes sime të përfunduar.

    Doli mjaft mirë, me sa duket. Pres komente për artikullin.