Arduino - praca z sygnałami IR - odbiornik TSOP22 (rejestracja sygnału IR). Arduino Uno. Podłączenie odbiornika IR Podłączenie pilota do Arduino

Wysyła pakiet zakodowanych i zmodulowanych danych do diody IR LED, a po przytrzymaniu przycisku powtarza również pakiety.

  • Niewidzialne światło podczerwone z diody IR LED trafia do modułu odbiornika IR Trima, gdzie zostaje zamienione na demodulowane impulsy elektryczne.
  • Biblioteka iarduino_IR w sposób ciągły odczytuje i dekoduje impulsy z odbiornika podczerwieni (przy użyciu drugiego licznika sprzętowego Arduino)
  • W kodzie pętli porównujemy dane zdekodowane przez bibliotekę z danymi przypisanymi do urządzenia (lampy) i jeżeli się zgadzają to zmieniamy stan („1”/„0”) na wejściu modułu Trema Solid State Przekaźnik zatem włącza lub wyłącza urządzenie (lampę).
  • Urządzenie może się przydać, jeśli nieużywane przyciski pilota telewizora (np. kolorowe przyciski teletekstu) przypiszesz do sterowania oświetleniem w pomieszczeniu.

    Zamiast żarówek można podłączyć dowolne urządzenie sieciowe ~220 V o poborze prądu do 2 A.

    Będziemy potrzebować:

    • Pilot na podczerwień x 1szt (wystarczy dowolny pilot na podczerwień do telewizora)
    • Urządzenia (lampy) którymi będziemy sterować x 3 szt.

    Aby zaimplementować projekt musimy zainstalować bibliotekę:

    • Biblioteka iarduino_IR do pracy z transceiverami IR
      WAŻNY: biblioteka korzysta z drugiego timera sprzętowego,
      NIE WYSYŁAJ SYGNAŁÓW PWM NA WYJŚCIE 3 LUB 11!

    Jak zainstalować biblioteki, możesz dowiedzieć się na stronie Wiki - Instalowanie bibliotek w Arduino IDE.

    Wideo:

    Diagram połączeń:

    Układ ten wykorzystuje wyłącznie moduły cyfrowe, można je podłączyć do dowolnych (zarówno cyfrowych, jak i analogowych) pinów Arduino. Przykładowo podłączyliśmy wszystkie moduły do ​​wyjść analogowych. Nie wszyscy wiedzą, że piny analogowe Arduino mogą działać jak zwykłe piny cyfrowe, umożliwiając odbieranie (z odbiornika podczerwieni) i przesyłanie (do przekaźników półprzewodnikowych) sygnałów cyfrowych w postaci logicznych „0” i „1”.

    Jeśli będziesz podłączał urządzenia do innych pinów, to ich numery należy podać w drugiej (deklaracja obiektu IR) i trzeciej (deklaracja tablicy pinRelay) szkicu. Kod programu jest napisany w taki sposób, aby można było podłączyć tyle przekaźników, ile jest wolnych pinów w Twoim Arduino, po prostu poprzez wypisanie numerów pinów w trzeciej linii szkicu (deklaracja tablicy pinRelay).

    Algorytm pracy:

    • Na starcie szkic przypisuje kod przycisku pilota na podczerwień kolejno do każdego przekaźnika półprzewodnikowego. Najpierw miga dioda LED i obwód przekaźnika półprzewodnikowego jest zamknięty, którego wyjście jest wskazywane jako pierwsze. Jeżeli naciśniesz dowolny przycisk na pilocie na podczerwień, kod tego przycisku zostanie przypisany do tego przekaźnika, następny zacznie migać, i tak dalej, aż do momentu, gdy wszystkie przekaźniki zostaną przypisane do przycisków na pilocie na podczerwień.
    • Po spotkaniuFunkcje przycisków, wszystkie przekaźniki są wyłączone. Naciśnięcie przycisku pilota na podczerwień powoduje włączenie przekaźnika, do którego przypisany jest kod tego przycisku. Ponowne naciśnięcie wskazanego przycisku powoduje wyłączenie przekaźnika. Urządzenie nie będzie reagować na naciśnięcie przycisków, których kod nie został przypisany do żadnego przekaźnika.
    • Jeśli Jeśli nie chcesz przypisywać kodów do przycisków przy każdym uruchomieniu, wskaż je jawnie podczas deklarowania tablicy varRelay i usuń pętle for i while z kodu instalacyjnego.
    • Znajdź kod dla każdego przycisku możesz napisać następującą linię: if(IR.check())(Serial.println(IR.data);)

    Kod programu:

    #włączać // podłącz bibliotekę do pracy z odbiornikiem IR iarduino_IR_RX IR(A5); // zadeklaruj obiekt IR do współpracy z odbiornikiem IR (wskazując dowolny pin, do którego podłączony jest odbiornik IR) const uint8_t pinRelay = (A1,A2,A3); // zadeklaruj tablicę wskazującą numery dowolnych pinów (cyfrowych lub analogowych), do których podłączone są przekaźniki półprzewodnikowe const uint8_t allRelay = sizeof(pinRelay); // zadeklaruj stałą, przekazując jej liczbę elementów w tablicy pinRelay (liczba przekaźników) uint32_t varRelay; // zadeklaruj tablicę z kodami (poleceniami) odbiornika podczerwieni, w tym przekaźnikami bool modRelay; // zadeklaruj tablicę ze stanami przekaźnika uint8_t setRelay; // zadeklaruj zmienną zawierającą liczbę przekaźników, dla których zapisana jest komenda z odbiornika IR void setup())( IR.begin(); // zainicjuj pracę z transiwerem IR for(uint8_t i=0; i Moduł odbiornika podczerwieni w połączeniu z pilotem na podczerwień pozwoli w łatwy sposób wdrożyć zdalne sterowanie płytką Arduino.

    To nic innego jak odbiornik IR VS1838B z zamontowaną na płytce wiązką zalecaną przez producenta.

    Do pracy z tym modułem po wyjęciu z pudełka potrzebny jest pilot o częstotliwości 38 kHz.

    Zaletą tej płytki jest złącze push-in, które pozwala na wymianę odbiornika podczerwieni na inny pracujący na częstotliwości wymaganej dla Twojego projektu, bez konieczności lutowania.

    Główne parametry techniczne:

    Napięcie zasilania: 2,7 - 5,5 V

    Częstotliwość modulacji: 38 kHz

    Zakres temperatur: - 20 ... + 80°C

    Interfejs: cyfrowy

    Łączenie z Arduino

    Moduł wyposażony jest w trójpinowe złącze 2,54mm

    : łączy się z pinem GND

    : łączy się z wyjściem +5V

    : łączy się z pinem cyfrowym (w przykładzie D2)

    Przykład pracy w środowisku Arduino

    Aby pracować z tym modułem należy zainstalować bibliotekę IRRemote

    Pobierz, rozpakuj i umieść w folderze bibliotek w folderze Arduino. Jeśli w momencie dodawania biblioteki środowisko Arduino IDE było otwarte, zrestartuj środowisko.

    Odczyt przycisków pilota

    Aby odczytać odczyty pilota, wypełnij poniższy szkic. Wyśle kodowanie wciśniętych przycisków do portu.

    Jako przykład użyjemy pilota, jak na zdjęciu, ponieważ Ten typ pilota znajduje się w zestawie

    O różnicach w logice działania różnych pilotów przeczytacie w oryginalnym artykule członka naszej społeczności pod pseudonimem

    Przykładowy kod:

    #włączać int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); //Utwórz obiekt do odbioru sygnału z określonego portu wyniki decode_results; //Zmienna przechowująca wynik próżnia organizować coś () { Seryjny // Zacznij odbierać) próżnia pętla() ( if (irrecv.decode(&results)) //Po otrzymaniu sygnału... { Seryjny.println(wartość.wyników); //...wyprowadź jego wartość do portu szeregowego recv.resume(); ) )

    Na monitorze portu powinieneś zobaczyć następujące informacje:

    Przytrzymując każdy przycisk przez niemal sekundę, uzyskujemy około 10 kodów. Pierwszym z nich jest kod przycisku. A potem zaczyna pojawiać się standardowy kod, który informuje, że przycisk się zawiesił.

    Sterowanie płytą Arduino za pomocą pilota

    Sprawmy, aby dioda LED na płytce Arduino (D13) zapaliła się, gdy zakodowany zostanie pierwszy przycisk i zgasła, gdy zakodowany zostanie drugi przycisk.

    Przykładowy kod:

    // Testowane na Arduino IDE 1.0.3#włączać int RECV_PIN = 2; int dioda = 13; IRrecv irrecv(RECV_PIN); wyniki decode_results; próżnia organizować coś () { Seryjny.begin(9600); nieodbiór.włączIRIn(); // Uruchom odbiornik tryb pin(LED, WYJŚCIE); ) próżnia pętla() ( if (irrecv.decode(&results)) ( Seryjny.println(wartość.wyników); if (results.value == 16769565) // Podczas odbierania kodowania 1( digitalWrite(LED, WYSOKI); // Włącz diodę LED) if (results.value == 16761405) // Podczas odbierania kodowania 2( digitalWrite(LED, NISKI); // Wyłącz diodę LED) nieodbiór.resume(); // Uzyskaj następną wartość } }

    Dzień dobry (lub wieczór, jak kto woli), zacznijmy od lirycznego wprowadzenia. Obecnie wiele osób ma domy Telewizor z pilotem, tunerem, odtwarzaczem DVD . Wiele osób (i rodzin) nie wyobraża sobie życia domowego bez pilota w dłoni. Zgadzam się - jak wspaniale jest być mistrzem sprzętu AGD i w każdej chwili dyktować swoją wolę tym sprzętom. W tym artykule chcielibyśmy przyjrzeć się bliżej technologii zdalnego sterowania i podać kilka przykładów zastosowania dla naszych potrzeb.

    Czego więc potrzebujemy jako komponentów do naszego eksperymentu? Jako opcja w sprzedaży gotowe moduły pilota IR i odbiornika IR. Ale nie chcemy czekać i płacić pieniędzy, więc będziemy działać bardziej hardkorowo. Weźmy za podstawę pilota niewiadomego pochodzenia, mamy też kawałek płytki od chińskiego tunera, na którym wlutowany jest odbiornik podczerwieni. Na zdjęciu poniżej możecie zobaczyć te elementy. Szczerze mówiąc, pilot został znaleziony wśród niepotrzebnych śmieci na biurku, a płytka z odbiornikiem IR została zabrana z najbliższego warsztatu radiowego.

    No cóż, jak już mówiłem Hannibala - „Naprzód do Kartaginy” . Pozostaje nam tylko wylutować odbiornik i podłączyć go do płytki Arduino według poniższego schematu...

    • Podłączanie odbiornika podczerwieni

    Odbiornik podczerwieni który został wylutowany z płytki nie ma żadnych oznaczeń, jest to po prostu kolejny nieznany chiński element radia, którego wyprodukowano tysiące. W skrócie można powiedzieć – w jednym budynku to się łączyfotodioda, przedwzmacniacz i sterownik . Dane wyjściowe są tworzone przez normalnySygnał TTL bez wyściółki, nadający się do dalszej obróbki przez mikrokontroler. Częstotliwość nośna to prawdopodobnie (!) 36 kHz, ale teraz to nie jest takie ważne... Spróbujmy po prostu podłączyć to do płytkiArduino , schemat warunkowy poda żądany układ pinów tego urządzenia. Na poniższym schemacie zaznaczony na czerwono kształt korpusu, w którym nasz jest wykonanyOdbiornik podczerwieni , podświetlony na zielono - pinout, za pomocą którego jest podłączony do płytkiArduino .

    Uwaga!!! W Internecie istnieje wiele schematów pinów urządzeń w takiej obudowie (TSOP). Rozkłady pinów podane w tym artykule mogą nie pokrywać się z żadnymi znalezionymi w Internecie, ale tak właśnie wszystko jest z nami połączone. Jeśli odbiornik podczerwieni zacznie się nagrzewać po podłączeniu, natychmiast wyłącz zmontowany obwód, oznacza to, że układ pinów połączenia nie odpowiada rzeczywistemu i będziesz musiał go wybrać niemal losowo. Tak właśnie zrobiliśmy, ponieważ znalezione w Internecie układy nie były odpowiednie dla naszego odbiornika IR. Ogólnie rzecz biorąc, najważniejsze jest, aby nie spalić płytki Arduino, postępuj ostrożnie!!!

    • Biblioteka IRemote

    Wszystko jest więc połączone. Dostępna jest biblioteka umożliwiająca odczyt kodów z pilota IRremote.h, to za jego pomocą przestudiujemy nasz pilot, a raczej kody przycisków. W przyszłości odczytane kody będziemy wykorzystywać do własnych celów. Szkic, za pomocą którego będą odczytywane kody przycisków, przedstawiony jest w przykładach tej biblioteki, nazywa się to Demo IRrecv. Uwaga!!! Podczas kompilacji szkicu wyskakuje błąd, na samym początku należy dodać jeszcze dwie biblioteki wtyczek:

    #include "boarddefs.h" //Dodatkowa biblioteka #include "IRremote.h" #include "IRremoteInt.h" //Dodatkowa biblioteka int RECV_PIN = 2; //Pin do podłączenia sygnału wyjściowego z odbiornika IR //Utwórz instancję klasy IRrecv, przekazując pin do podłączenia sygnału z odbiornika IR jako parametr IRrecv irrecv(RECV_PIN); wyniki decode_results; //Zmienna do zapisania otrzymanego kodu naciśniętego przycisku void setup() ( Serial.begin(9600); irrecv.enableIRIn(); //Włączenie odbiornika podczerwieni do pracy ) void pętli() ( if (irrecv.decode() &results)) //Jeśli wystąpiło zdarzenie/naciśnięto przycisk ( Serial.println(results.value, HEX); //Wyprowadź kod naciśniętego przycisku w postaci szesnastkowej do monitora portu irrecv.resume(); // Przeczytaj następną wartość/przycisk ) opóźnienie (100 ); )

    Po przesłaniu szkicu na tablicęArduino(Używamy Arduino Nano na tarczy Bezprzewodowa osłona I/O dla Nano ), można otworzyć monitor portu i zobacz jakie kody pojawiają się po naciśnięciu przycisków na pilocie. Wynik szkicu pokazano na zrzucie ekranu poniżej:

    Swoją drogą, jak monitor portu Korzystamy z naszego sprawdzonego oprogramowania, jeśli ktoś jest zainteresowany, może przeczytać artykuł i pobrać Serial Monitor Pro.

    #define KEY_ONOFF 0x807F807F //Przycisk włączania/wyłączania #define KEY_MUTE 0x807F48B7 //Przycisk wyciszenia #define KEY_1 0x807F00FF //Przycisk 1 #define KEY_2 0x807FE01F //Przycisk 2 #define KEY_3 0x807F609F / /K przycisk 3 #define KEY_4 0x807F20DF //Przycisk 4 #define KEY_5 0x807FD02F //Przycisk 5 #define KEY_6 0x807F50AF //Przycisk 6 #define KEY_7 0x807F10EF //Przycisk 7 #define KEY_8 0x807FF00F //Przycisk 8 #define KEY_9 0x807F708F / /Przycisk 9 #zdefiniuj KEY_0 0x807FC837 //Przycisk 0

    A teraz w sumie wszystko jest gotowe do testu końcowego - będzie to elementarny test sterowania załączaniem/wyłączaniem modułów przekaźnikowych. Oto małe zadanie:

    • Używamy dwóch modułów przekaźnikowych
    • Przywiązujemy przekaźnik nr 1 do przycisku „1” pilota
    • Przekaźnik nr 2 jest podłączony do przycisku „2” pilota
    • Włączenie dowolnego z modułów przekaźnikowych odbywa się poprzez naciśnięcie przycisku, do którego jest on przypisany
    • Wyłączenie któregokolwiek z modułów przekaźnikowych odbywa się także poprzez naciśnięcie przycisku, do którego jest on przypisany
    • Naciśnięcie przycisku On/Off powoduje bezwarunkowe wyłączenie obu modułów przekaźnikowych (jeśli były włączone lub jeden z nich jest włączony)

    Szkic realizujący powyższe zadanie:

    #include "boarddefs.h" //Dodatkowa biblioteka #include "IRremote.h" #include "IRremoteInt.h" //Dodatkowa biblioteka #define KEY_ONOFF 0x807F807F //Przycisk włączania/wyłączania #define KEY_1 0x807F00FF //Przycisk 1 #define KEY_2 0x807FE01F //Przycisk 2 #define RELOUT1 3 //Port wyjściowy dla przekaźnika 1 #define RELOUT2 4 //Port wyjściowy dla przekaźnika 2 int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); wyniki decode_results; statyczna wartość logiczna REL1_ONOFF = fałsz; statyczna wartość logiczna REL2_ONOFF = fałsz; void setup() ( pinMode(RELOUT1, OUTPUT); pinMode(RELOUT2, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); // Uruchom odbiornik ) void pętla() ( if (irrecv.decode(&results )) ( switch(results.value) ( ​​​​case(KEY_ONOFF): REL1_ONOFF = fałsz; REL2_ONOFF = fałsz; przerwa; case(KEY_1): if(REL1_ONOFF) REL1_ONOFF = fałsz; w przeciwnym razie REL1_ONOFF = prawda; przerwa; case(KEY_2 ): if(REL2_ONOFF) REL2_ONOFF = fałsz; w przeciwnym razie REL2_ONOFF = prawda; przerwa; ) irrecv.resume(); ) digitalWrite(RELOUT1, REL1_ONOFF); digitalWrite(RELOUT2, REL2_ONOFF); opóźnienie(100); )

    A na końcu artykułu znajduje się film prezentujący pracę obu szkiców. Jeżeli chcesz i masz twórczą wyobraźnię, możesz rozbudować flotę wtyczek i zarządzać wszystkim w bardziej zaawansowany sposób. W naszym artykule staraliśmy się podać podstawowy przykład zastosowania tej technologii. Dziękuję za uwagę i miłego oglądania!!!

    Aby komentarze mogły działać, włącz JavaScript.

    Odbiornik podczerwieni i pilot na podczerwień to najpopularniejszy i najłatwiejszy sposób sterowania sprzętem elektronicznym. Widmo promieniowania podczerwonego nie jest widoczne dla ludzkiego oka, ale jest doskonale odbierane przez odbiorniki podczerwieni wbudowane w urządzenia elektroniczne. Zdalne moduły Arduino na podczerwień służą do sterowania różnymi urządzeniami w zasięgu wzroku.

    Powszechne zastosowanie emiterów podczerwieni stało się możliwe dzięki ich niskiemu kosztowi, prostocie i łatwości obsługi. Promieniowanie podczerwone mieści się w zakresie od 750 do 1000 mikronów – jest to część widma najbliższa światłu widzialnemu. W obszarze promieniowania podczerwonego właściwości optyczne różnych materiałów mogą się zmieniać. Na przykład niektóre okulary stają się nieprzezroczyste dla promieni IR, podczas gdy parafina wręcz przeciwnie jest przezroczysta w widmie IR.

    Promieniowanie rejestrowane jest za pomocą specjalnych materiałów fotograficznych, na bazie których budowane są odbiorniki. Oprócz nagrzanych ciał (słońce, żarówki czy świece) źródłem promieniowania podczerwonego mogą być urządzenia półprzewodnikowe – diody IR, lasery. Promieniowanie w zakresie podczerwieni posiada szereg cech, które czynią je wygodnymi w użyciu w pilotach:

    • Emitery półprzewodnikowe (diody podczerwieni) są tanie i kompaktowe.
    • Promienie podczerwone nie są postrzegane ani wykrywane przez ludzkie oko.
    • Odbiorniki podczerwieni są również tanie i małe.
    • Niskie zakłócenia, ponieważ nadajnik i odbiornik są dostrojone do tej samej częstotliwości.
    • Nie ma negatywnego wpływu na zdrowie człowieka.
    • Wysoki współczynnik odbicia od większości materiałów.
    • Emitery IR nie mają wpływu na działanie innych urządzeń.

    Pilot zdalnego sterowania działa w następujący sposób. Po naciśnięciu przycisku sygnał jest kodowany w świetle podczerwonym, odbiornik odbiera go i wykonuje żądaną akcję. Informacja jest kodowana w postaci logicznej sekwencji pakietów impulsów o określonej częstotliwości. Odbiornik odbiera tę sekwencję i demoduluje dane. Do odbioru sygnału stosuje się mikroukład zawierający fotodetektor (fotodiodę), wzmacniacze, filtr pasmowo-przepustowy, demodulator (detektor umożliwiający izolację obwiedni sygnału) i tranzystor wyjściowy. Posiada także filtry – elektryczny i optyczny. Urządzenia takie działają w odległości do 40 metrów. Metoda transmisji danych w podczerwieni występuje w wielu urządzeniach: w sprzęcie AGD, urządzeniach przemysłowych, komputerach, liniach światłowodowych.

    Odbiornik podczerwieni Arduino

    Do odczytania sygnału IR potrzebna będzie sama płytka Arduino, płytka stykowa, odbiornik sygnału IR oraz zworki. Istnieje ogromna różnorodność różnych odbiorników, ale lepiej jest użyć TSOP312 lub innych odpowiednich dla Arduino. Dane z pilota do odbiornika mogą być przesyłane poprzez protokół RC5 lub NEC.

    Aby określić, która noga do czego należy, należy spojrzeć na czujnik od strony odbiornika. Następnie w odbiorniku styk środkowy jest uziemiony, po lewej stronie wyjście do mikrokontrolera, po prawej zasilanie.

    Dla wygody można skorzystać z gotowych modułów odbiornika podczerwieni.

    Podłączenie odbiornika IR do Arduino

    Wyjścia odbiornika podczerwieni podłączone są do Arduino do portów GND, 5V i wejść cyfrowych. Schemat podłączenia czujnika do 11. pinu cyfrowego pokazano poniżej.

    Tak wygląda obwód z modułem odbiornika podczerwieni:


    Biblioteki do pracy z IR

    Do pracy z urządzeniami IR można wykorzystać bibliotekę IRremote, która upraszcza budowę układów sterowania. Możesz pobrać bibliotekę. Po pobraniu skopiuj pliki do folderu \arduino\libraries. Aby połączyć się ze szkicem biblioteki, musisz dodać plik nagłówkowy #include .

    Aby odczytać informacje, użyj przykładu IRrecvDumpV2 z biblioteki. Jeśli pilot już istnieje na liście rozpoznanych, skanowanie nie jest wymagane. Aby odczytać kody należy uruchomić ARduino IDE i otworzyć przykład IRrecvDemo z IRremote.

    Istnieje druga biblioteka do pracy z sygnałami IR - jest to IRLib. Pod względem funkcjonalności jest podobny do poprzedniego. W porównaniu do IRremote, IRLib ma przykład określania częstotliwości czujnika IR. Ale pierwsza biblioteka jest prostsza i wygodniejsza w użyciu.

    Po załadowaniu biblioteki można przystąpić do odczytywania odebranych sygnałów. Służy do tego następujący kod.

    Operator decode_results potrzebny jest do przypisania wyników nazw zmiennych do odbieranego sygnału.

    W kodzie musisz przepisać „HEX” na „DEC”.

    Następnie po załadowaniu programu należy otworzyć monitor szeregowy i nacisnąć przyciski na pilocie. Na ekranie pojawią się różne kody. Należy zanotować, któremu przyciskowi odpowiada otrzymany kod. Wygodniej jest zapisać uzyskane dane w tabeli. Kod ten można następnie zapisać w programie, aby można było sterować urządzeniem. Kody zapisywane są w pamięci samej płytki Arduino EEPROM, co jest bardzo wygodne, ponieważ nie trzeba programować przycisków za każdym razem, gdy włączasz pilota.

    Zdarza się, że podczas ładowania programu wyświetla się błąd „TDK2 nie został zadeklarowany w swoim zakresie”. Aby to naprawić należy udać się do Eksploratora, przejść do folderu, w którym zainstalowana jest aplikacja Arduino IDE i usunąć pliki IRremoteTools.cpp oraz IRremoteTools.h. Następnie należy ponownie załadować program do mikrokontrolera.

    Wniosek

    Korzystanie z pilota na podczerwień Arduino ułatwia życie użytkownikowi. Za pilota może pełnić telefon komórkowy, tablet czy komputer – wystarczy specjalne oprogramowanie. Używając Arduino, możesz scentralizować całą kontrolę. Za pomocą jednego przycisku na pilocie możesz wykonać kilka czynności na raz - na przykład włączyć jednocześnie telewizor i Blu-Ray.

    Publikacje na ten temat