Zdalne sterowanie pilotem w podczerwieni jest bardzo rozpowszechnione i nie warto w tym zakresie „odkrywać Ameryki”. Funkcjonuje kilka uzgodnionych protokołów wg których nadajnik komunikuje się z odbiornikiem. Najpopularniejsze to: protokół opracowany przez firmę NEC, Philips, JVC, SIRC (Sony Infrared Remote Control) lub RC5 który zdominował zdalne sterowanie w branży RTV. W bieżącym projekcie wykorzystamy standard NEC-a. Od Red. EdW: Można się domyślać, iż o takim wyborze zadecydowały względy marketingowe; pilot który jest mały poręczny i przede wszystkim bardzo tani równocześnie umożliwia wysłanie 21 różnych kodów, co w tym przypadku w zupełności wystarcza.
Zatem nadajnik mamy gotowy, odbiornik chcemy wykonać na popularnym mikrokontrolerze z rodziny PIC. Dokładniej, wykonać musimy dekoder, gdyż sam odbiornik podczerwieni jest również dostępny za bardzo skromną cenę. To TSOP1738. Jednak, żeby zdekodować sygnał pilota, musimy dokładnie poznać jego strukturę. I od tego zaczniemy.
Logika kodowania zera i jedynki logicznej zawiera się w czasie odstępu wysyłanych impulsów.
Logiczne 0 to impuls o czasie trwania 562,5 mikrosekundy za którym następuje przerwa, odstęp czasowy o takiej samej szerokości. To w sumie daje czas transmisji zera logicznego 1,125 ms. Logiczną „1” również rozpoczyna impuls (burst) o szerokości 562,5 μs. Jednak po nim następuje przerwa dłuższa =1,6875 ms. To daje czas transmisji jedynki równy 2,25 ms. Jednak, aby odbiornik „się nie pogubił”, na początku każdej ramki nadajnik wysyła sekwencję startową. Zatem, naciśnięcie dowolnego przycisku na pilocie skutkuje następującą sekwencją impulsów:
- 9-cio milisekundowy „burst” rozpoczynający transmisję każdej ramki, co odpowiada 16-tu okresom podstawowej jednostki impulsu (562,5 μs) odliczanym przy przesyłaniu każdego bitu
- Przerwa 4,5 milisekundowa
- 8-mio bitowy adres odbiornika
- Powtórzony adres odbiornika w postaci zanegowanej
- 8-mio bitowy rozkaz
- 8-mio bitowy rozkaz zanegowany
- Impuls (burst) kończący ramkę wiadomości, impuls o czasie trwania 562,5 μs (czas przyjęty jako „jednostka” w protokole NEC-a).
Zatem, w ramce mieszczą się 4 bajty, przy czym adres i komenda są powtórzone w postaci „wprost” i zanegowanej. W każdym bajcie kolejność bitów ustalona jest od bitu najmniej znaczącego (LSB) do bitu najbardziej znaczącego (MSB).