Pilot IR receiver
Komunikacja w podczerwieni (IR) jest szeroko stosowaną i łatwą do wdrożenia technologią bezprzewodową, która ma wiele przydatnych zastosowań. Najbardziej znanymi przykładami w codziennym życiu są piloty do TV / wideo, czujniki ruchu i termometry na podczerwień.
Istnieje wiele interesujących projektów Arduino, które również wykorzystują komunikację w podczerwieni. Za pomocą prostego nadajnika i odbiornika podczerwieni możesz tworzyć zdalnie sterowane roboty, czujniki odległości, monitory pracy serca, piloty do telewizora i wiele innych.
W tym wpisie dowiesz się, jak skonfigurować odbiornik podczerwieni i pilota na Arduino z pomocą programu Code Designer. Pokażę też, jak używać praktycznie dowolnego pilota na podczerwień (takiego jak ten do telewizora) do sterowania urządzeniami podłączonymi do Arduino.
JAK DZIAŁAJĄ PILOTY I ODBIORNIKI IR
Typowy system komunikacji w podczerwieni wymaga nadajnika i odbiornika IR. Nadajnik wygląda jak standardowa dioda LED, tyle że wytwarza światło w widmie IR zamiast w widmie widzialnym. Jeśli spojrzysz na przód pilota telewizora, zobaczysz diodę LED nadajnika podczerwieni:
Ten sam typ diod LED jest stosowany w płytkach sterujących przekaźnika podczerwieni w Arduino. Możesz to zobaczyć np. w takim układzie:
Odbiornik podczerwieni natomiast to fotodioda i przedwzmacniacz, który przekształca światło podczerwone w sygnał elektryczny. Diody odbiornika IR zwykle wyglądają tak:
Mogą być też zamocowane do większego układu, poniżej widać odbiornik diody podczerwieni IR Receiver podłączony na pinie 6 na rozszerzeniu do arduino, Education board v1
Przykład kodu do odbioru danych
Najprostszy fragment kodu który umozliwia odczytanie kodu z pilota i wyświetlenia go na konsoli w arduino (serial port) może wyglądać jak poniżej. Dioda IR umieszczona została na pinie 6 naszego arduino.
#include <IRremote.h>
int RECV_PIN = 6;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
}
Kod wstępnie nie jest zbyt trudny, ale w połączeniu w zaawansowanym układzie może robić wiele problemów.
Przyjmijmy, że chcemy zbudować prosty układ świateł (diod led) który będzie zapalał i gasił się w zależności od wciśniętego przycisku na naszym pilocie. Odczytanie każdego interesującego klawisza jest konieczne, to bez wątpienia, ale rodzi się pytanie jak i gdzie go umieścić, i złączyć ten kod? Sprawia to dużo problemów początkującym w tworzeniu swoich projektów za pomocą arduino.
Popularny układ pilota tzw. "car mp3"
Przykłady kodów które ten pilot przesyła.
Key | Code |
CH- | 0xFFA25D |
CH | 0xFF629D |
CH+ | 0xFFE21D |
<< | 0xFF22DD |
>> | 0xFF02FD |
>|| | 0xFFC23D |
– | 0xFFE01F |
+ | 0xFFA857 |
EQ | 0xFF906F |
100+ | 0xFF9867 |
200+ | 0xFFB04F |
0 | 0XFF6897 |
1 | 0xFF30CF |
2 | 0xFF18E7 |
3 | 0xFF7A85 |
4 | 0xFF10EF |
5 | 0xFF38C7 |
6 | 0xFF5AA5 |
7 | 0xFF42BD |
8 | 0xFF4AB5 |
9 | 0xFF52AD |
Pisząc program od podstaw musimy każdy z tych kodów odczytać i wpisać odpowiednio w programie, aby można było na jego podstawie wykonać interesujące nas działanie.
Program Code Designer umożliwa dużo prostszą interakcje, która nie przytłoczy nikogo kto zaczyna pracę z kontrolerami. Przykład kodu który wykorzystuje wspomniany wcześniej pilot IR (mp3 car) będzie wyglądał tak:
Program zapala i gasi diodę umieszczoną na pinie 13 w zależności od klikniętego klawisza na pilocie CH+ lub CH-.
Blok kontroli programu
Blok kontroli analizujący wartość odnajdziesz w menu:
W celu skonfigurowania go aby działał na kilka w naszym przypadku przycisków, należy wykonać odpowiednio 2 kroki, zaprezentowane poniżej na zrzutach ekranu:
Program w bardzo prosty sposób umożliwia rozbudowanie programu o kolejne opcje.
Załóżmy że chcemy wykonać projekt, który składa się z 2 diod i chcemy sterować nimi za pomocą kliknięcia w klawisze 1 i 2 na pilocie. Dodatkowo po ponownym kliknięciu klawisza chcemy aby dioda zmieniła swój stan na przeciwny (jeśli była zapalona to zgaś, jeśli była zgaszona to zapal).
Taki program może wyglądać następująco: