Arduino: telecomandă cu infraroșu și receptor. Controlul arduino cu telecomandă IR

receptor IR și telecomandă cu infraroșu telecomanda– cea mai comună și simplă metodă de control echipamente electronice. Spectrul de radiații infraroșii nu este vizibil pentru ochiul uman, dar este recepționat perfect de receptoarele IR care sunt încorporate în dispozitivele electronice. Modulele de la distanță Arduino ir sunt folosite pentru control diverse tehniciîn linia de vedere.

Utilizarea pe scară largă a emițătorilor IR a devenit posibilă datorită costului redus, simplității și ușurinței de utilizare. Radiația IR se află în intervalul de la 750 la 1000 de microni - aceasta este cea mai apropiată parte a spectrului de lumina vizibilă. În regiunea radiației infraroșii, proprietățile optice se pot schimba diverse materiale. Unele ochelari, de exemplu, devin opace la razele IR, în timp ce parafina, dimpotrivă, este transparentă în spectrul IR.

Radiația este înregistrată folosind materiale fotografice speciale, pe baza cărora sunt realizate receptoarele. Pe lângă corpurile încălzite (Soarele, lămpile incandescente sau lumânările), sursa de radiație infraroșie poate fi dispozitive cu stare solidă - LED-uri IR, lasere. Radiația în domeniul infraroșu are o serie de caracteristici care le fac ușor de utilizat în telecomenzi:

  • Emițătoarele în stare solidă (LED-uri IR) sunt ieftine și compacte.
  • Razele infraroșii nu sunt percepute sau detectate de ochiul uman.
  • Receptoarele IR sunt, de asemenea, ieftine și de dimensiuni mici.
  • Interferență scăzută, deoarece emițătorul și receptorul sunt reglate pe aceeași frecvență.
  • Absent impact negativ asupra sănătății umane.
  • Reflectanță ridicată din majoritatea materialelor.
  • Emițătorii IR nu afectează funcționarea altor dispozitive.

Telecomanda funcționează după cum urmează. Când apăsați butonul, semnalul este codificat în lumină infraroșie, receptorul îl primește și efectuează acțiunea necesară. Informațiile sunt codificate ca o secvență logică de pachete de impulsuri cu o anumită frecvență. Receptorul primește această secvență și demodulează datele. Pentru a recepționa semnalul, se folosește un microcircuit, care conține un fotodetector (fotodiodă), amplificatoare, filtru trece banda, un demodulator (un detector care vă permite să izolați anvelopa semnalului) și un tranzistor de ieșire. Are și filtre – electrice și optice. Astfel de dispozitive funcționează la o distanță de până la 40 de metri. Metoda IR de transmitere a datelor există în multe dispozitive: aparate electrocasnice, în echipamente industriale, calculatoare, linii de fibră optică.

Receptor IR Arduino

Pentru a citi semnalul IR veți avea nevoie de placa Arduino în sine, o placă de breadboard, un receptor de semnal IR și jumperi. Există un număr mare de receptoare diferite, dar este mai bine să utilizați TSOP312 sau altele potrivite pentru Arduino. Datele de la telecomandă la receptor pot fi transmise prin protocolul RC5 sau NEC.

Pentru a determina ce picior îi aparține, trebuie să vă uitați la senzorul din partea receptorului. Apoi pe receptor contactul central este împământat, în stânga este ieșirea către microcontroler, în dreapta este puterea.

Pentru comoditate, puteți utiliza module gata făcute receptor IR.

Conectarea receptorului IR la Arduino

Ieșirile receptorului IR sunt conectate la Arduino la GND, 5V și porturile de intrare digitală. Diagrama de conectare a senzorului la al 11-lea pin digital este prezentată mai jos.

Iată cum arată circuitul cu modulul receptor infraroșu:


Biblioteci pentru lucrul cu IR

Pentru a lucra cu dispozitive IR, puteți utiliza biblioteca IRremote, care simplifică construcția sistemelor de control. Puteți descărca biblioteca. După descărcare, copiați fișierele în folderul \arduino\libraries. Pentru a vă conecta la schița bibliotecii, trebuie să adăugați fișierul antet #include .

Pentru a citi informații, utilizați exemplul IRrecvDumpV2 din bibliotecă. Dacă telecomanda există deja în lista celor recunoscute, atunci scanarea nu este necesară. Pentru a citi codurile, trebuie să lansați ARduino IDE și să deschideți exemplul IRrecvDemo de la IRremote.

