logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Mam pomysł, i oczywiście pytanie. sterowanie podczerwienią.

voytasek 10 Kwi 2007 14:44 2584 17
REKLAMA
  • #1 3772825
    voytasek
    Poziom 14  
    Posty: 148
    Ocena: 4
    Wpadłem na genialny pomysł aby ułatwić sobie i innym życie. Na razie nie zdradzę co to ma być, ale jeśli dojdzie do skutku to przedstawię projekt. Owe pytanie to:

    Czy trudno jest "nagrać", a potem wysłać dowolny kod klawisza z dowolnego pilota?

    Po prostu podłączam diodę nadawczą i odbiorczą pod mikrokontroler i to co jedna dioda otrzyma, druga w dowolnym czasie i ilości odtworzy całą sekwencję identycznie (no prawie identycznie, ale w taki sposób, aby urządzenie odbiorcze to zrozumiało).
  • REKLAMA
  • #2 3772922
    Bigfoot
    Poziom 25  
    Posty: 982
    Pomógł: 74
    Ocena: 13
    Nie jest trudno jesli odbior wiazki podczerwieni z pilota wykonujesz przez uklad do tego dedykowany, np TFMS5360. A w Bascomie masz nawet polecenie GETRC5. Zapisujesz wiec gdzies w pamieci wzor kodu wyslanego z pilota a potem juz tylko porownujesz z nim to co wlasnie odebrales.


    BF
  • #3 3773128
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Cytat:
    A w Bascomie masz nawet polecenie GETRC5

    A co wtedy jak pilot będzie nadawał w innym kodzie?
    Robiłem coś podobnego (tylko bez nadawania) dla trzech różnych pilotów i okazało się że pilot LG i pilot Sony nadawały w podobnych standardach ale nie identycznych. Żeby "nagrać" kod to należałoby go rozpoznać więc dla standardowego RC5 nie powinno być problemu :).
  • #4 3775706
    voytasek
    Poziom 14  
    Posty: 148
    Ocena: 4
    właśnie oto chodzi, żeby było to niezależne od standardu w jakim dany pilot nadaje. Myślę tak:

    mikrokontroler w momencie "nagrywania" będzie sprawdzał z maksymalną jego częstotliwością wejście przez jakiś okres. Zapamiętywał tą sekwencje w pamięci (najlepiej zewnętrznej). Gdy zaistnieje potrzeba skorzystania z zapamiętanego przycisku (kodu) to sczytuje z pamięci po kolei sekwencję bitów i wysyła. Wydaje mi się, że gwóźdź programu tkwi w odpowiednim czasie "nagrywania" i częstotliwości sprawdzania wejścia. Dodatkowo chyba będzie potrzebna duża i szybka pamięć.

    Co o tym myślicie?
  • REKLAMA
  • #5 3775890
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Dobrze kombinujesz, tylko musiałbyś się przelecieć po internecie i sprawdzić jaka częstotliwość próbkowania będzie potrzebna. Maksymalna częstotliwość to nie jest dobre rozwiązanie - bardzo szybko wykończy dostępną pamięć. Trzeba tą częstotliwość dobrać optymalnie. Powinna być całkowitą wielokrotnością długości poszczególnych impulsów.

    Aczkolwiek nie wiem czy nie lepszym rozwiązaniem byłoby wyłapywanie czasów zmian stanu wyjścia odbiornika podczerwieni przez mikrokontroler - wystarczy znać długość maksymalną impulsów w kilku standardach. Wymaga zdecydowanie mniej pamięci gdyż zapisywane są tylko istotne dane, a nie wszystko co się w danym przedziale czasu wydażyło.

    W momencie wykrycia zmiany stanu (startu transmisji) odpalasz timer i kiedy zmienia się wartość na wejściu zapisujesz wartość timera do pamięci. Kiedy timer się przepełni - oznacza to koniec transmisji gdyż maksymalny czas ramki został osiągnięty. Wystarczy dobrać odpowiedni czas pracy timera.

    Są na rynku piloty "uczące się" które jak twierdzi producent potrafią nauczyć się kodu dowolnego pilota.
  • REKLAMA
  • #6 3776351
    voytasek
    Poziom 14  
    Posty: 148
    Ocena: 4
    Odnośnie tych pilotów to wiem, że są.

    Kurde nie takie to proste jednak. Chyba najpierw podglądnę sobie oscyloskopem typowe przebiegi z pilotów i w tedy może coś wydumam genialnego i prostego.
  • #7 3778279
    gufiak
    Poziom 21  
    Posty: 444
    Pomógł: 15
    Ocena: 2
    Sprawa nie jest prosta. Po pierwsze trzeba wykonać demodulację. Bo kod cyfrowy nie jest przesyłany w formie zer i jedynek, ale na te zera i jedynki jest nałożony sygnał modulujący o częstotliwości od 30kHz do 56kHz, w zależności od producenta sprzętu. Przy odbieraniu za pomocą zwykłego odbiornika podczerwieni trzeba by było demodulować, albo zaopatrzyć się w sporo pamięci i próbkować sygnał z częstotliwością conajmniej 112kHz, co daje 13,7kB/s. Można ewentualnie zamontować oddzielny odbiornik (z demodulatorem) dla każdej częstotliwości, ale to nie jest tanie, a i trzeba obsłużyć kilka (wiem o 6 częstotliwościach, a może być więcej, do tego dochodzą jeszcze różne parametry modulacji) odbiorników. Jest jeszcze układ LT1319, który idealnie do tego celu się nadaje, ale kosztuje ok. 70zł :) -> http://www.cyfronika.com.pl/semi/cz_ired.htm
  • #8 3778628
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    kolego gufiak trochę przekombinowałeś z tą swoją podpowiedzią ;) ... jakie 112kHz??? o czym ty mówisz? na wyjściu odbiornika podczeriweni TFMS nie widać już nośnej tyllko lecą właśnie zera i jedynki - które mają odpowiednie czasy i w ten sposób zakodowane są ramki lecące z pilotów.

    najlepszy sposób podpowiedział kolega McRancor
    Cytat:
    "W momencie wykrycia zmiany stanu (startu transmisji) odpalasz timer i kiedy zmienia się wartość na wejściu zapisujesz wartość timera do pamięci. Kiedy timer się przepełni - oznacza to koniec transmisji gdyż maksymalny czas ramki został osiągnięty. Wystarczy dobrać odpowiedni czas pracy timera."



    użyj timera 16bitowego - ustaw mu sporą rozdzielczość tak aby mógł mierzyć czasy z zakresu od 0,1ms do powiedzmy 20ms i "wyłapuj" lecące ramki. Trzeba dobrać sobie jeszcze czas lub jakieś kryterium końca ramki albo na żywca zapamiętywać np jakiś odczinek czasu w którym "nagra" się jedno włączenie/kliknięcie klawisza na pilocie. Potem wystarczy tylko dokładnie ten przebieg odtworzyć. A pamięci nie zużyjesz dużo bo nie będziesz zapamiętywał próbkowanego sygnału (szkoda zachodu) tylko wartości poszczególnych czasów i przyporządkowanych im stanów logicznych. Na koniec wypuszczasz ten przebieg na diodę nadawczą IR i masz. Fakt trzeba się z tym troszkę pobawić ale nie jest to takie trudne do zrobienia w końcu. No i możesz uczyć swoje urządzenie kodów różnych pilotów. Tylko w czasie nauki trzeba krótko naciskać klawisz którego ma się urządzenie "nauczyć" albo nieco dłużej gdy ma się nauczyć powtarzania kodu - trzeba to oddzielnie nagrywać ponieważ nie zawsze w przypadku dłuższegi przytrzymania klawisza jest tylko powtarzana co jakiś czas ta sama ramka - w niektórych standardach po kodzie klawisza (jeśli cały czas go trzymamy) leci tylko krótka sekwencja, która mówi że klawisz jest cały czas wcisnięty lub też leci ramka ale zanegowana itp. Więc później w swoim urządzeniu nadawczym trzeba samemu badać czy klawisz jest dłużej przyciśnięty aby wygenerować odpowiednio albo kod jednokrotnego wciśnięcia albo generować kod klawisza a za nim samą ramkę powtarzającą

    pozdrówka
  • #9 3778665
    gufiak
    Poziom 21  
    Posty: 444
    Pomógł: 15
    Ocena: 2
    mirekk, nie przekombinowałem. Nie pisałem o TFMS'ie, bo w takim przypadku oczywiście masz rację. Ale jeśli ktoś chce zczytywać kody z dowolnego pilota, to niestety, ale TFMS odpada, bo te odbiorniki demodulują tylko sygnał o określonej częstotliwości. W takim przypadku trzeba zastosować odbiornik bez demodulatora i przeprowadzać demodulację programowo, w procesorze (albo zapisać w pamięci zmodulowany sygnał). Czyli trzeba próbkować sygnał z conajmniej dwukrotnie większą częstotliwością, czyli 112kHz.
  • REKLAMA
  • #10 3778719
    voytasek
    Poziom 14  
    Posty: 148
    Ocena: 4
    mirekk36 napisał:

    najlepszy sposób podpowiedział kolega McRancor


    No tak, teraz sobie to wyobraziłem i w sumie myślę, że warto by było spróbować ten sposób, ponieważ nic mnie praktycznie nie kosztuje:)

    Nasuwają się kolejne pytania. Mikrokontroler jaki bym chciał zastosować to z rodziny '51 (na tą chwilę te w miarę umiem). Zasilanie, przeważnie w pilotach, to dwie baterie, czyli 3V... a większość uC są na 5V oraz 3,3V. czy te na 3,3V pójdą na napięciu dwóch baterii? Oczywiście tryby pracy uC jako oszczędny w chwili gdy nie pracuje.
  • #11 3778767
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Możesz zastosować kilka odbiorników TFMS na kilka wybranych pasm podczerwieni - co prawda pracują w granicach 5V, ale może się uda i będą działały na 3v3. Nie wiem czy nie lepiej byłoby zrobić przetwornicę generującą 5V z baterii, albo zastosować baterię 9V.
  • #12 3778858
    gufiak
    Poziom 21  
    Posty: 444
    Pomógł: 15
    Ocena: 2
    Cytat:
    No tak, teraz sobie to wyobraziłem i w sumie myślę, że warto by było spróbować ten sposób, ponieważ nic mnie praktycznie nie kosztuje:)
    No tak, tylko weź poprawkę na to, że jak skorzystasz z TFMS'a, to Twój pilot odczyta tylko kody pilotów wysyłających sygnał zmodulowany konkretną częstotliwością, określoną przez typ TFMS'a.

    Cytat:
    a większość uC są na 5V oraz 3,3V. czy te na 3,3V pójdą na napięciu dwóch baterii?
    Zależy od procesora. Sporo działa poprawnie już od 2,7V, ale warto przejrzeć karty katalogowe procesora przed wybraniem jego. Problem z tym, że właśnie zwykły TFMS nie będzie działał przy takim napięciu. Więc, albo to co napisał McRancor, albo poszukasz odbiornika na 3V (nie widziałem takich, ale wierzę, że istnieją)
  • #13 3779161
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    kolega gufiak napisał:
    Cytat:
    "No tak, tylko weź poprawkę na to, że jak skorzystasz z TFMS'a, to Twój pilot odczyta tylko kody pilotów wysyłających sygnał zmodulowany konkretną częstotliwością, określoną przez typ TFMS'a."


    - naprawdę nie upieraj się kolego przy tym, że nie można jednego TFMS'a o wybranej środkowej częstotliwości nośnej np 36-38kHz zastosować jako uniwersalnego dla dowolnego pilota. Na pewno można - i to bez problemu. Po pierwsze spójrz sobie na wykresy jak one ograniczają pasmo - nie dzialają przecież jak brzytwa na krańcach prawda? po drugie - praktycznie oznacza to tylko to, że jeśli akurat będziemy próbowali za pomocą tego odbiornika tylko "uczyć" nasze urządzenie, czyli będziemy przesyłali kody z b.bliskiej odległości nadajnik(pilot) - odbiornik(nasz TFMS) to zapewniam cię, że to najspokojniej w świecie się uda i to nawet jeśli weźmiesz np pilota nadającego na nośnej 42kHz a TFMS będzie np 36kHz (albo jeszcze mniejszy). To jest normalne a TFMSy mają b.dużą czułość i nie mówię tego tylko na podstawie wykresów i not ale też na takiej podstawie, że sam to empirycznie próbowałem gdy np ustawiłem nośną 36kHz i sterowałem urządzenie, które miało TFMS'a 42kHz. Efekt był tylko taki, że zasięg się tylko zmniejszył do ok 3-4m. A gdy nadawałem na właściwej nośnej to odrazu był dużo większy. Więc nie mieszajmy autorowi w głowie - przy jego konstrukcji do celów amatorskich na pewno będzie to spełniało swoje zadanie.

    co do zasilania tego typu odbiorników podczerwieni to nie trzeba długo szukać - sporo jest wersji na napięcia 3,3V lub 5V do wyboru. Wystarczy wejść do dowolnego sklepu w necie, który ma ich większą ilość w sprzedaży.

    jeśli kolega autor programuje w asemblerze to mogę podrzucić stronkę na której jest wprawdzie przykład odbiornika w RC5 ale fajnie widać jak można się tym posługiwać. Chyba że kolega pisze w C ?

    pozdrawiam
  • #14 3779645
    voytasek
    Poziom 14  
    Posty: 148
    Ocena: 4
    Piszę w asemblerze. Przeglądałem notę tych TeFeeMSów i się zdziwiłem, bo myślałem, że tam siedzi dioda odbiorcza:) a tu jest cały układ demodulacji. Pierwotnie chciałem podpiąć tylko diodę odbiorczą pod procka i "nagrać - wiadomo już mniej więcej jak" sygnał, który na nią pada.

    Generalnie rzecz biorąc, kiedyś w bascomie bawiłem się w odbiornik rc5, więc został mi jeden taki TeFeeMeS. W ich nocie są wykresy czasowe, które dopiero przestudiuję, aby dobrać optymalny czas "nagrywania". Napięcie zasilania Vs (od -0,6V do +6V) sugeruje, że odbiornik ten zadziała przy napięciu 3,3V

    w scalone odbiorniki kodu nie chcę się bawić, bo to jest prototyp, a budżet jest ograniczony.

    Podpowiem, że to nad czym myślę, to w pewnym sensie zastępczy pilot, gdzie pod konkretne przyciski wstawiamy inne przyciski z różnych pilotów, dodatkowo liczba przycisków jest jak najbardziej minimalna aby zapewnić najprostszą kontrole urządzeń znajdujących się w danym pokoju. Ot taka sobie zabawka, bo wku***a mnie liczba pilotów jaką trzeba mieć przy sobie, aby się zrelaksować przed np. TV. powiecie - kup sobie pilot uniwersalny! A ja na to, że nie chce, bo w końcu jestem młodym elektronikiem i takie coś powinienem umieć zrobić:)
  • #15 3779696
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Zajrzałeś nie do tej tabelki - absolute maximum ratings to dopuszczalne parametry które scalak może wytrzymać.

    Napięcie zasilania - supply voltage powinno zawierać się w przedziale 4,5-5,5V. Przy 3v3 te sprzęty nie chcą działać poprawnie.
  • #16 3780163
    gufiak
    Poziom 21  
    Posty: 444
    Pomógł: 15
    Ocena: 2
    mirekk36, skoro tak piszesz, to wierzę, że masz rację. Nigdy nie próbowałem używać tych odbiorników do pilotów o innych częstotliwościach niż są przeznaczone. Chciałbym jeszcze tylko poruszyć kwestię nadawania. W końcu trzeba nadawać też z jakąś częstotliwością. Można i tutaj wybrać jakąś środkową częstotliwość, ale o ile w przypadku odbioru zasięg nie gra aż tak dużej roli, o tyle w przypadku nadawania zasięg jest dosyć istotny. Te 3-4m są jeszcze do przyjęcia, ale jeśli urządzenie będzie miało czujnik o węższej charakterystyce (bo szczerze mówiąc TFMS'y nie często spotykam w sprzęcie domowym), to zasięg może naprawdę drastycznie spaść. Ale oczywiście nie twierdzę, że tak napewno będzie. Chcę tylko nakreślić autorowi, z jakimi problemami może się spotkać. Jeśli zasięg nie jest aż tak istotny, to myślę, że można spokojnie robić na TFMS'ach. Ewentualnie można dać dwa TFMS'y, jeden na np. 36kHz, a drugi na 56kHz. I ustawiać nośną zależnie od tego z którego odbiornika sygnał dotrze. A jak na dwóch będzie sygnał, to ustawić nośną gdzieś na środku.
  • #17 3780583
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    kolego gufiak -> oczywiście, że teraz się z tobą zgodzę - pewnie, że będą czasem urządzenia, które mogą mieć odbiorniczki z inną charakterystyką i ten zasięg może się dla nich zmienić - ale jak to bywa w przypadku uniwersalności zawsze coś za coś musi być. Poza tym w urządzeniu nadawczym można zastosować w miarę możliwości oczywiście zasilania ;) odpowiednio maksymalną moc nadawania czyli prąd dla diod IR. A jeszcze innym nawiasem mówiąc ciekawy jestem czy celem autora jest zbudowanie super kosmicznego urządzenia które potrafi nauczyć się obsługiwać miliony rodzajów pilotów czy też porpostu jego celem jest to aby mogło ono obsłużyć ten najbardziej dostępne że tak powiem "w przyrodzie" czyli wokół nas. A wbrew pozorom nie ma ich aż tak wiele rodzajów i do tego większość z nich naprawdę nadaje na bardzo podobnych nośnych

    pozdrawiam
  • #18 3780670
    voytasek
    Poziom 14  
    Posty: 148
    Ocena: 4
    kolego McRancor masz rację, bo coś mi tu nie pasowało.

    Kolego mirekk36 naturalnie, że nie wszystkich:) Docelowo kilka producentów sprzętu. Jeśli trzeba to wymienię. Chodzi o to, alby na początek pilot umozliwiał takie funkcje:
    przyciskami VOLUME+/- regulować np głos w DVD, przyciskami 0,1,...9 oraz PROGRAM+/- wybierać kanały na np. Cyfrze+/Polsacie natomiast przyciskiem POWER włączać/wyłączać TV,DVD,Cyfrę/Polsat
    Suma summarum mamy minimum 15 przycisków do sterowania i 1 do "nagrywania". Zatem klawiatura wstępnie matrycowa 4x4.

