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

Prosty sniffer na pasmo 433 MHz

ghost666 07 May 2021 17:14 15171 5
  • Prosty sniffer na pasmo 433 MHz
    Moduły transceiverów RF pracujące w pasmie 433 MHz są od dawna bardzo popularne wśród hobbystów. Te tanie moduły radiowe mimo krótkiego zasięgu mają wiele zalet. Mogą być używane z prawie wszystkimi mikrokontrolerami do szerokiego zakresu zastosowań, które wymagają bezprzewodowego sterowania radiowego. W tym projekcie wykorzystamy ten moduł jednak w innym celu - do analizowania pakietów, jakie wysyłane są w eter przez inne urządzenia.

    Pasmo ISM, skupione wokół częstotliwości 433,92 MHz, w rzeczywistości obejmuje kilka pasm o szerokości 1,7 MHz każde, pomiędzy 433,05 MHz a 434,79 MHz. Analiza tych sygnałów nie jest jednak prosta. Po pierwsze, gdy odbiornik nie odbiera sygnału, obwód AGC (automatycznej kontroli wzmocnienia) odbiornika jest podkręcony na maksa, więc na wyjściu danych często obserwowany może być szum. Utrudnia to faktyczne uchwycenie szybkich danych w morzu szumu za pomocą np. domowego analizatora logicznego czy karty dźwiękowej lub zwykłego oscyloskopu. Po odebraniu danych następuje około 100 milisekund ciszy radiowej, zanim AGC zwiększy wzmocnienie do maksimum. Pozwala to na wyszukanie ciszy radiowej, a następnie natychmiastowe wyszukanie danych w celu wykrycia sygnału.

    Konfiguracja urządzenia

    Sygnały radiowe na ogół analizuje się drogimi i złożonymi systemami. Jednakże korzystając z transceivera 433 MHz można z łatwością zestawić prosty układ do analizowania przesyłanych pakietów. Układ ten pozwala w prosty i tani sposób odbierać dowolne sygnały w tym pasmie i analizować przesyłane dane.

    Przedstawiono prosty i tani Sniffer - jest idealny do testowania układów i inżynierii wstecznej większości urządzeń bezprzewodowych korzystających z transmisji 433 MHz. Jak widać - całość do działania potrzebuje jedynie Arduino z podłączonym odbiornikiem 433 MHz i interfejsem USB, który służy do komunikacji np. z komputerem.

    Kod do przechwytywania sygnałów 433 MHz jest w rzeczywistości nieco zmodyfikowaną częścią biblioteki „RCSwitch” (patrz tutaj). Poniżej pokazano schemat połączeń Arduino z odbiornikiem i komputerem.

    Prosty sniffer na pasmo 433 MHz


    Oprócz monitora szeregowego Arduino IDE, do połączenia się z modułem wykorzystać można również np. PuTTY. Można też wykorzystać telefon lub tablet z Androidem i USB-OTG. Wystarczy zainstalować np. DroidTerm i uruchomić jego opcję „Wirtualny port szeregowy USB” (prędkość transmisji 9600).

    Do przetestowania urządzenia autor skorzystał z prostego dwukanałowego pilota 433 MHz do wysyłania kodów do sniffera.

    Oto szkic firmware:

    Code: c
    Log in, to see the code


    Prosty sniffer na pasmo 433 MHz
    Po lewej stronie znajduje się zrzut ekranu z telefonu. Procedura jest prosta: wystarczy otworzyć monitor szeregowy i ustawić prędkość transmisji na 9600. Po naciśnięciu przycisków na nadajniku zdalnego sterowania 433 MHz odebrane zostają kody RF, które powinny zostać wypisane w postaci Liczby w zapisie dziesiętnym i binarnym oraz zidentyfikowany protokół. Pierwszy wynik - z przycisku A na pilocie to liczba 2220642 i protokół 1. Dziesiętna liczba (24 bity) 2220642 = 0b001000011110001001100010.

    Nawiasem mówiąc, protokół urządzeń RF 433 MHz jest dość interesujący. Warto zajrzeć pod ten link, aby uzyskać ogólne informacje: Link.

    Na stronie z projektem znajdują się również oscylogramy sygnału RF przechwyconego przez zaawansowany oscyloskop cyfrowy.

    Zasadniczo po naciśnięciu przycisku ta sama sekwencja jest przesyłana wiele razy, a przed powtórzeniem tej samej sekwencji występuje niewielkie opóźnienie (liczone w milisekundach). Każda sekwencja składa się z dwóch typów fal prostokątnych: dłuższego odcinka jednej fali, po której następuje krótszy przebieg fala, co reprezentuje „1” i dłuższego odcinka sygnału, po którym następuje długie wyłączenie sygnału, co oznacza „0”.

    W testowanym przez autora systemie czasy różniły się mniej więcej trzykrotnie. W ten sposób możliwe jest dekodowanie przesyłanych komunikatów, jak na przykład przedstawiona liczba „001000011110001001100010” (2220642 dziesiętnie).

    Podsumowanie

    W ten sposób można przechwytywać i analizować sygnały z pilotów RF 433 MHz. System ten można wykorzystać do inżynierii wstecznej wielu różnych urządzeń. Można rozpocząć eksperymenty, aby stworzyć własne nadajniki radiowe, do przesyłania „replikowanych” kodów, aby bawić się twoim (lub sąsiada ;)) sprzętem domowym korzystającymi z sterowania 433 MHz. Oczywiście najtrudniejszą częścią jest ustalenie, w jaki sposób dane są kodowane, jednakże przechwytywanie i dekodowanie sygnałów jest pierwszym krokiem, aby móc replikować je z pomocą np. mikrokontrolera połączonego z nadajnikiem 433 MHz .

    Źródło: https://www.electroschematics.com/433mhz-rf-sniffer/

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11699 posts with rating 9873, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • #2
    zgierzman
    Level 31  
    Ostatnio właśnie się w to bawiłem, i okazuje się, że do kodowania może być wykorzystywany kod Manchester w kilku odmianach, Non Return To Zero, również w kilku odmianach, i jeszcze inne (jak było w moim przypadku, jakieś autorskie rozwiązanie producenta...).

    ghost666 wrote:
    Oczywiście najtrudniejszą częścią jest ustalenie, w jaki sposób dane są kodowane, jednakże przechwytywanie i dekodowanie sygnałów jest pierwszym krokiem, aby móc replikować je z pomocą np. mikrokontrolera połączonego z nadajnikiem 433 MHz .


    I czy to rozwiązanie na Arduino pozwala na ustalenie jak sygnał jest kodowany?

    Ja polecam RTL-SDR do spółki z Universal Radio Hacker, lub podobnym softem.
  • #3
    M. S.
    Level 34  
    Podobnie sobie radziłem przy zbieraniu danych do emulatora TPMS. Odbiornik przy braku sygnału pracuje niestabilnie z losowymi przebiegami na wyjściu. Żeby uzyskać czysty sygnał, bo próbki zbierałem oscyloskopem wyzwalanym z przebiegu wyjściowego odbiornika, dość konkretnie krótką pętlą zwierałem wejście antenowe do masy.
  • #4
    Janusz_kk
    Level 36  
    Mnie te odbiorniki w ogóle śmieci tylko zbierają, mam 2 komplety kupione nadajnik + odbiornik, puszczałem kody na nadajnik i odbiornik nie był w stanie tego odebrać, a na sdr-e widać było transmisję. Nie wiem czy tylko ja mam pecha że na jakieś wybrakowane trafiłem czy ten typ tak ma. Strojenie nic nie dawało.
  • #5
    lechoo
    Level 39  
    M. S. wrote:
    Odbiornik przy braku sygnału pracuje niestabilnie z losowymi przebiegami na wyjściu.

    To są odbiorniki superreakcyjne, więc bez sygnału zawsze będą dawały szum na wyjściu.
  • #6
    LEDówki
    Level 39  
    AGC=ARW - automatyczczna tegulacja wzmocnienia.