Există o a doua bibliotecă pentru lucrul cu semnale IR - aceasta este IRLib. Funcționalitatea este similară cu cea anterioară. În comparație cu IRremote, IRLib are un exemplu pentru determinarea frecvenței unui senzor IR. Dar prima bibliotecă este mai simplă și mai convenabil de utilizat.

După încărcarea bibliotecii, puteți începe să citiți semnalele primite. Următorul cod este folosit pentru aceasta.

Operatorul decode_results este necesar pentru a atribui rezultatele numelui variabilei semnalului primit.

În cod trebuie să rescrieți „HEX” în „DEC”.

Apoi, după încărcarea programului, trebuie să deschideți monitorul serial și să apăsați butoanele de pe telecomandă. va apărea pe ecran diverse coduri. Trebuie să faceți o notă care să indice ce buton îi corespunde codul primit. Este mai convenabil să înregistrați datele obținute într-un tabel. Acest cod poate fi apoi scris în program, astfel încât dispozitivul să poată fi controlat. Codurile sunt scrise în memoria plăcii Arduino EEPROM însăși, ceea ce este foarte convenabil, deoarece nu trebuie să programați butoanele de fiecare dată când porniți telecomanda.

Se întâmplă ca la încărcarea unui program să fie afișată eroarea „TDK2 nu a fost declarat în domeniul său”. Pentru a o remedia, trebuie să mergeți la Explorer, să mergeți la folderul în care este instalată aplicația Arduino IDEși ștergeți fișierele IRremoteTools.cpp și IRremoteTools.h. După aceasta, trebuie să reîncărcați programul pe microcontroler.

Concluzie

Utilizarea telecomenzii Arduino ir face viața mai ușoară pentru utilizator. Poate acționa ca o telecomandă telefon mobil, tabletă sau computer - tot ce aveți nevoie este software special. Folosind Arduino, puteți centraliza tot controlul. Cu un singur buton de pe telecomandă puteți efectua mai multe acțiuni simultan - de exemplu, porniți televizorul și Blu-Ray în același timp.

Fiecare casă are o telecomandă TV, sau o altă telecomandă. Acest dispozitiv vă permite să controlați orice dispozitiv de la distanță, ceea ce este foarte convenabil. Nu este nevoie să irosești calorii prețioase și să faci mișcări inutile. Dacă aveți un dispozitiv și doriți să-l controlați de la distanță, atunci puteți controla acel dispozitiv de la distanță. Dacă doriți, puteți face o telecomandă cu propriile mâini, dar nu este nevoie de asta și asta este o altă poveste. De ce ai putea avea nevoie de telecomandă?! - e simplu:

Lenea este o calitate care ne obligă să facem eforturi mari pentru a reduce costurile totale ale energiei.

Pentru prima dată, telecomanda în acțiune a fost arătată lumii de către inventatorul Nikola Tesla, în 1898, la o expoziție din Madison Square Garden, el a prezentat o barcă radiocontrolată numită „teleautomat”. Astăzi, această tehnologie s-a răspândit, doar mai mult moduri diferite transmiterea comenzilor (canal de comunicare).

Principalele canale de comunicare includ:

  • Canal radio
  • cu ultrasunete
  • Infraroşu

În acest articol vom vorbi despre controlul dispozitivului cu o telecomandă cu infraroșu. radiatii infrarosii - radiatii electromagnetice, ocupând regiunea spectrală dintre capătul roșu al luminii vizibile și radiația cu microunde. Radiația infraroșie nu este vizibilă pentru ochiul uman, dar poate fi văzută cu o cameră sau o cameră video. Acesta este modul în care verifică adesea funcționalitatea telecomenzii televizorului acasă.

Cât timp în urmă job vechi Am luat telecomanda și „vizorul” (receptor IR) de la sistemul de securitate care se stingea, a stat mult timp inactiv și, în sfârșit, m-am apucat să-l verific în funcționare.

După ce am dezasamblat acest receptor, am văzut un truc în acest „ochi” 4 receptoare IR au fost lipite împreună. Acest lucru a fost făcut pentru a recepționa unde IR din patru laturi. Și este convenabil, nu trebuie să vă limitați la un anumit unghi de recepție.