Podsumowanie tematu

✨ Dyskusja dotyczy realizacji uniwersalnego systemu sterowania podczerwienią, który umożliwiłby "nagrywanie" i odtwarzanie dowolnych kodów z pilotów IR niezależnie od standardu transmisji. Proponowane rozwiązanie opiera się na mikrokontrolerze (rodzina 8051) z podłączonymi diodami nadawczą i odbiorczą IR. Kluczowym wyzwaniem jest odpowiedni sposób próbkowania sygnału IR – zamiast próbkowania z bardzo wysoką częstotliwością (np. 112 kHz) sugerowane jest rejestrowanie czasów trwania impulsów i przerw, co znacznie zmniejsza zapotrzebowanie na pamięć. W dyskusji poruszono kwestie demodulacji sygnału, gdyż sygnał IR jest modulowany nośną o częstotliwości od 30 do 56 kHz, co wymaga zastosowania odbiorników z demodulatorem (np. TFMS5360) lub demodulacji programowej przy użyciu odbiornika bez demodulatora. Zastosowanie odbiorników TFMS jest wygodne, ale ogranicza odbiór do określonych częstotliwości nośnych, co może być wystarczające dla większości popularnych pilotów. Wskazano również na problem zasilania mikrokontrolera i odbiorników IR – typowe napięcie zasilania pilotów to 3 V, podczas gdy wiele układów wymaga 3,3 V lub 5 V, co może wymagać zastosowania przetwornicy lub innego źródła zasilania. Projekt ma na celu stworzenie prostego, budżetowego prototypu zastępczego pilota, który pozwoli na sterowanie kilkoma urządzeniami (TV, DVD, dekodery) za pomocą minimalnej liczby przycisków, z funkcją "nauki" kodów z oryginalnych pilotów. Wskazano, że do zapisu sygnału najlepiej używać pomiaru czasów trwania impulsów i stanów logicznych, co pozwala na wierne odtworzenie sygnału IR bez konieczności zapisywania całego przebiegu modulowanego sygnału.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA