Sterowanie obojetnie jakim pilotem za pomocą AVR

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
fluke2010
-
Posty: 31
Rejestracja: 16 maja 2010, 18:11
Lokalizacja: lubuskie

Sterowanie obojetnie jakim pilotem za pomocą AVR

Post autor: fluke2010 » 14 maja 2011, 13:36

witam.

Przymierzam się do sterowania jakiegoś urządzenia za pomocą pilota.
Z tym że pilot nie jest w RC5 czy innym znanym standardzie.
Chodzi mi o to ze załóżmy przygotowuję procka do odbioru i zapamiętania danych z pilota obojętnie jakiego,
wysyłam sygnał z pilota, procesor zapamiętuje te dane i zapisuje w pamięci eeprom. Czyli tryb zapamiętywania kodu.

Kod mamy zapamiętany. Teraz jeśli wysyłam sygnał z pilota to procesor porównuje odebrane dane z danymi w eepromie i jeśli są takie same to
wykonuje jaką funkcje.

Robił możne ktoś coś takiego, da się to zrealizować ?
Pilot np od dekodera cyfry + , czy jakiegoś TV, albo wzmacniacza.

pozdrawiam.

Awatar użytkownika
kayron
Użytkownik
Posty: 2079
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 14 maja 2011, 13:50

No nie wiem czy tak łatwo ci się to uda zrobić.
Inna sprawa to to że standard RC5 wcale do popularnych nie należy, wiekszość urzadzeń używa SIRC.
Druga sprawa to że różne piloty będą używać różnej częstotliwości nośnej, co może nie tyle komplikuje program co układ odbiornika, no chyba że chcesz wszystko robić programowo, ale wtedy będzie potrzebny szybki procesor i dosyć zaawansowany algorytm DSP (może Algorytm Goertzela byłby tu przydatny, ale ja z DSP jestem raczej słaby). Znaczy się bez przesady ATTiny45 lub 461 powinna to uciągnąć
.Ogólnie układ będzie musiał być dosyć szybkim analizatorem stanów logicznych pracującym z częstotliwością ok. 100 do 200KHz.(próbkowanie danych z odbiornika IR) z możliwością wykrywania wzorca.
PS. kiedyś jeszcze na 89C2051 próbowałem walczyć z tematem, ale z mizernym skutkiem i ogólnie nie jest to takie proste do zrealizowania jak by się mogło pierwotnie wydawać.

fluke2010
-
Posty: 31
Rejestracja: 16 maja 2010, 18:11
Lokalizacja: lubuskie

Post autor: fluke2010 » 15 maja 2011, 13:15

No to mnie nie pocieszyłeś, myślałem ze to będzie łatwiejsze.
Chciałem wykonywać tylko jedną funkcję typu włącz-wyłącz, ale własnym jakimś pilotem.

Awatar użytkownika
kayron
Użytkownik
Posty: 2079
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 15 maja 2011, 14:12

Jeżeli chcesz dekodować tylko na zasadzie włącz-wyłącz to nie jest tak źle, gorzej jak byś chciał dekodować nr. klawiszy, czy rozpoznawać konkretny pilot.
Ogólnie zacząć by należało od samego odbiornika, czyli albo rozwiązanie na TBA2800
Obrazek
lub coś nowszego na S4810, oraz rozpatrzenia jak najlepiej to podłączyć do CPU.
Potem algorytm uczenia się który powinien składać się z:
- detekcji częstotliwości nośnej (36, 40, 38 KHz itd), czyli szybkiego miernika częstotliwości.
- dekodera standardu kodowania RC5, RC6, SIRC, JVC itd. Ogólnie to chyba najtrudniejsza część do zrealizowania, biorąc pod uwagę ile ich jest. Teoretycznie można do tego wykorzystać tgz. Start Blok (najczęściej są to pierwsze 2-3 sekwencje o nietypowym czasie trwania), ale nie wszystkie systemy kodowania go mają np. wspomniany RC5 go nie ma, a RC6 już tak (ale i tak niestandardowy bo 5 bitowy). sytuacje pogarsza fakt że często w tym samym standardzie, są różne długości nadawanych słów bitowych, najczęściej 12, 16, 20.
- zapisywania ustawień.
No i najważniejsze pytanie na jakim CPU to chcesz robić i w jakim języku programowania ?
Ale bez zaprzęgnięcia do tego dwóch Timerów może być trudno.
Ogólnie sam myślę jak coś podobnego zrobić, ale mój układ ma być raczej radarem na IR niż dekoderem dowolnego pilota, więc kilka kwestii mi odpada.
PS. ogólnie do badań przydał by się oscyloskop cyfrowy, lub analizator stanów logicznych, ale nie wiem czy karta dźwiękowa komputera podoła do takiego celu :?: Chodzi o to że należało by nagrać przebiegi z kilku różnych pilotów i je przeanalizować.

fluke2010
-
Posty: 31
Rejestracja: 16 maja 2010, 18:11
Lokalizacja: lubuskie

Post autor: fluke2010 » 15 maja 2011, 22:27

chciałem zastosować jako odbiornik TFMS5360, procesor attiny 2313, bo mam ich parę, chyba ze mało 2 kb to coś większego. Program w bascom ( uczę się powoli tego języka ).

Zrzuciłem 2 przebiegi z pilotów, na plik.
Interesowało by mnie "złapanie" kodu z rys 2 ( pilot cyfrowego polsatu ).
Na razie nie wiem jak to zrobić, szukam informacji.
Jeszcze co mi do głowy przyszło to ze jedno wciśniecie pilota nie wykona funkcji, ale np trzykrotne naciśniecie jednego przycisku w ciągu 3 sekund.
Załączniki
1.JPG
2.JPG

Awatar użytkownika
kayron
Użytkownik
Posty: 2079
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 16 maja 2011, 6:14

Po czasie trwania impulsu START i/lub całej ramki określisz jaki to system kodowania. Zdjęcia są dosyć małe i słabo czytelne, ale jeżeli oba pierwsze impulsy mają po 4ms to może być standard RCA. Jak znajdziesz jaki to standard to jesteś już w domu, bo samo dekodowanie do najtrudniejszych nie należy.
Jak używasz TSOPów to sprawa jest prostsza, początkowo myślałem że chcesz zrobić układ który da się sterować każdym pilotem, jaki dorwiesz.
Załączniki
IR_protokol.jpg

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 16 maja 2011, 21:10

Jest taka strona: http://lirc.sourceforge.net/remotes/ z kodami pilotów. Robiłem z niej pilota do aparatu, być może znajdziesz tam co nadają konkretne piloty które cię interesują.

Awatar użytkownika
kayron
Użytkownik
Posty: 2079
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 17 maja 2011, 8:57

Załóżmy że mam ten pilot (bo w sumie mam):
Obrazek
No to jak rozumieć jego opis ?

Kod: Zaznacz cały

begin remote

  name  Leadtek_Y04G0004
  bits           16
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       9049  4452
  one           604  1642
  zero          604   519
  ptrail        602
  repeat       9050  2206
  pre_data_bits   16
  pre_data       0xC03F
  gap          107841
  toggle_bit      0


      begin codes
          Power                    0x00FF
          TV                       0x6A95
          FM                       0xEA15
          DVD                      0x1AE5
Znaczy się wiem ze emituje 16 bitów, czas sekwencji startowej to header 9049 4452 us. Ale co ma być pierwsze stan wysoki czy niski? Ogólnie ten opis jest nieco nieczytelny.
Tzn. po tych czasach mogę zgadywać że to standard NEC.

ODPOWIEDZ