De asemenea, am schițat un circuit similar cu patru receptoare, în caz că am nevoie de el. Am folosit receptoare IR TSOP1836, dar puteți folosi altele. Pentru a asigura recepția la 360 de grade, trebuie să selectați receptoare IR adecvate (cu un unghi larg de recepție) și să le plasați cât mai aproape unul de celălalt. Nu am observat probleme de recepție la receptoarele mele. L-am adăugat și în atașament placa de circuit imprimatși aranjarea elementelor.

Pentru a procesa comenzi pe care le voi folosi în mod natural arduino uno, poate fi folosit ca receptor IR
TSOP34836 (are o gamă mare de recepție, dar este mai scump) sau TL1838. Puteți lua orice telecomandă IR, chiar și de la un televizor. Ei bine, dacă aveți nevoie de propria telecomandă, puteți cumpăra un kit pentru arduino.

Principiul de funcționare:
Când apăsați un buton de pe telecomandă, aceasta trimite codul butonului în lumină infraroșie, după care receptorul primește acest cod de buton și îl trimite la actuator, care, în funcție de buton, va efectua o anumită acțiune.

De asemenea, puteți utiliza unde IR pentru a transmite informații către distanta scurta. Pentru a vă transmite comenzile sau informațiile, puteți utiliza un al doilea arduino cu un transmițător IR. Dar viteza unei astfel de transmisii este foarte lentă. Avantajele canalului infraroșu includ insensibilitatea la interferența electromagnetică.

Pentru a primi semnale IR arduino, vom conecta receptorul IR după cum urmează:

Vă rugăm să rețineți că locația picioarelor receptorului poate varia.


Receptorul are 3 picioare, sursă de alimentare „+” și „-” (în principal tensiune 3,3-5V) iar piciorul de date este cel care transmite informații către dispozitiv (în cazul nostru, arduino). Tensiunea de alimentare pentru TSOP34836 este de 2,7-5,5 volți. Voi folosi 5 volți de la ieșirea standard a arduino.

Ei bine, desigur că aveți nevoie de firmware pentru arduino. Algoritmul de operare va fi următorul: când faceți clic pe butonul de sus Telecomanda arduino pornește releul și, când este apăsată din nou, îl oprește. Folosind acest releu, puteți alimenta, de exemplu, lumina de fundal, dar nu este necesar să programați o apăsare de buton pe releu, puteți scoate o comandă către computer sau să efectuați o anumită operație în arduino, etc.
Pentru a simplifica munca, vom folosi o bibliotecă gata făcută. Cod firmware:

#include int RECEIVE_PIN = 11;//contact receptor int RELAY_PIN = 3;//contact releu IRrecv irrecv(RECEIVE_PIN);//atribuiți pinul receptorului rezultate decode_results;//date primite

void setup() (
Serial.begin(9600);
irrecv.enableIRIn(); // pornește receptorul
pinMode(RELAY_PIN, OUTPUT); // configurează releul pentru ieșire
digitalWrite(RELAY_PIN,HIGH); //setează valoarea ridicată
}

void loop() (
if (irrecv.decode(&rezultate)) (//dacă sunt primite date
Serial.print("0x");
Serial.println(results.value, HEX);//trimite mesajul primit la terminal
if ((results.value == 0x8FF40BF) ||(results.value == 0xD72040BF)) digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));//dacă codul butonului este 0x8FF40BF sau 0xD72040BF pentru a schimba starea opusă a releului
delay(200); // întârziere de la dubla declanșare
irrecv.resume();// Obține următoarea valoare
}
}

Lasă-mă să explic puțin cu schița:



dacă ((results.value == 0x8FF40BF) ||(results.value == 0xD72040BF))

Valoarea rezultată este comparată cu „0x8FF40BF” și „0xD72040BF” - acestea sunt codurile butoanelor din sistem hexazecimal calcul. Două semnificații doar pentru că folosesc două telecomenzi cu coduri unice.



digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));

Procedura standard înregistrare digitală PIN, cu excepția „!digitalRead(RELAY_PIN)”. Semnează „!” denotă inversare, în cazul nostru inversarea stării ieșirii digitale „RELAY_PIN”.



Serial.print("0x");
Serial.println(results.value, HEX);//trimite mesajul primit la terminal

Aceste linii transmit toate codurile primite către terminal. ÎN program de lucru acest lucru este inutil, dar trebuie să aflați codul necesar un buton sau altul. Adică, mai întâi încărcăm schița pe Arduino, mergem la terminal și făcând clic pe buton vom obține codul dorit.


Există, de asemenea, câteva exemple diferite în biblioteca IRremote care pot fi utile.


