Prosty, ale wydajny odbiornik radia FM napisany w Pythonie z nowoczesnym interfejsem graficznym. Stworzony specjalnie dla RTL-SDR Blog V4 i zoptymalizowany pod Raspberry Pi 5.
- 🎵 Pełne pasmo FM (87.5 - 108 MHz)
- 📡 Analizator widma w czasie rzeczywistym z podziałką częstotliwości
- 🔍 Inteligentny skaner automatyczny z wykrywaniem szczytów i pauzą na sygnale
- 💾 Pamięć stacji z trwałym zapisem (JSON)
- 📊 S-Meter do monitorowania siły sygnału
- 🎚️ Ręczna i automatyczna kontrola wzmocnienia (AGC)
- ⏺️ Nagrywanie audio do plików WAV
- 🎨 Nowoczesny ciemny interfejs zbudowany w CustomTkinter
- ⚡ Zoptymalizowana wydajność dla Raspberry Pi 5
Ten projekt został stworzony i przetestowany specjalnie dla Raspberry Pi 5 z systemem Raspberry Pi OS (Bookworm). Poniższe instrukcje instalacji są dostosowane do tej platformy i zawierają kompilację sterowników ze źródła, aby zapewnić pełną kompatybilność z RTL-SDR V4.
BARDZO WAŻNE: Na rynku istnieje wiele podróbek RTL-SDR, które mogą nie działać poprawnie z tym oprogramowaniem, szczególnie z funkcją skanowania. Ten program jest zoptymalizowany pod oryginalny RTL-SDR Blog V4.
- 🛒 Oficjalna lista sprzedawców: https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/
- ✅ Metalowa obudowa (niebieska lub srebrna)
- ✅ Wyraźne logo “RTL-SDR Blog” na obudowie
- ✅ Złącze antenowe SMA (antena przykręcana, nie wciskana)
- ✅ Cena rynkowa: około $35-45 USD (ok. 140-180 PLN)
- ❌ Brak logo “RTL-SDR Blog”
- ❌ Plastikowa, czarna obudowa
- ❌ Cena znacznie poniżej $25 USD
- ❌ Sprzedawca nie znajduje się na oficjalnej liście
sudo apt update
sudo apt upgrade -yRTL-SDR V4 wymaga specjalnych sterowników kompilowanych ze źródeł.
sudo apt purge -y ^librtlsdr* ^rtl-sdr*
sudo rm -rvf /usr/lib/librtlsdr* /usr/include/rtl-sdr* /usr/local/lib/librtlsdr* /usr/local/include/rtl-sdr* /usr/local/include/rtl_* /usr/local/bin/rtl_*sudo apt-get install -y libusb-1.0-0-dev git cmake pkg-config build-essential
sudo apt-get install -y libportaudio2 portaudio19-dev python3-pipgit clone https://github.com/rtlsdrblog/rtl-sdr-blog
cd rtl-sdr-blog/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
makesudo make install
sudo ldconfigecho 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/blacklist-rtl-sdr.confsudo rebootPo restarcie, podłącz RTL-SDR V4 i wykonaj test:
rtl_test -tOczekiwany wynik: Informacje o urządzeniu (np. “Found RTL-SDR Blog V4”) i test zakończony pomyślnie.
pip install pyrtlsdr
pip install sounddevice
pip install numpy
pip install scipy
pip install customtkinter
pip install soundfile- Upewnij się, że RTL-SDR V4 jest podłączony
- Podłącz antenę
- Uruchom skrypt:
python3 radio.py▶️ START RADIO - Uruchamia odbiornik- << / >> - Zmiana częstotliwości o ±1 MHz
- < / > - Zmiana częstotliwości o ±0.1 MHz
- Pole MHz - Bezpośrednie wprowadzanie częstotliwości
- Skanuj Pasmo FM ▶ - Uruchamia automatyczne skanowanie
- Skaner wykrywa stacje powyżej -35 dBm
- Automatycznie zatrzymuje się na wykrytych stacjach na 5 sekund
- Wznawia skanowanie, gdy sygnał zanika
- Nastroić na wybraną stację
- Wpisać nazwę w pole tekstowe
- Kliknąć Zapisz bieżącą
- Zapisane stacje pojawiają się na liście poniżej
- Kliknięcie stacji na liście automatycznie się na nią stroi
Pokazuje siłę sygnału w skali S0-S9 oraz w dBm:
- S0-S4: Słaby sygnał (zielony)
- S5-S6: Średni sygnał (pomarańczowy)
- S7-S9: Mocny sygnał (czerwony)
- Auto Gain (AGC) - Automatyczne dostosowanie wzmocnienia
- Suwak Gain - Ręczna regulacja (0-49.6 dB)
- Kliknąć ⏺️ RECORD aby rozpocząć
- Kliknąć ⏹️ STOP REC aby zakończyć
- Pliki zapisują się jako
recording_YYYYMMDD_HHMMSS.wav
# Sprawdź czy urządzenie jest wykryte
lsusb | grep RTL
# Powinno pokazać: "Realtek Semiconductor Corp. RTL2838..."
# Test sterownika
rtl_test -t# Sprawdź urządzenia audio
aplay -l
# Testuj sounddevice
python3 -c "import sounddevice; print(sounddevice.query_devices())"# Dodaj użytkownika do grupy plugdev
sudo usermod -a -G plugdev $USER
# Przeloguj się lub restartuj- ✅ Upewnij się, że używasz odpowiedniej anteny dla pasma FM
- ✅ Ustaw antenę pionowo
- ✅ Umieść antenę wyżej lub przy oknie
- ✅ Włącz AGC lub zwiększ Gain ręcznie
- ✅ Sprawdź, czy jesteś w zasięgu stacji FM
| Parametr | Wartość |
|---|---|
| Pasmo FM | 87.5 - 108 MHz |
| Częstotliwość próbkowania | 288 kHz |
| Częstotliwość audio | 48 kHz |
| Demodulacja | Wide-Band FM (WBFM) |
| Filtr de-emphasis | 75 μs (standard FM) |
| Zakres wzmocnienia | 0 - 49.6 dB (29 kroków) |
| Format nagrań | WAV (48 kHz, mono, float32) |
.
├── radio.py # Główny skrypt aplikacji
├── stations.json # Zapisane stacje (tworzone automatycznie)
├── recording_*.wav # Nagrania audio (tworzone przy nagrywaniu)
└── README.md # Ten plik
Zapraszamy do zgłaszania błędów i propozycji ulepszeń poprzez Issues lub Pull Requests!
Ten projekt jest udostępniony na licencji MIT. Zobacz plik LICENSE po szczegóły.
- RTL-SDR Blog za wspaniały sprzęt i sterowniki
- pyrtlsdr za bibliotekę Python
- CustomTkinter za nowoczesne komponenty GUI
- Społeczność Raspberry Pi za wsparcie
Masz pytania? Otwórz Issue na GitHubie!
Ciesz się swoim radiem FM! 📻🎵