Wiele współczesnych urządzeń RTV/AGD można obsłużyć tylko przy pomocy pilota. Kiedy ten zaczyna szwankować, nadal sprawne podstawowe urządzenie (o wartości wielokrotnie przekraczającej wartość samego pilota) staje się bezużyteczne. Właśnie taka sytuacja przytrafiła mi się kilka miesięcy temu i poszukując rozwiązania (zdekodowanie komend częściowo działającego pilota) trafiłem na chiński moduł YS-IRTM. Zaryzykowałem zakup, chociaż jedyne co było mi wiadomo na jego temat w tamtym momencie, to standard transmisji IR w którym pracuje (NEC) oraz standard we/wy (TTL). Zanim moduł dotarł do mnie, znalazłem jeszcze trochę kolejnych informacji, a kiedy go już podłączyłem w warsztacie, okazało się, że był to przysłowiowy „strzał w dziesiątkę”. Nie tylko rozwiązałem problemy z pilotem RTV, ale okazało się również, że będzie to świetny moduł do projektów modelarskich z wykorzystaniem podczerwieni.
Na płytce o wymiarach ok. 27x17mm znajduje się „przezroczysta” dioda nadawcza IR, odbiornik IR 38KHz oraz procesor STC11F02, który realizuje funkcje nadawania, odbierania a także transmisji szeregowej w standardzie TTL. Moduł jest zasilany z napięcia 5V, więc idealnie nadaje się do podłączenia do kontrolerów Arduino za pomocą 4 przewodów (Gnd, +5V, RxD, TxD), domyślna prędkość transmisji to 9600. Jak już wspomniałem standard transmisji to protokół NEC. Oznacza to, że każda komenda składa się z trzech bajtów, dwa pierwsze są stałe: 0x00, 0xFF (w zapisie heksadecymalnym) a trzeci to właściwa komenda użytkowa. W teorii może być ich nawet 253 (255 z wyłączeniem 0x00, 0xFF), co daje całkiem spore możliwości. Płytka nie jest zbyt droga ( <2$) i nawet zakładając, że podobny kod obsługujący nadawanie i odbieranie komend w podczerwieni można byłoby umieścić w Arduino wraz z programem użytkowym, to same elementy typu dioda, tranzystor sterujący i odbiornik w warunkach amatorskich trudno byłoby zmieścić na mniejszej powierzchni. A tu dostajemy miniaturową płytkę, która ma wszystko co trzeba, a dodatkowo wyręcza nas w opracowaniu dość złożonego kodu do obsługi podczerwieni. Sprzedawane na Ali moduły mają złącze wlutowane pionowo, płytka widoczna po prawej posiada złącze poziome, zostało ono wymienione przeze mnie.
Fajne jest to, że YS-IRTM można podłączyć do portu Com/RS232 w komputerze. Do tego celu jest potrzebny albo konwerter TTL/RS232 albo interfejs USB/COM z wyjściem TTL (widziałem takie „kabelki” np. bazujące na chipie CP2102). W przypadku zwykłego konwertera (jak mój) potrzebne jest źródło zasilania +5V, natomiast kable USB/TTL często mają prócz Gnd, RxD, TxD, również wyprowadzone zasilanie z komputera.
Do sprawdzenia transmisji użyłem popularnego darmowego programu „Terminal”, idealnie nadającego się do takich zastosowań, ze względu na wiele opcji konfiguracyjnych, pracę z wieloma formatami danych i możliwość rejestracji makr. Ale można użyć oczywiście dowolnego, o ile ma on możliwość przesyłania danych heksadecymalnych. Po ustawieniu parametrów zaznaczonych na czerwono wystarczy wcisnąć klawisz „Connect” i terminal od tej pory oczekuje na dane na wybranym porcie com (u mnie Com1).
Jako źródło komend można użyć bardzo popularnego taniego pilota na baterię CR2032, opisywanego często przez sprzedawców jako „pilot IR do Arduino”. Tak się składa, że pracuje on również z protokołem NEC, więc nadaje się idealnie do testów, eksperymentów, czy nawet sterowania powolnie poruszającymi się modelami kołowymi lub pływającymi (w wannie lub brodziku oczywiście).
Zrzut z ekranu pokazuje efekt wciskania kolejnych klawiszy pilota. Lewy klawisz (CH-) generuje sekwencję 0x00, 0xFF, 0x45, środkowy klawisz (CH) sekwencję 0x00, 0xFF, 0x46, a prawy klawisz (CH+) sekwencję 0x00, 0xFF, 0x47.
Bardziej zaawansowany test polegał na wymianie danych między dwoma modułami YS-IRTM. Jeden z nich był podłączony jak poprzednio do PC z programem terminalowym. Drugi moduł był podłączony do Arduino Uno, z załadowanym programem (pobierz), pracującym w ten sposób, że oczekuje na wejściu na konkretną komendę (0x00, 0xFF, 0x45), a kiedy ją otrzyma, to odpowiada tą samą komendą. Tak więc wysyłanie i odbieranie tej komendy odbywa się z poziomu terminala, a Uno z podłączonym YS-IRTM pełni rolę repeater’a (dla wybranej komendy). Odnośnie połączeń warto przy okazji zwrócić uwagę na oznaczenia. W przypadku Uno podłączenie jest klasyczne, tzn. na krzyż” (TxD-->RxD, RxD -->TxD), w przypadku konwertera RS232/TTL prawidłowa komunikacja była możliwa przy połączeniu TxD-->TxD, RxD-->RxD, więc gdyby coś nie działało, to trzeba spróbować z zamienionymi przewodami.
Wysyłanie komendy z modułu YS-IRTM musi być obowiązkowo poprzedzone sekwencją 0xA1, 0xF1 i dopiero po niej należy wysłać właściwą komendę. Tak więc cała sekwencja odpowiadająca lewemu klawiszowi pilot testowego (0x45) będzie wyglądała następująco: 0xA1, 0xF1, 0x00, 0xFF, 0x45. W tym konkretnym programie terminalowym 0x należy zastąpić znakiem $, więc sekwencja wygląda w ten sposób: $A1$F1$00$FF$45. Wpisujemy ją w zaznaczone na zrzucie pole, wciskamy klawisz „Send” i w odpowiedzi otrzymujemy w oknie znaków przychodzących: F1 00 FF 45, czyli: 0xF1, 0x00, 0xFF, 0x45. Przyznam, że nie wiem skąd pojawia się pierwszy bajt 0xF1. Z jednej strony to nie przeszkadza, bo jeśli oczekuję na sekwencję 0x00, 0xFF, 0x45 to nie ma znaczenia, czy jest ona poprzedzona dodatkowym znakiem, czy nie. Z drugiej zaś strony, być może to specyfika współpracy 2 modułów ze sobą, bo kiedy symulowałem działanie mojego pilota RTV, to wszystkie komendy, które wysyłałem z YS-IRTM na terminalu wyglądały dokładnie tak jak je zaprogramowałem.
W uzupełnieniu warto jeszcze dodać, że w programie Terminal jest możliwość definiowania jako makro całych sekwencji komend, co jest bardzo wygodne przy pracach testowych.
Opisywany moduł nadajnika/odbiornika podczerwieni okazał się bardzo ciekawym odkryciem. Już od dawna robiłem podejścia do projektów z użyciem podczerwieni, ale konieczność wytwarzania fali nośnej 38kHz modulowanej sygnałem użytkowym obok właściwego programu użytkowego, była zadaniem dla mnie zbyt pracochłonnym jak na ilość czasu, którą mogłem poświęcić temu tematowi. YS-IRTM zainspirował mnie na nowo i mam nadzieję jeszcze w tym sezonie podzielić się z czytelnikami ciekawym projektem stricte modelarskim, bazującym na tym module.