În atașamentul articolului:


  • schiță pentru arduino

  • PCB pentru 4 senzori

Există multe articole pe Internet despre cum să-ți faci propria telecomandă a televizorului folosind Arduino, dar aveam nevoie de o telecomandă universală pentru a-mi controla televizorul și playerul media. Principalul avantaj al meu telecomanda universala Problema este că butoanele din aplicația pentru telefon Android au dublu scop, dar uită-te la videoclip.



Telecomanda este foarte convenabilă, deoarece aproape aceleași butoane de pe ecran sunt folosite pentru a controla televizorul și playerul. O diferență este că „ AV„în modul de control al televizorului se schimbă într-un buton” " (opriți) când treceți la modul de control al playerului. Imaginile arată două moduri, în stânga este modul de control al televizorului, în dreapta este modul de control al playerului.

Ei bine, acum vă voi spune puțin despre crearea unei astfel de telecomenzi. Pentru aparat am folosit telecomanda pentru ERGO TV si telecomanda pentru media player-ul DUNE HD TV101W.

Pentru a primi date de la telecomenzi, am folosit un senzor infraroșu TSOP1138 (analog cu TSOP4838) la o frecvență de funcționare de 38 kHz și l-am conectat la placa Arduino conform schemei:

Această schiță nu va fi necesară pentru a determina codificarea transmisiei de date și pentru a citi codul butoanelor telecomenzii.

În schița din linia int RECV_PIN = 11; indicați numărul nostru de pin 4

După încărcarea schiței, deschideți „monitorul portului” și, apăsând butoanele telecomenzii, priviți datele primite.

Imaginea prezintă un exemplu de scanare a butonului de pornire de la telecomanda televizorului și telecomanda playerului. Acum creăm un tabel pentru codurile butoanelor.

L-am luat ca in poza de mai sus. Sub inscriptie televizor codurile butoanelor telecomenzii TV; sub inscriptie Player- coduri de la telecomanda playerului media.

Acum deconectam receptorul de semnal infraroșu de la placa Arduino și îl conectăm la acesta modul Bluetooth HC-05 și lumină infraroșie diodă conform circuitului din fotografie.

După aceea, trecem direct la schiță.

Schiţa

#include 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) ( // codurile butoanelor pentru telecomanda televizorului if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); delay(40) ) if (x == 98) ( irsend.sendNEC(0x807FA857, 32); delay(40); ) if (x == 99) ( irsend.sendNEC(0x807F708F, 32); delay(40); ) if (x == 100) ( irsend.sendNEC(0x807FF00F, 32); delay(40); ) if (x == 101) ( irsend.sendNEC(0x807F30CF, 32); delay(40); ) if (x == 102) ( irsend.sendNEC(0x807FB04F, 32); delay(40); ) if (x == 103) ( irsend.sendNEC(0x807F9867, 32); delay(40); ) if (x == 104) ( irsend .sendNEC(0x807F58A7, 32 delay(40) if (x == ); delay(40); 107) ( irsend.sendNEC(0x807F48B7, 32); delay(40); ) if (x == 108) ( irsend.sendNEC(0x807FB847, 32); delay(40); if (x == 109) ( irsend. sendNEC(0x807F6897, 32);


