
Włącznik komputera zintegrowany z igorplug
Ostatnio postanowiłem zmontować sobie komputer pracujący w roli "Media Center".
Jako zdalne sterowanie wykorzystałem odbiornik igorplug (http://www.cesko.host.sk/girderplugin.htm) działający wraz z girderem na porcie rs232 oraz pilot od tunera sat - ferguson.

Wszystko działało bardzo pięknie - pojawił się tylko jeden problem - brak możliwości włączenia komputera z pilota.
W wolnej chwili postanowiłem coś zmajstrować - ponieważ pamiętałem, iż BASCOM posiada magiczną komendę GETRC5 - pomyślałem, że będzie to wręcz banalne.
Jakież było moje zdziwienie, gdy za nic nie mogłem odebrać od pilota komend. W końcu znalazłem inny pilot od starego TV i zadziałało (wniosek - mój pilot to nie RC5). Jednak musiałem jakoś sprawić aby mój ulubiony pilot również zadziałał. Po poszukiwaniach w internecie znalazłem informację dotyczącą kodowania pilotów fergusona (i nie tylko):
http://www.sbprojects.com/knowledge/ir/nec.htm - polecam jako doskonałe źródło informacji o zasadzie przesyłania danych przez piloty.
Pilot wysyła na początku start ramki oraz 4-bajtową informację o adresie i kodzie, potem jeśli przycisk pilota jest trzymany wysyłany jest już tylko znacznik początku ramki - co skutecznie uniemożliwiło mi podejrzenie całości na oscyloskopie (pierwsza najbardziej interesująca część szybko znikała


Jako, że zacząłem już zabawę w BASCOMie postanowiłem kontynuować i zrodził się odbiornik potrafiący odbierać informacje od tego typu pilotów.
Projekt nie jest idealny, m.in. w kodzie nie ma zawartej możliwości sprawdzania czy przycisk jest trzymany.
Budowa:
- attiny2313 zasilane z portu usb umieszczonego wewnątrz obudowy komputera (z wyprowadzenia na przedni lub tylni panel) - płyta zasila usb nawet wówczas gdy komputer jest wyłączony.
- do wejścia PD.2 (INT0) jest podłączony sygnał z odbiornika podczerwieni - jest on także podawany przez transoptor (dla odizolowania zasilania z rs232 od usb - nie jest wymagany działało mi i bez niego) na standardową konstrukcję odbiornika igorplug,
- wejście PB.0 jest wykorzystywane do uczenia klawisza pilota odpowiedzialnego za załączanie wyjścia - zwierane do masy,
- wyjście PD.6 służy do uruchamiania kolejnego transoptora - w moim przypadku służy do włączania komputera - zwierane do masy,
- wyjście PB.2 (nie wyprowadzone na projekcie płytki) - pojawia się na nim stan niski w przypadku odebrania jakiegokolwiek prawidłowego kodu.
Działanie jest następujące:
- odbiornik po włączeniu odczekuje sekundę po czym przechodzi do pętli, w której sprawdza czy odebrana ilość znaków jest równa 32
- jeśli warunek jest spełniony sprawdzane jest występowanie stanu niskiego na porcie PB.0 - jeśli warunek jest spełniony - odebrany kod pilota zapamiętywany jest w pamięci eeprom (po tej operacji na wyjściu PD.6 na przemian pojawia się dwukrotnie stan niski - podczas testowania miałem tam podłączonego leda - a później nie chciało mi się już przerabiać kodu aby informacja ta pojawiała się na porcie informacyjnym PB.2),
- jeśli nie - następuje sprawdzenie czy odebrany kod jest równy z tym zapisanym w pamięci
- jeśli warunek jest spełniony na porcie PD.6 pojawia się stan niski zasilający transoptor (przez ok. 1 sek.) - włączenie komputera
- odczyt kodu pilota odbywa się za pomocą timer0, którego czas przepełnienia jest ustawiony na dłużej niż najdłuższy odstęp sygnału w tym standardzie.
- każde wystąpienie przerwania na przemian włącza i wyłącza timer i na podstawie wartości timer0 jest podejmowana decyzja czy jest to preambuła czy też może logiczne 0 lub 1 - po otrzymaniu pełnych 32 bitów - pętla główna może sprawdzić odebrany kod.
Załączam kod - nie jest idealny, wręcz przeciwnie - nie jestem zbytnio z niego zadowolony ale działa i mam nadzieję, że pomoże innym w przyszłości szukającym możliwości odczytania kodów pilotów. Algorytm jest przejrzysty i łatwo da się go przenieść na c. Załączam także wzór płytki oraz wsad dla chętnych na proste włączanie komputera za pomocą zmodyfikowanego igorpluga

Uwaga! Fuse bity - należy ustawić tak aby układ pracował na 8MHz - czyli w standardowym ustawieniu trzeba wyłączyć dzielenie przez 8!
Pozdrawiam i zachęcam do twórczego leniuchowania!

Skomy
Kilka fotek:








Cool? Ranking DIY