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

Arduino Mega2560 - odbieranie sygnału IR, pilot od helikoptera

adriand1281 17 Sty 2015 11:33 1917 15
REKLAMA
  • #1 14338930
    adriand1281
    Poziom 10  
    Posty: 9
    Witam wszystkich.
    Proszę nie usuwać tematu, wiem że jest artykuł na ten temat, lecz nie mogę w nim znaleźć rozwiązania tego problemu.
    Mam problem z odbieraniem sygnału IR z pilota od zdalnie sterowanego helikoptera.
    Działa on prawdopodobnie na częstotliwości 38KHz. podłączyłem odbiornik IR do Arduino, i niby odbiera kod ale, nie mogę sobie poradzić z rozszyfrowaniem informacji jakie zawiera, z tego co znalazłem w necie każdy bajt danych powinien odpowiadać za coś innego. A w kodzie który odbieram nie widzę żadnego schematu jakby bit zmieniały się losowo. Nie wiem czy niepoprawnie odbieram sygnał IR, czy coś innego skopałem. Dodam że pilot jest na pewno działa poprawnie. Mam nadzieję że ktoś pomoże mi rozwiązać ten problem.
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Kod odbierany przez Arduino

    Spoiler:
    52 10111000001001101111111100100111
    52 11000001100001010101011100110011
    52 110001010110000110010101000110
    52 11110110100000100000010111001100
    52 11001011110100100000111101011
    52 11101011010000110110111001011001
    52 10001111110010110011101001011111
    52 11111001000111100010110011000110
    52 10101100001110001110101111000
    52 11010010001011110001101110101110
    52 10010110100110010001011011110110
    52 1010100000000100101110001101101
    52 10101101110001101000110101011011
    52 11001000110101110001100011110101
    52 10000010001010001011111110010000
    52 10101101110001101000110101011011
    52 11110110110100101111111011000
    52 10101101110001101000110101011011
    52 10101101110001101000110101011011
    52 11010101110010010000101011101000
    52 11010101110010010000101011101000
    52 10101101110001101000110101011011
    52 10101101110001101000110101011011
    52 10101101110001101000110101011011
    52 10101101110001101000110101011011
    52 10101101110001101000110101011011
    52 1110110111010100011100100100100
    52 10101101110001101000110101011011
    52 1010111100010110110001011001000
    52 100000110101101011010110001001
    52 10101101110001101000110101011011
    52 10101101110001101000110101011011
    52 10101101110001101000110101011011
    52 10110011010111101101110000000011
    52 11001110011100110101011100100000
    52 10110011010111101101110000000011
    52 11011010111010001110000011111010
    52 101000001101010011110010011001
    52 10110011010111101101110000000011
    52 1101001010110100101011001000000
    52 1110001011000110010111001001010
    52 10110011010111101101110000000011
    52 10110011010111101101110000000011
    52 10110011010111101101110000000011
    52 10000001010101111000100001010001
    52 1110111010110001010001110001000
    52 10110011010111101101110000000011
    52 10110011010111101101110000000011
    52 110010011100101110011011010000
    52 1101011100110000000001010000000
    52 10110011010111101101110000000011
    52 10101010111100000110000011000101
    52 11001101010110100101001110010001
    52 10110011010111101101110000000011
    52 10011011011000011010100111110010
    52 11110100101000101001000010010000
    52 1000110011001101110101101011001
    52 10110011010111101101110000000011
    52 1101011100110000000001010000000
    52 10110011010111101101110000000011
    52 10010111010000100010100110100010
    52 10101100001010000100111001101110
    52 10111010101110111011111000101000
    52 1101011100110000000001010000000
    52 10110011010111101101110000000011
    52 10110011010111101101110000000011
    52 101011101010010000000011011001
    52 10110011010111101101110000000011
    52 10111010101110111011111000101000
    52 11101100111110001011000001000010
    52 10110011010111101101110000000011
    52 10100010010000100010011010000011
  • REKLAMA
  • #2 14339014
    piotr411
    Poziom 22  
    Posty: 483
    Pomógł: 43
    Ocena: 45
    Przecież jest to nadawanie PULSE, a nie ASCII, po RS232 tego nie odczytasz.
  • REKLAMA
  • #3 14339027
    adriand1281
    Poziom 10  
    Posty: 9
    A jest jakiś prosty sposób na odebranie tego sygnału?
  • REKLAMA
  • #4 14339069
    piotr411
    Poziom 22  
    Posty: 483
    Pomógł: 43
    Ocena: 45
    Jest, oczywiście, ale jeśli naprowadzę Cię na rozwiązanie to popełnię przestępstwo tak zwany reverse engineering. Pewnie za próbę hakowania kodu post trafi do kosza.

    Link
  • #5 14339091
    adriand1281
    Poziom 10  
    Posty: 9
    Czy inżynieria wsteczna jest przestępstwem? Widziałem na elektrodzie artykuły, gdzie stosowano reverse engineering.
    Widziałem ten artykuł tylko nie ogarniam, jak odebrać ten sygnał przez arduino.
  • #6 14339123
    piotr411
    Poziom 22  
    Posty: 483
    Pomógł: 43
    Ocena: 45
    Można "podsłuchać" wysyłane kody podłączając do wejścia audio komputera wyjście diody IR w nadajniku. Wystarczy pobrać darmowy program Audacity i podglądnąć na wykresie przebiegi. Wygenerować na dowolnym pinie odpowiednie stany w odpowiednim czasie i masz gotowca.
  • #7 14339134
    adriand1281
    Poziom 10  
    Posty: 9
    Dzięki za wskazówkę.

    Dodano po 37 [minuty]:

    Mam jeszcze jedno pytanie w jaki sposób odebrać te dane w arduino, chciał bym użyć tego pilota do sterowania inną zabawką.
  • #8 14339517
    piotr411
    Poziom 22  
    Posty: 483
    Pomógł: 43
    Ocena: 45
    Odbierać jest nieco trudniej. Program jest bardziej rozbudowany, nieco wyższa szkoła jazdy. Dla Arduino raczej nie pomogę, w czystym C, Bascom, Asembler , tu są moje preferencje. W Bascom chyba najłatwiej bo są gotowe polecenia liczące długości implusów Pulsein i do nadawania Pulseout


    For 38kHz mode:
    
    Command duration:     180  ms
    Header High Duration: 2.04 ms
    Header Low Duration:  2    us
    Pulse width:          380  us 
    Low duration for 0:   220  us
    Low duration for 1:   600  us
    For 57kHz mode, everything is the same except the following:
    
    Command duration:     160  ms
    Low duration for 1:   660  us
    With this information on hand, we can decode each of the IR signals captured above as follows (in the stacked waveform graph above, No. 00 is the one on the bottom):
    
    No. Throttle  Direction                  Binary                              Dec(Hex)
    00    ~0%      Middle       00111100 00111111 10001011 00110100    60(3C)  63(3F)  139(8B) 52(34)
    01   ~25%      Middle       00111100 00111111 10100111 00110100    60(3C)  63(3F)  167(A7) 52(34)
    02   ~50%      Middle       00111100 00111111 11001000 00110100    60(3C)  63(3F)  200(C8) 52(34)
    03   ~75%      Middle       00111100 00111111 11100110 00110100    60(3C)  63(3F)  230(E6) 52(34)
    04   100%      Middle       00111100 00111111 11111101 00110100    60(3C)  63(3F)  253(FD) 52(34)
    05   100%      Left         01101010 00111111 11111101 00110100    106(6A) 63(3F)  253(FD) 52(34)
    06   100%      Right        00001000 00111111 11111101 00110100    8(8)    63(3F)  253(FD) 52(34)
    07   100%      Forward      01000000 00000001 11111101 00110100    64(40)  1(1)    253(FD) 52(34)
    08   100%      Backward     00111100 01111110 11111111 00110100    60(3C)  126(7E) 255(FF) 52(34)
    09    ~0%      Left         01101010 00111111 10001101 00110100    106(6A) 63(3F)  141(8D) 52(34)
    10    ~0%      Right        00001000 00111111 10001101 00110100    8(8)    63(3F)  141(8D) 52(34)
    11    ~0%      Forward      01000000 00000001 10001101 00110100    64(40)  1(1)    141(8D) 52(34)
    12    ~0%      Backward     00111100 01111101 10010001 00110100    60(3C)  125(7D) 145(91) 52(34)
  • #9 14339531
    adriand1281
    Poziom 10  
    Posty: 9
    A miałbyś jakiś przykład w C, chciał bym zobaczyć jak taki kod wygląda.
  • REKLAMA
  • #10 14340773
    Konto nie istnieje
    Konto nie istnieje  
  • #11 14341660
    linuxtorpeda
    Poziom 26  
    Posty: 823
    Pomógł: 93
    Ocena: 295
    http://www.sbprojects.com/knowledge/ir/index.php baza wiedzy na temat komunikacji IR, choć bardziej dotyczy TV niż helikopterów
  • #12 14342103
    adriand1281
    Poziom 10  
    Posty: 9
    Nagrałem przebiegi sygnałów wysyłanych na Diodę IR. Nie za bardzo wiem jak to przeanalizować, wychodzą ni z tego głupoty. Są to ustawienia drążka przepustnicy dla wychylenia 25%, 50%, 75% i 100%

    Arduino Mega2560 - odbieranie sygnału IR, pilot od helikoptera
  • #13 14349718
    piotr411
    Poziom 22  
    Posty: 483
    Pomógł: 43
    Ocena: 45
    Chyba wiesz jak opisać każdy stan?

    Arduino Mega2560 - odbieranie sygnału IR, pilot od helikoptera


    1 - StanL1+StanH2
    czyli:
    PINA.1 = 0
    waitus 25
    PINA1 = 1
    waitus 50

    0 - StanL2+StanH1
    czyli:
    PINA.1 = 0
    waitus 50
    PINA.1 = 1
    waitus 25

    Synchro - 4x0
    czyli:
    PINA.1 = 1
    waitus 300

    Wartości 25uS, przyjęta jako przykładowa, w Audacity masz na pasku ile trwa przebieg. Całe słowo składa się z 25 bajtów, bajt z 3 bitów, w przykładzie czas jednego wysyłanego bajtu wynosi 75us. Całe słowo trwa 300us+25x75us= 2175us
    Jeśli zamiast diody dasz nadajnik ASK i zasilisz 12V zasięg wyniesie od 200-1000m
  • #15 14484409
    adriand1281
    Poziom 10  
    Posty: 9
    Próbowałem tej biblioteki jako pierwszej, ale za jej pomocą nie da się odbierać tych sygnałów. w pierwszym poście dodałem co odebrałem za pomocą tej biblioteki.
  • #16 14485430
    piotr411
    Poziom 22  
    Posty: 483
    Pomógł: 43
    Ocena: 45
    Proszę "gotowy" przykład odbioru kodu z pilota w Bascom, bez korekcji oscylatora, czyli wersja absolutnie podstawowa.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    W Arduino też jest Pulsein, co wystarczy lekko przerobić

    Kod: text
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

✨ Użytkownik ma problem z odbieraniem sygnału IR z pilota do zdalnie sterowanego helikoptera, który działa na częstotliwości 38 kHz. Po podłączeniu odbiornika IR do Arduino, kod jest odbierany, ale nie można go poprawnie zdekodować. Uczestnicy dyskusji sugerują, że sygnał jest nadawany w formie impulsów, a nie jako dane ASCII. Proponują różne metody analizy sygnału, w tym użycie programu Audacity do "podsłuchania" wysyłanych kodów oraz przykłady kodu w Bascom i C do odbioru sygnałów. Wskazówki dotyczące długości impulsów i struktury sygnału IR są również podane, co może pomóc w dekodowaniu sygnału.
Wygenerowane przez model językowy.
REKLAMA