Niesamowity analizator widma z tunera DVB-T
Parę tygodni temu natknąłem się na jednym z forów FPV na temat o sprawdzaniu częstotliwości, zajętości pasma, antenach itp. Zauważyłem, że ludzie uzywają tanich tunerów DVB-T na chipie RTL2832U Realteka jako analizatora widma, a czasem nawet jako oscyloskopu.
Dla mnie była to jedna z tych mocno brakujących rzeczy w moim warsztacie, która wiele rzeczy by uprościła. Tak się na to napaliłem, że tym razem postanowiłem kupić tego dongla jak najszybciej za trochę więcej niż bezpośrednio z Chin (55zł). Udało mi się znaleźć taki w sklepie w moim mieście i już następnego dnia byłem kolejnym szczęsliwym posiadaczem takiego tunera:-)
Oto Lifeview LV5T Deluxe (pod marką NOT ONLY TV):
Wyposażony jest w trochę inny tuner niż opisany na stronie rtlsdr/osmocomSDR: Fitipower FC0013, ale za to z możliwością pracy w zakresie częstotliwości 22-1100MHz (trochę więcej niż oparte na FC0012):
Oprogramowanie
Żeby było jasne: używam Linuxa 🙂
Pierwszym krokiem jest ściągnięcie i instacja biblioteki rtl-sdr z http://sdr.osmocom.org/trac/wiki/rtl-sdr. W pakiecie są również regułki udev-a, więc później nie są już potrzebne uprawnienia root-a.
Na powyższej stronie można znaleźć również linki do różnych innych programów używających tej biblioteki.
Kolejnym krokiem jest ściągnięcie biblioteki Pythona pyrtlsdr, bo większość programów jest właśnie w tym języku (przynajmniej z tych co sprawdzałem). Po instalacji jeszcze kilku pakietów zależnych jak wxPython, numpy, matplotlib itp. zacząłem testować soft 🙂
RTLSDR-Scanner
Pierwszym programem był RTLSDR-Scanner. Prosty, prawie toporny analizator widma:
Łatwy w obsłudze, z mośliwością powiększania, ale skanowanie może odbywać się tylko od/do całych MHz. Dokładniejsze ustalnie pasma niestety nie jest możliwe – ale zawsze można użyć powiększenia.
Czyli całkiem niezły, ale czuję po nim niedosyt 🙂
rtlsdr-waterfall
Wodospad – coś co pokazuje prawdziwe możliwości komputerowego analizatora widma:
Prosty skrypt w Pythonie jest bardziej niż użyteczny.
Na przykład: pasmo komercyjnych stacji FM:
I sytuacja, gdzie wodospad pokazuje swoje prawdziwe możliwości – skan pasma ISM 433MHz z widocznymi nadajnikami, które wysyłają tylko krótkie paczki (to po lewej, to najprawdopodobniej jakiś sensor ze stacji pogodowej):
A wracając do modeli i R/C 🙂 Mój nadajnik na 40MHz:
W programie można zaznaczyć kawałek pasma i je zmierzyć, zmniejszać lub zwiększać zakres częstotliwości (ale niestety przy niższych wartościach aplikacja potrafi się wyłożyć), zmieniać czułość tunera żeby np. usunąć przesterowanie (i dodatkowe harmoniczne przez to spowodowane).
Audacity
Tak, to TO Audacity: znany program do obróbki audio. Zrobiłem sobie do niego małego patcha (niech zyje OpenSource 🙂 ), który pozwala zmienić częstotliwość próbkowania nawet do 10MHz (oryginalnie jest do 100kHz, natomiast rtl-sdr sampluje z częstotliwością ok. 2MHz) – w zasadzie po to, żeby narzędzie selekcji jak również FFT działały poprawnie.
Uzywając programu rtl_sdr z biblioteki rtl-sdr zrzuciłem trochę sampli na interesującej mnie częstotliwości i zaimportowałem to jako surowe 8 bitowe dane stereo do Audacity. Poniżej wyniki 🙂
Mój nadajnik na 35MHz na kanale 71. Mam lekki problem z zasięgiem na tym kanale i na tym obrazku widać dlaczego:
Można na nim zobaczyć, że:
- radio jest 5 kanałowe (6 impulsów synchronizacji)
- podstawowa częstotliwość jest przesunięta o ok. 5kHz od częstotliwości samplowania, czyli częstotliwości kanału – i to jest przyczyna złego odbioru (kanał ma szerokość 10kHz, więc odchyłka jest znaczna)
- dewiacja wynosi ok. 3kHz (do ok. 8kHz od środka kanału)
To samo radio, ale z kwarcem na 63 kanał chodziło o wiele lepiej, co potwierdzają poniższe obazki:
Odchyłka od środka kanału jest mniejsza niż 3kHz, więc jest lepiej niż na kanale 71.
Dla porównania: mój prosty 4 kanałowy nadajnik na 40MHz:
Bardzo kusząco wygląda SDR# (dostępny również na Windows), ale wymaga jeszcze więcej zależności (MONO), więc może kiedyś indziej.
Ale jestem pewny, że to tego tematu jeszcze kiedyś wrócę z nowymi informacjami 🙂
I am so struggling with this…
How can I contact you directly ?
I can’t even understand what the errors are trying to tell me…
/tmp/rtlsdr_scanner?17368/matplotlib/__init__.py:611: UserWarning: Could not find matplotlibrc; using defaults
/tmp/rtlsdr_scanner?17368/matplotlib/__init__.py:698: UserWarning: could not find rc file; returning defaults
Traceback (most recent call last):
File "", line 37, in
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 386, in importHook
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 480, in doimport
File "/mnt/hgfs/Documents/Programs/Python/rtl-sdr-scanner/build/pyi.linux2/rtlsdr_scan/out00-PYZ.pyz/matplotlib.backends.backend_wxagg", line 20, in
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 386, in importHook
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 480, in doimport
File "/mnt/hgfs/Documents/Programs/Python/rtl-sdr-scanner/build/pyi.linux2/rtlsdr_scan/out00-PYZ.pyz/matplotlib.figure", line 18, in
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 386, in importHook
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 480, in doimport
File "/mnt/hgfs/Documents/Programs/Python/rtl-sdr-scanner/build/pyi.linux2/rtlsdr_scan/out00-PYZ.pyz/matplotlib.axes", line 14, in
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 386, in importHook
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 480, in doimport
File "/mnt/hgfs/Documents/Programs/Python/rtl-sdr-scanner/build/pyi.linux2/rtlsdr_scan/out00-PYZ.pyz/matplotlib.axis", line 10, in
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 386, in importHook
File "/opt/pyinstaller/PyInstaller/loader/iu.py", line 480, in doimport
File "/mnt/hgfs/Documents/Programs/Python/rtl-sdr-scanner/build/pyi.linux2/rtlsdr_scan/out00-PYZ.pyz/matplotlib.font_manager", line 1325, in
File "/mnt/hgfs/Documents/Programs/Python/rtl-sdr-scanner/build/pyi.linux2/rtlsdr_scan/out00-PYZ.pyz/matplotlib.font_manager", line 1275, in _rebuild
File "/mnt/hgfs/Documents/Programs/Python/rtl-sdr-scanner/build/pyi.linux2/rtlsdr_scan/out00-PYZ.pyz/matplotlib.font_manager", line 962, in __init__
File "/mnt/hgfs/Documents/Programs/Python/rtl-sdr-scanner/build/pyi.linux2/rtlsdr_scan/out00-PYZ.pyz/posixpath", line 68, in join
AttributeError: 'NoneType' object has no attribute 'endswith'
Latitude ~$
Hello Curt,
do you have matplotlib and other libaries installed as I noted in my post (section Software)?
ps i want software support usb dvd-t it9135 as spectrum analyzer
Witam, czy posiada pan wciąż ten tuner? Jeśli tak to czy mógłby pan przesłać mi oznaczenia prawdopodobnie tranzystora który zaznaczyłem na zdjęciu: http://obrazki.elektroda.pl/5227172800_1408557308.jpg
Wygląda to jak: trójkącik, 7s.
Tu powiększenie: https://majek.sh/wp-content/uploads/2014/08/tranzystor.jpg
Dziękuję pięknie:)
Please send a quote for this unit
and also the site to order.
You could buy it on ebay.com for about $10 (including shipping). If you need 0.9-1.7GHz band, but without lower frequencies (tens of MHz), search for R820T. Otherwise search for RTL2832U with FC0013 tuner.
Hi,
I want to buil my own spectrum analyzer, but i dont know where i must start. Can you help me, since you build your simple spectrum analyer on your own. Thanks for your help.
cheers
kucrut.
Witam, zainstalowałem RTLSDR-Scanner, ale nie mogę nic z nią zrobić. Mam tunerek NotOnly LV5HD. Czy idzie jakoś sparować tą aplikacje z tym tunerem?
Będę wdzięczny za jakąś wskazówkę.
Artykół super:-)
Radek.
A pod jakim systemem próbujesz to uruchomić? Pod Linuxem trzeba najpierw zainstalować bibliotekę rtl-sdr i regułki do udev-a. Pod Windowsem nie mam pojęcia.