Pomimo rozwoju technologii, piloty wykorzystujące podczerwień do dzisiaj są powszechnie wykorzystywane. Moim zdaniem wynika to z faktu iż ta forma komunikacji łączy w sobie wygodę i bezpieczeństwo.
Urządzenia oparte o ESP8266 mogą bardzo łatwo korzystać z dobrodziejstw tego rozwiązania.
Pod względem sprzętowym wystarczy jeden czujnik podczerwieni. Przykładem takiego czujnika jest VS1838B. Układ ten jest fotorezystorem opakowanym w plastik, który znacznie lepiej przepuszcza podczerwień niż światło widzialne. Dodatkowo układ ten zawiera serię filtrów i wzmacniaczy, których zadaniem jest oddzielić sygnał wysłany przez pilot od innych źródeł podczerwieni w otoczeniu (np. nagrzewającej się elektroniki).
Całość zamknięta jest w metalową obudowę, która wpuszcza tylko promieniowanie biegnące od przodu układu, co zabezpiecza przed odbieraniem sygnałów odbitych od ścian.
Najważniejszą zaletą tego układu jest cena. W Polsce można go dostać poniżej złotówki za sztukę, a na znanym chińskim portalu bez problemu udało mi się znaleźć ofertę po 25 groszy przy zakupie 100 sztuk.
Układ posiada 3 nóżki (od lewej): zasilanie, masa i wyjście. Ich podłączenie jest dość intuicyjne: nóżkę zasilania należy połączyć z zasilaniem ESP8266, masę z masą układu, a wyjście z dowolnym wejściem.
Producent zaleca dodatkowo dodanie trzech elementów, nie znalazłem jednak uzasadnienia ich użycia (działa bez nich). Elementy te to:
- Opornik 100 Ohm między źródłem zasilania, a wejściem VCC – prawdopodobnie służy ograniczeniu prądu płynącego przez układ
- Opornik 20 kOhm między nóżkami VCC i OUT – wiele układów cyfrowych potrafi się nie uruchomić jeżeli któreś jego wejście jest połączone z masą, w przypadku ESP8266 są to złącza IO2, IO4 i RX – przy czym nie sam nie zaobserwowałem tego problemu w połączeniu z VS1828B
- Kondensator 100 mikro-Farad między zasilaniem, a masą – absolutnie nie mam pojęcia jaką rolę w tym układzie pełni ten element – pewnie jakbym miał oscyloskop to mógłbym sprawdzić.
Układ wysyła szeregowo otrzymaną treść. Dekodowanie tej treści nie jest łatwym zadaniem na szczęście, są gotowe biblioteki, które to robią.
Dla układów Arduino istnieje biblioteka IRremote, niestety nie można jej wykorzystać przy pracy z ESP8266, istnieje jednak jej port IRremoteESP8266.
Aby ją zainstalować otworzyłem Arduino studio i kliknąć Sketch -> Include Library -> Manage Libraries.
W polu wyszukiwania wpisałem „IRremoteESP8266” i kliknąć przycisk „Install”.
Biblioteka zawiera dużą ilość klas i narzędzi, jednak do odbioru sygnału z pilota wystarczy moduł IRrecv, który zawiera klasy IRrecv oraz decode_results. Instancję pierwszej należy zainicjować oraz zadeklarować instancję drugiej.
#include <IRrecv.h>
IRrecv irrecv(2);
decode_results results;
void setup() {
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)){
int resVal = results.value;
// TODO: Do something with resVal
irrecv.resume();
}
delay(100);
}
Metoda setup zawiera wywołanie enableIRIn, która przygotowuje układ i klasę do odbioru sygnału. Metoda loop zawiera wywołanie metody decode, metoda ta zwraca true jeżeli klasie udało się zdekodować sygnał.
Metoda przyjmuje jako parametr wskaźnik na pole typu decode_results w które wpisywane są wyniki dekodowania sygnału.
Najważniejszym polem wyników jest value – kod wciśniętego przycisku.
Po zakończeniu obsługi sygnały należy wywołać metodę resume – dającą bibliotece sygnał, że można dekodować kolejną wartość.
Inne artykuły związane z Internetem rzeczy