întârziere (40);

) ) if (y == 2) ( //codurile butoanelor telecomenzii playerului media if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); delay(40); ) if (x == 98) ( irsend. sendNEC(0xFDE01F, 32); delay(40); if (x == 99) ( irsend.sendNEC(0xFD18E7, 32); delay(40); ) if (x == 100) ( irsend.sendNEC( 0xFDE817, 32); delay(40); if (x == 101) ( irsend.sendNEC(0xFDA857, 32); delay(40); ) if (x == 102) ( irsend.sendNEC(0xFD6897, 32) ; delay (40); if (x == 103) ( irsend.sendNEC(0xFDA857, 32); delay(40); ) if (x == 104) ( irsend.sendNEC(0xFD6897, 32); delay(40); ) if (x == 105) ( irsend.sendNEC(0xFDE817, 32); delay(40); ) if (x == 106) ( irsend.sendNEC(0xFD18E7, 32); delay(40); ) if (x == 107) ( irsend.sendNEC(0xFD9867, 32); delay(40); ) if (x == 108) ( irsend.sendNEC(0xFD28D7, 32); delay(40); ) if (x == 109) ( irsend.sendNEC(0xFD20DF, 32); întârziere (40); ) ) ) )
În schiță va trebui să editați codurile butoanelor, și anume în rândurile:

Dacă (x == 97) ( irsend.sendNEC(0x807F08F7, 32); delay(40);
Schimbați valoarea 807F08F7 la:

Dacă (y == 1) ( //codurile butoanelor pentru telecomanda televizorului if (x == 97) ( irsend.sendNEC(0x12345678, 32); delay(40); ) Unde 12345678 este codul butonului dvs. După editarea schiței folosind codurile butoanelor, încărcați schița în

Placa Arduino Pult la telefon.

La pornire vom avea un ecran cu roșu pictograma bluetoothîn colțul din dreapta jos, ceea ce indică faptul că nu suntem conectați la dispozitivul nostru.

După aceea, faceți clic pe această pictogramă. Ar trebui să vedem o fereastră cu o listă cu toate cele disponibile dispozitive bluetooth, unde ne selectăm dispozitivul pentru a ne conecta.

Acum ne-am întors din nou ecranul de startși deja putem controla televizorul:

Pentru a trece la modul de control trebuie să apăsăm butonul etichetat "Player". După cum am spus mai devreme, butonul nostru etichetat „AV” se va schimba într-un buton „ ":

Pentru a vă deconecta de la dispozitivul nostru, țineți apăsat butonul „Power” timp de câteva secunde.

Ei bine, câteva fotografii cu dispozitivul meu terminat.

A ieșit destul de bine, se pare. Astept comentarii la articol.

De obicei, telecomenzile TV, cutie de cablu, player Blu-ray iar sistemele stereo nu numai că ocupă spațiu, dar fac și dificilă gestionarea tuturor acestor dispozitive. Puteți lua în considerare achiziționarea unei telecomenzi universale, dar acestea sunt de obicei scumpe și uneori nu oferă nivelul de control sau interfața de care aveți nevoie. Acest proiect creează un dispozitiv care poate trimite și primi coduri de control de la distanță de pe o pagină web standard. Puteți programa funcționalitatea necesară de pe orice smartphone sau computer!

Acest proiect folosește Modul Arduino Yún, care este special conceput pentru a gestiona dispozitivele care acceptă conexiune la rețea. Yún are două procesoare, dintre care primul rulează sistemul de operare sistem Linuxși se poate conecta la cablu sau rețea fără fir. Al doilea procesor îndeplinește aceleași funcții ca și procesorul din modulul Arduino Leonardo. Prin urmare, oferă o bună compatibilitate cu bibliotecile și hardware-ul Arduino.

Acest proiect folosește un LED infraroșu și un receptor pentru a trimite și a primi semnale de telecomandă. Lumina infraroșie este invizibilă pentru ochiul uman, dar este ușor detectată de senzorii electronici. Pentru o transmisie mai fiabilă a semnalului, dispozitivele folosesc lumină infraroșie modulată, ceea ce elimină posibilitatea de a primi semnale false. Receptorul infrarosu este dispozitiv mic, care primește semnale infraroșu modulate la o anumită frecvență, de obicei 38 kHz. Folosind acest receptor, modulul Arduino determină biții de informații care sunt trimise de la panoul de control.

Trimiterea comenzilor către dvs centru multimedia se va realiza printr-o interfață web simplă care rulează local pe modulul Yún și este accesibilă pentru majoritatea browserelor web moderne. Site-ul web facilitează gestionarea dispozitivului cu infraroșu și chiar vă permite să procesați mai multe comenzi în același timp. De exemplu, apăsarea butonului „Urmăriți filmul” poate trimite un semnal pentru a porni televizorul, playerul Blu-ray și pentru a le conecta la intrarea televizorului.

Acest proiect necesită o anumită experiență în rularea schițelor Arduino și utilizarea instrumentelor din linia de comandă. Componente electronice proiectul poate fi instalat pe un breadboard.

Pasul #1: Conectarea componentelor

  • Conectați LED-ul cu infraroșu la modulul Yún prin trecerea unui fir de la anodul LED (plumb lung) la ieșire digitală 13 module Yún.
  • Folosind un rezistor de 100 ohmi, conectați catodul LED (plumb mai scurt) la pinul de masă al senzorului infraroșu ( producție medie senzor).
  • Conectați pinul de detectare al senzorului infraroșu (pinul din stânga când este privit din partea din față a senzorului) la pinul digital 11 al modulului Yún.
  • Conectați pinul de masă al senzorului infraroșu (pinul mijlociu) la pinul de masă al modulului Yún.
  • În cele din urmă, conectați cablul de alimentare al senzorului (pinul extrem din dreapta când este privit din partea din față a senzorului) la pinul de 5 volți al modulului Yún.

Pasul 2: Instalați dependențe de software

  • Când este introdus Card microSDîn modulul Yún, porniți Yún prin conectare USB Micro cablu B la modulul Yún și adaptor USB nutriţie.
  • Asigurați-vă că Yún este configurat și conectat la rețeaua dvs. wireless. Configurarea modulului Yún este indicată pe această pagină.
  • Conectați-vă la linie de comandă Yún folosind SSH. Acest proces descrise pe această pagină.
  • Odată conectat la linia de comandă, veți vedea versiunea de firmware. Acest proiect testat cu versiunea BusyBox v1.19.4 din 2014-04-10 și mai sus. Daca folosesti mai mult versiunea veche, apoi urmați următoarele instrucțiuni.
  • La promptul de comandă, rulați următoarele comenzi pentru a actualiza managerul de pachete:
actualizare opkg opkg install distribuie && opkg instalează python-openssl && opkg instalează python-expat && easy_install pip

Acest proces durează câteva minute. Este posibil să vedeți câteva mesaje de avertizare, dar le puteți ignora.

  • Creați un director pe cardul SD pentru a salva pachetele Python:
mkdir /mnt/sda1/python-packages
  • Instalați cadrul Flask Python:
pip install --target /mnt/sda1/python-packages flask

Este posibil să vedeți câteva mesaje de avertizare, dar le puteți ignora.

  • Actualizați calea de căutare pentru fișierele pachetului Python:
echo „export PYTHONPATH=/mnt/sda1/python-packages” >> /etc/profile
  • Creați directoare în care Arduino IDE va ​​încărca fișiere server web:
mkdir /mnt/sda1/Arduino mkdir /mnt/sda1/arduino/www
  • Reporniți Arduino Yún pentru a actualiza calea de căutare a fișierelor Python.

  • Descărcați biblioteca IR. (Arduino IRremote, bibliotecă creată de Ken Shirriff.)
    Dezarhivați arhiva, redenumiți folderul cu Arduino_ IRremotă- maestru pe Arduino_ IRremotăși importați folderul Arduino_IRremote ca bibliotecă în Arduino IDE. Informații detaliate indicat
  • Încărcați schița inteligentă Telecomanda Arduino de la arhiva zip de aici.
    Dezarhivați arhiva și trageți folderul SmartRemoteControlîn folderul cu Schiță Arduino. Deschideți schița în Arduino IDE.
  • Compilați schița și încărcați-o în modulul Yún prin WiFi selectând opțiunea corespunzătoare din lista de porturi Arduino Yún. Asigurați-vă că încărcați schița prin WiFi, astfel încât scripturile python necesare să fie copiate în modulul Yún! După descărcarea schiței, deschideți Serial Monitor în Mediul Arduino IDE (acest lucru poate dura câteva minute).
  • Îndreptați telecomanda spre senzorul infraroșu și apăsați câteva butoane de pe telecomandă. Ar trebui să vedeți codul pe monitorul serial. Dacă codul nu este afișat, verificați conexiunile circuitului senzorului.

Pasul #4: Configurați codurile de control de la distanță

  • Acum puteți configura activități și coduri de control de la distanță asociindu-le cu fișier XML configuratii. Folosind editor de text, deschideți fișierul activități. xmlîntr-un subdirector www schiță foldere pe computer. (Din Arduino IDE, faceți clic pe meniul Sketch și selectați „Show Sketch Folder”).
  • Luați în considerare formatul operațiunilor exemplu din fișier. Fiecare bloc de operare definește un nume de atribut care va apărea ca un buton pe pagina web a telecomenzii. În cadrul fiecărei operații, blocul de cod conține o secvență de coduri în infraroșu care trebuie executate. În exemplu, comanda Sony A90 (pornire/oprire) este mai întâi executată pentru a porni televizorul, apoi comanda Panasonic (pornire/oprire) pentru a porni playerul Blu-ray. Fiecare cod are un parametru șir care este ieșirea directă de date a codului de la distanță detectat din schița Arduino.
  • Adăugați comenzile în fișier prin copierea exemplului și modificarea numelor și codurilor. Când telecomanda este îndreptată către senzorul infraroșu, apăsați butoanele și notați cu atenție secvența specifică a codului infraroșu. Copiați secvența în configurația opcode.
  • De îndată ce primești fișierul necesar configurație, salvați fișierul și încărcați din nou schița în modulul Yún prin WiFi. Pentru a actualiza fișierul de configurare, editați fișierul și încărcați schița prin WiFi folosind IDE-ul Arduino.

Pasul #5: Pornirea serverului cu o interfață web

  • Pentru a porni serverul, conectați modulul Yún prin SSH. Pentru a porni serverul, executați următoarea comandă:
python /mnt/sda1/arduino/www/SmartRemoteControl/server.py
  • Când serverul pornește cu succes, veți vedea mesajul:
* Rulează pe http://0.0.0.0:5000/ * Repornește cu reloader
  • Dacă vedeți o eroare, verificați toate dependențele instalate în pașii anteriori.
  • În browserul dvs. web, introduceți http://arduino.local:5000/. Dacă browserul nu acceptă adresa URL mDNS (cum ar fi Windows, Android și unele distribuții Linux) introduceți http:// arduino_ ip_ adresa:5000/, unde arduino_ ip_ adresa este adresa IP a lui Arduino Yún. Adresa IP este situată în partea de jos a IDE-ului Arduino atunci când conectați Yún (Figura 2).
  • Odată ce pagina se încarcă, veți vedea o listă cu acțiunile butoanelor configurate. Dacă vedeți o eroare, verificați dacă dependențele sunt instalate corect, schița este încărcată și dacă serverul rulează fără erori.
  • Pentru a opri serverul, apăsați Ctrl-C în fereastra de comandă în care a fost pornit serverul.

Pasul #6: Utilizarea interfeței web

  • A folosi telecomandă inteligentăîndreptați LED-ul spre dispozitive electroniceși apăsați unul dintre butoanele active. Dacă dispozitivul necesar nu pornește, încercați să mutați LED-ul mai aproape de dispozitivele necesare. Gama de LED-uri este mică, aproximativ 6 picioare. Este necesar să adăugați un tranzistor pentru a crește raza de acțiune a LED-ului. Sunt furnizate informații detaliate Aici.
  • De asemenea, puteți testa codurile în infraroșu deschizând Yún Serial Monitor în Arduino IDE și trimițând codul în infraroșu ca comandă. De exemplu, trimiterea codului „SONY: C A90” (fără ghilimele) va face ca hardware-ul să trimită o comandă către pornind Sony A90. ("C" reprezintă bitul de lungime a comenzii, 12, convertit în hexazecimal).
  • Pentru pornire automată server la încărcare, editați fișierul / etc/ rc. localîn modulul Yún (folosind editorul nano sau vi) și adăugați următoarea linie înainte cu linia „ieșire 0” la sfârșit:
PYTHONPATH=/mnt/sda1/python-packages python /mnt/sda1/arduino/www/SmartRemoteControl/server.py
  • Pentru recunoașterea vorbirii, lansați browserul Google Chrome. Faceți clic pe butonul „Vorbiți” și browser Chrome va cere permisiunea de a folosi microfonul. Apoi rostiți numele operației active și așteptați până când este recunoscută. De exemplu, pentru a efectua operația „Filme”, apăsați butonul „Vorbiți” și rostiți cuvântul „Filme” în microfon. Expresii precum „Play Movies” sau „Run Movies” nu sunt acceptate - este recunoscut doar numele clar al operațiunii active.

Telecomanda cu infraroșu este una dintre cele mai multe moduri simple interactiunea cu dispozitive electronice. Deci, în aproape fiecare casă există mai multe astfel de dispozitive: televizor, centru muzical, video player, aer conditionat. Dar cel mai mult aplicație interesantă telecomandă cu infraroșu - telecomandă a robotului. De fapt, în această lecție vom încerca să implementăm această metodă de control folosind popularul controler Arduino Uno.

1. Telecomanda IR

Ce este nevoie pentru a învăța un robot să se supună unei telecomenzi cu infraroșu (IR)? În primul rând, avem nevoie de telecomanda în sine. Puteți folosi o telecomandă TV obișnuită sau puteți achiziționa o telecomandă în miniatură pentru radioul auto. Aceste tipuri de telecomenzi sunt adesea folosite pentru a controla roboții.

Această telecomandă are 10 butoane digitale și 11 butoane pentru manipularea muzicii: volum, derulare înapoi, redare, oprire etc. Mai mult decât suficient pentru scopurile noastre.

2. Senzor IR

În al doilea rând, pentru a primi un semnal de la telecomandă avem nevoie de un senzor IR special. În general, putem detecta radiația infraroșu cu o fotodiodă/fototranzistor convențional, dar spre deosebire de acesta, senzorul nostru IR percepe semnalul infraroșu doar la o frecvență de 38 kHz (uneori 40 kHz). Această proprietate permite senzorului să ignore o mulțime de zgomote luminoase străine de la aprinderea lămpilor și a soarelui.

Pentru acest tutorial vom folosi popularul senzor IR VS1838B, care are următoarele caracteristici:

  • frecvență purtătoare: 38 kHz;
  • tensiune de alimentare: 2,7 - 5,5 V;
  • consum de curent: 50 µA.

Pot fi utilizați și alți senzori, de exemplu: TSOP4838, TSOP1736, SFH506.

3. Conexiune

Senzorul are trei fire (trei picioare). Dacă vă uitați la senzorul din partea receptorului de semnal IR, așa cum se arată în figură,

  • apoi în stânga va exista o ieșire către controler,
  • în centru - contact negativ de putere (masă),
  • iar în dreapta - contactul de putere pozitivă (2,7 - 5,5V).

Schema schematică a conexiunii

Aspectul aspectului

4. Program

După conectarea senzorului IR, vom scrie un program pentru Arduino Uno. Pentru aceasta vom folosi bibliotecă standard IRremotă, care este conceput special pentru a simplifica munca de recepție și transmitere a semnalelor IR. Folosind această bibliotecă vom accepta comenzi de la telecomandă și, pentru început, pur și simplu le vom afișa în fereastra monitorului port serial. Acest program ne va fi util pentru a înțelege ce cod oferă fiecare buton.

#include "IRremote.h" IRrecv irrecv(2); // indică pinul la care este conectat receptorul rezultate decode_results; void setup() ( Serial.begin(9600); // setați viteza Port COM irrecv.enableIRIn(); // începeți să primiți ) void loop() ( if (irrecv.decode(&results)) ( // dacă datele au ajuns Serial.println(results.value, HEX); // imprimați datele irrecv.resume(); // accepta urmatoarea echipa))

Încărcați programul pe Arduino. După aceea, încercăm să primim comenzi de la telecomandă. Deschideți monitorul portului serial (Ctrl+Shift+M), ridicați telecomanda și îndreptați-o către senzor. Apăsând diferite butoane, observăm codurile corespunzătoare acestor butoane în fereastra monitorului.

Problemă la încărcarea programului

În unele cazuri, atunci când încercați să încărcați un program în controler, poate apărea o eroare:

TDK2 nu a fost declarat în domeniul său de aplicare

Pentru a o remedia, ștergeți doar două fișiere din folderul bibliotecă. Să mergem la explorator. Accesați folderul în care este instalată aplicația Arduino IDE (cel mai probabil „C:\Program Files (x86)\Arduino”). Apoi la folderul bibliotecii:

…\Arduino\libraries\RobotIRremote

Și ștergeți fișierele: IRremoteTools.cppŞi IRremoteTools.h. Apoi, repornim Arduino IDE și încercăm din nou să încărcăm programul pe controler.

5. Controlați LED-ul utilizând telecomanda IR

Acum că știm ce coduri corespund butoanelor telecomenzii, încercăm să programăm controlerul să pornească și să stingă LED-ul atunci când sunt apăsate butoanele de volum. Pentru a face acest lucru avem nevoie de coduri (pot varia în funcție de telecomandă):

  • FFA857 - creșterea volumului;
  • FFE01F - scăderea volumului.

Ca LED, folosim LED-ul încorporat pe pinul nr. 13, astfel încât schema de conectare va rămâne aceeași. Deci, programul:

#include "IRremote.h" IRrecv irrecv(2); // indică pinul la care este conectat receptorul rezultate decode_results; void setup() ( irrecv.enableIRIn(); // începeți să primiți) void loop() ( if (irrecv.decode(&rezultatele)) ( // dacă datele sosesc comutați (results.value) ( ​​​​cazul 0xFFA857: digitalWrite( 13, HIGH cas 0xFFE01F: digitalWrite(13, LOW);

Îl încărcăm în Arduino și îl testăm. Clic vol+— LED-ul se aprinde. Clic vol-- iese. Acum, știind cum funcționează totul, puteți controla motoarele roboților sau alte dispozitive microelectronice de casă în loc de un LED!

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva