Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Dekoder pilotów IR (ATmega168/328)

RomanWorkshop 27 Jan 2022 18:55 4176 13
Computer Controls
  • Dekoder pilotów IR (ATmega168/328)

    Jest to uniwersalny dekoder pilotów na podczerwień, który obsługuje 42 protokoły transmisji IR (Infra-Red). Umożliwia ustalenie nazwy protokołu oraz wartości adresu i rozkazu, wysyłanego przez testowany pilot po naciśnięciu danego przycisku. Wszystkie informacje są prezentowane na wyświetlaczu LCD 2x16 znaków oraz jednocześnie wysyłane przez interfejs szeregowy USART. Dodatkowo dioda LED swoim świeceniem sygnalizuje odbieranie transmisji IR.

    Sercem dekodera jest mikrokontroler ATmega168 lub ATmega328 taktowany rezonatorem kwarcowym 16 MHz. Zamieszczony program sterujący jest zmodyfikowaną przeze mnie wersją biblioteki "IRMP 3.6.0" (InfraRed Multi Protocol decoder + encoder) dla Arduino (opis zmian w dokumentacji). Sporą zaletą urządzenia jest możliwość dodawania obsługi nowych protokołów transmisji IR, co zapewne będzie realizowane w kolejnych wersjach biblioteki IRMP. Jako odbiornika podczerwieni można użyć dowolnego TSOPXXxx lub podobnego (płytka jest przystosowana do montażu 3 rodzajów czujników z różnym rozkładem wyprowadzeń).
    Obsługiwane protokoły: Sony (SIRCS), NEC, Samsung, Matsushita, Kaseikyo, RECS80, RC5, Denon/Sharp, RC6, Samsung32, Apple, RECS80Ext, Nubert, Grundig, Nokia, Siemens, RC Car, JVC, RC6A, Nikon cam, IR60 (SDA2008), Kathrein, NEC16, NEC42, Lego PF, Thomson, Bose, A1 TV Box, Telefunken, RCMM32, RCMM24, RCMM12, Speaker, LG air, Samsung48 air, Technics, Vincent, SamsungAH, IRMP16, Metz, Onkyo, Melinera.

    Dekoder można zasilać napięciem stałym DC=7-12V z zasilacza lub z baterii/akumulatorów, ale nie z tych dwóch źródeł jednocześnie. Dioda D1 zabezpiecza przed odwrotną polaryzacją napięcia zasilania (występuje na niej spadek 300mV przy prądzie do 100mA). Modelowy dekoder z niebieskim wyświetlaczem LCD z podświetleniem przy napięciu DC=9V, pobierał 37mA prądu w stanie spoczynku (bez wyświetlacza 22mA).
    Zmontowałem go na płytce jednostronnej o wymiarach 82x60mm (bez zworek), wykonanej metodą transferu chemicznego. W rogach płytki znajdują się cztery otwory montażowe o średnicy 3mm, dzięki którym dekoder można przykręcić do obudowy lub zamontować w nich jakieś nóżki w przypadku jej braku. Dwa dodatkowe otwory 3mm na środku płytki służą do przymocowania tulejek dystansowych (wysokość 11-12mm), do których można przykręcić wyświetlacz LCD.

    Dekoder pilotów IR (ATmega168/328) Dekoder pilotów IR (ATmega168/328) Dekoder pilotów IR (ATmega168/328)

    W dołączonym archiwum znajdują się: schemat w Eagle, płytka w DipTrace, wsady dla ATmega168/328, dokumentacja oraz zmodyfikowane pliki źródłowe biblioteki IRMP. Strona projektu: Link.

    IRMPdec.7z Download (296.38 kB)

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    RomanWorkshop
    Level 12  
    Offline 
    RomanWorkshop wrote 137 posts with rating 210. Been with us since 2013 year.
  • Computer Controls
  • #3
    waleryfw
    Level 14  
    Fajny układ . Bardzo przydatny w sprawdzaniu różnych pilotów . Czy może kolega umieścić wzór PCB w Eagle . Ja otwierająć w ver 9.6.2 nie widzę gotowej płytki tylko rozmieszczenie początkowe , połączone ścieżkami , bez ustawienia ostatecznego .
  • Computer Controls
  • #4
    EBL21
    Level 10  
    Można wybrać plik płytki właściwy dla programu DipTrace, otworzyć go w tym programie i wybrać z menu File > Export > Eagle Board..
    Zapisany plik z rozszerzeniem .brd otworzyć pod programem Eagle. Ja używam wciąż wersji 6.4.0 i u mnie w tej wersji programu nie było wypełnienia masą wolnej części płytki, musiałem to w typowy dla Eagle sposób uzupełnić ( narzędzie Polygon, zmiana nazwy polygonu na GND, ustawienie odstępu obszaru masy od ścieżek, Ratsnest).
  • #5
    RomanWorkshop
    Level 12  
    Quote:
    Czy może kolega umieścić wzór PCB w Eagle?

    Nigdy nie robiłem płytek w Eagle i raczej się to nie zmieni. Tak, jak wspomniano DipTrace pozwala na eksport płytki do formatu Eagle, który nie obsługuje otworów innych niż okrągłe (złącze DC-Jack ma owalne).

    Zmniejszyłem z 31.5mm na 31mm odległość pomiędzy złączem wyświetlacza LCD i otworami montażowymi tulejek dystansowych w płytce. Rozstaw ten w moim wyświetlaczu wynosi 31.5mm, a zwykle jest to właśnie 31mm. Wbrew pozorom 0.5mm różnicy w pokryciu otworów utrudnia wkręcenie śrubek. Poprawiona płytka w archiwum w pierwszym poście.
  • #8
    bzyq81
    Level 11  
    Projekcik fajny i bardzo przydatny. Szczególnie jak mamy smartfona z możliwym sterowaniem IR. Niestety jak to w dzisiejszych czasach to sztuka dla sztuki i tylko fajna zabawa. Jak ktoś potrzebuje na szybko to na ESP8266 + jedna dioda odbiorcza i po temacie. Dodając nadawczą mamy sterowanie czymkolwiek przez aplikację lub MQTT.
  • #9
    vstm
    Level 15  
    Zainteresował mnie projekt. Wgrałem wsad autora do uniwersalki. Wszystko zgodnie z zaleceniami. Sprawdzone razy kilka. Działa ale w przypadku NEC podaje niewłaściwe komendy. Na zdjęciu prawy dekoder jest mój (niebieski LCD). Czyta tylko kody NEC, ale na 100% prawidłowo. Jest wykorzystywany codziennie. Lewy to uniwersalka połączona z moim dekoderem tak, że jeden odbiornik IR (38kHz) zasila oba dekodery. Odczyty różne. Na moim dolny wiersz to odczytana komenda, kolejno: Adres, Dec, Hex. Innych protokołów nie mam jak porównać.
    Ale w przypadku RC5 chyba jest ok, bo tam jest dość prosto.
    Dekoder pilotów IR (ATmega168/328)
  • #10
    RomanWorkshop
    Level 12  
    Nie można wykluczyć błędów w bibliotece IRMP, ale najpierw trzeba ustalić, które wskazanie jest prawidłowe. To jest dekoder fabryczny, czy jakiś projekt DIY? Niektóre biblioteki Arduino (np. IRremote) mogą nie podawać rzeczywistych wartości rozkazu/adresu, a tylko 32-bitowy hash kod. Poza tym proponowałbym podłączyć osobny odbiornik IR, żeby wykluczyć wpływ drugiego dekodera na pracę pierwszego.
  • #11
    vstm
    Level 15  
    Prawda, to jest DIY. Sam pisałem bibliotekę. Robię urządzenia symulujące piloty, które to sterują fabrycznymi urządzeniami NEC z pominięciem modulacji IR. Testuję właśnie na tym i wszelkie różnice natychmiast by wyszły. Ale fajnie, że pokazuje co to za pilot - z jakim protokołem.
    Jeszcze jedno, jeśli tester zwraca dane hex to dlaczego są tam liczby z czterema miejscami?
  • #12
    RomanWorkshop
    Level 12  
    Quote:
    Jeszcze jedno, jeśli tester zwraca dane hex to dlaczego są tam liczby z czterema miejscami?

    Dodałem wyrównywanie do 4 cyfr, bo lubię mieć porządek na wyświetlaczu. Nie podobało mi się, że wyświetlają się wartości z różną liczbą cyfr.
  • #13
    RomanWorkshop
    Level 12  
    Zaktualizowałem program sterujący do nowej wersji biblioteki IRMP 3.6.0. Poprawiono w niej timingi i dodano obsługę 8-bitowego adresu w protokole "NEC". Musiałem wyłączyć obsługę protokołu "Mitsubishi air", który w tej wersji koliduje z protokołem "Kaseikyo".

    W poprzedniej wersji 3.5.1 rzeczywiście był problem z wartością adresu NEC. Testowałem 3 piloty i stara wersja pokazuje adresy: E084, FF00 i FE01, a nowa 3.6.0: E084, 0000 i 0001.
  • #14
    rafalekrav40
    Level 11  
    Super projekt. Zmontowałem sobie i odpalił od strzała. Na razie nie znalazłem pilota którego by nie odczytało. Dziękuję i pozdrawiam autora projektu.