Po co powsta艂 ten projekt?
Je艣li dzia艂asz w cyfrowym radiu DMR i chcesz mie膰 sta艂y podgl膮d aktywno艣ci na wybranym kanale (TalkGroup) bez potrzeby odpalania komputera, ten projekt jest dla Ciebie.
Zbudowa艂em przeno艣ny monitor DMR oparty o ESP32, kt贸ry 艂膮czy si臋 przez WiFi z sieci膮 BrandMeister, wy艣wietla na kolorowym ekranie TFT 4″ aktualnie nadaj膮cego operatora, histori臋 ostatnich transmisji, czas trwania nadawania i zapisuje logi na kart臋 SD. Wszystko w jednym, kompaktowym urz膮dzeniu.
Co dok艂adnie robi ten program?
Program dzia艂a w p臋tli, nas艂uchuj膮c na WebSocketach danych z BrandMeister i reaguj膮c na pojawiaj膮cy si臋 ruch w TalkGroup 260. Oto jego g艂贸wne funkcjonalno艣ci:
馃摗 艁膮czno艣膰 z BrandMeister przez WebSocket
Nawi膮zuje bezpieczne po艂膮czenie (SSL) z API BrandMeister.
Subskrybuje wszystkie zdarzenia (
join everything).Automatycznie wznawia po艂膮czenie w razie przerwania.
馃懁 Wy艣wietlanie aktywnego operatora
Pokazuje znak wywo艂awczy (np.
SP5XYZ).Wy艣wietla imi臋 operatora lub alias TalkerAlias.
Podaje ID operatora oraz numer TalkGroup.
Mierzy i wy艣wietla czas trwania bie偶膮cej transmisji (format MM:SS).
馃摐 Historia ostatnich operator贸w
Przechowuje w pami臋ci ostatnich 4 operator贸w (maksymalnie).
Wy艣wietla ich znak, nazw臋, TG oraz godzin臋 transmisji.
Unika duplikowania tego samego operatora z rz臋du – je艣li ten sam wraca, aktualizuje tylko znacznik czasu.
馃捑 Logowanie do pliku CSV na karcie SD
Ka偶da zako艅czona transmisja jest zapisywana w pliku
/dmr_log.csvna karcie SD.Log zawiera: dat臋 i godzin臋 rozpocz臋cia, dat臋 i godzin臋 zako艅czenia, znak, nazw臋, ID, TG oraz czas trwania w sekundach.
Automatycznie tworzy nag艂贸wek pliku, je艣li nie istnieje.
Zapisane dane mo偶emy odczyta膰 w programie kt贸ry czyta pliki *.csv.
Przyk艂adowe dane zapisane na karcie SD:
馃帹 Przyjazny interfejs u偶ytkownika
Wy艣wietlacz TFT 4″ (480×320 px) z p艂ynn膮 obs艂ug膮 graficzn膮.
Ikona radia zmienia kolor w zale偶no艣ci od stanu RX.
Wizualizacja trwania transmisji za pomoc膮 animowanego paska (fale radiowe).
Zegar NTP (synchronizacja czasu z Internetu) w prawym g贸rnym rogu.
Status po艂膮czenia z BrandMeister – zielone/czerwone k贸艂ko.
馃敡 Konfiguracja z karty SD
Dane WiFi (SSID i has艂o) s膮 odczytywane z pliku
config.txtna karcie SD – nie musisz ich hardkodowa膰 w programie. W ten spos贸b nie musisz ingerowa膰 w program by zalogowa膰 si臋 do swojej sieci WiFi. Wystarczy zmieni膰 dane na karcie SD.Format pliku:
SSID=moja_siec PASS=moje_haslodane te zapisujemy na karcie SD w pliku o nazwie config.txt
Co znajduje si臋 w 艣rodku? – zagl膮damy do kodu
Kod ma oko艂o 1800 linii i jest podzielony na logiczne sekcje. Oto najwa偶niejsze fragmenty:
馃敼 Komunikacja z BrandMeister
Sercem programu jest obs艂uga WebSocket. Funkcja webSocketEvent()
odbiera dane JSON, kt贸re przychodz膮 w dw贸ch zagnie偶d偶onych warstwach –
najpierw wyci膮ga w艂a艣ciwy payload, potem deserializuje go i sprawdza,
czy DestinationID pasuje do monitorowanego TG (260). Je艣li tak – wywo艂uje nowaAktywnosc().
馃敼 Logika ko艅ca transmisji
Funkcja sprawdzKoniecRX()
sprawdza, czy od ostatniego odebranego pakietu min臋艂o wi臋cej ni偶 2500
ms. Je艣li tak – uznaje transmisj臋 za zako艅czon膮, zapisuje log na SD i
prze艂膮cza ekran w stan czuwania.
馃敼 Efektowny interfejs
U偶y艂em bibliotek Adafruit GFX i ST7796S do obs艂ugi wy艣wietlacza. Funkcja rysujIkoneRadia() rysuje ikon臋, kt贸ra 艣wieci na zielono podczas odbioru, a na ciemnoszaro w stanie czuwania. Animacja RX (animacjaRX()) to paski imituj膮ce fale radiowe – od艣wie偶ane co 150 ms.
馃敼 Historia i logika deduplikacji
dodajDoHistorii()
przesuwa starsze wpisy w d贸艂 i wstawia nowego operatora na pierwsz膮
pozycj臋. Co wa偶ne – je艣li ten sam operator pojawia si臋 ponownie, nie
jest dodawany drugi raz, a jedynie aktualizowany jest jego znacznik
czasu.
Jak uruchomi膰 ten projekt na swoim ESP32?
Potrzebne elementy
ESP32 (np. Wemos D1 R32, NodeMCU-32S) Ja zrobi艂em to na ESP32 WROOM-32U.
Wy艣wietlacz TFT z kontrolerem ST7796S (lub kompatybilny, 4″ 480×320 px SPI)
Karta microSD (do zapisu log贸w i konfiguracji)
Kabel USB, zasilanie 5V
Nie zamieszczam schematu bo na podstawie definicji pin贸w mo偶na to zrobi膰 bez problemu.
Konfiguracja
Sformatuj kart臋 SD jako FAT32.
W katalogu g艂贸wnym karty utw贸rz plik
config.txto zawarto艣ci:SSID=TwojaNazwaWiFi PASS=TwojeHasloWiFiZainstaluj wymagane biblioteki w Arduino IDE lub PlatformIO:
WiFi.hWebSocketsClient.hArduinoJson.h(wersja 6.x)Adafruit_GFX.hAdafruit_ST7796S_kbv.hSD.htime.h
Sprawd藕 piny w sekcji
KONFIGURACJA SPRZETOWA– dopasuj do swojej p艂ytki.Skompiluj i wgraj na ESP32.
Niekt贸re piny s膮 zdublowane dla wy艣wietlacza i karty SD. To nie jest b艂膮d. TAK MA BY膯!
Dla kogo jest ten projekt?
Kr贸tkofalowc贸w i pasjonat贸w 艂膮czno艣ci cyfrowej DMR.
Tw贸rc贸w projekt贸w IoT szukaj膮cych ciekawego zastosowania dla ESP32.
Programist贸w embedded, kt贸rzy chc膮 zobaczy膰, jak integrowa膰 WebSocket, JSON i wy艣wietlacz w jednym urz膮dzeniu.
Podsumowanie
Projekt pokazuje, jak z pozornie prostego mikrokontrolera mo偶na zbudowa膰 zaawansowane urz膮dzenie monitoruj膮ce z graficznym interfejsem, zapisem danych i komunikacj膮 przez Internet. Kod jest napisany przejrzy艣cie, z podzia艂em na funkcje, co u艂atwia modyfikacje – na przyk艂ad mo偶na zmieni膰 monitorowany TalkGroup, doda膰 wi臋cej historii lub zintegrowa膰 z w艂asnym API.
NOWA WERSJA I NOWE MO呕LIWO艢CI
DMR Monitor HF5WWL - Wersja 4.3 MULTI z obs艂ug膮 wielu grup
Co nowego?
Najwa偶niejsz膮 zmian膮 w wersji 4.3 MULTI jest mo偶liwo艣膰 monitorowania wielu grup DMR jednocze艣nie. Dotychczas urz膮dzenie 艣ledzi艂o wy艂膮cznie polsk膮 grup臋 260. Teraz mo偶esz dowolnie konfigurowa膰, kt贸re grupy chcesz obserwowa膰.
Jak to dzia艂a?
Plik konfiguracyjny monitored_tg.txt
Na karcie SD wystarczy utworzy膰 plik monitored_tg.txt i wpisa膰 w nim numery grup, kt贸re chcemy monitorowa膰. Ka偶da grupa w osobnej linii:
260
26077
260042
1
2Nowa funkcja: monitorowanie wszystkich grup z prefiksem 260
Je艣li chcesz 艣ledzi膰 wszystkie grupy zaczynaj膮ce si臋 od 260 (np. 260, 26077, 260042, 260123, itd.), wystarczy wpisa膰 w pliku:
260*To szczeg贸lnie przydatne, gdy interesuj膮 Ci臋 wszystkie lokalne grupy w Twoim regionie.
艁膮czenie opcji
Mo偶esz te偶 艂膮czy膰 oba sposoby:
# Wszystkie grupy z prefiksem 260
260*
# Dodatkowo inne grupy
1
2
3Zmieni艂y si臋 te偶 zapisy w logu. Teraz wygl膮daj膮 tak:Co z dotychczasow膮 funkcjonalno艣ci膮?
Dzia艂anie z grup膮 260 - je艣li brak pliku
monitored_tg.txt, program domy艣lnie monitoruje grup臋 260 (zgodnie z poprzedni膮 wersj膮)Logowanie do CSV - bez zmian, nadal zapisuje wszystkie aktywno艣ci
Wy艣wietlacz i interfejs - bez zmian, zachowano dotychczasowy wygl膮d
Po艂膮czenie z BrandMeister - bez zmian
Przyk艂adowe zastosowania
Monitorowanie lokalnych grup - wpisz wszystkie lokalne grupy w swoim regionie
艢ledzenie konkretnych rozm贸w - dodaj tylko interesuj膮ce Ci臋 grupy
Obserwacja ruchu w ca艂ym prefiksie 260 - u偶yj
260*Mieszane - monitoruj grup臋 260, wszystkie podgrupy 260 i dodatkowe grupy zagraniczne
Wymagania
Karta SD z plikami:
config.txt- dane WiFi (SSID i has艂o)monitored_tg.txt- lista grup do monitorowania (opcjonalnie)Plik dmr_log.csv zostanie utworzony automatycznie o ile go ju偶 nie utworzono.
Kompatybilno艣膰
Zmiany s膮 w pe艂ni kompatybilne wstecznie. Je艣li nie utworzysz pliku monitored_tg.txt, program zachowa si臋 identycznie jak poprzednia wersja i b臋dzie monitorowa膰 tylko grup臋 260.
Podsumowanie
Nowa wersja DMR Monitora daje u偶ytkownikowi pe艂n膮 kontrol臋 nad tym, kt贸re grupy chce obserwowa膰. To proste, ale bardzo u偶yteczne ulepszenie, kt贸re sprawia, 偶e urz膮dzenie staje si臋 jeszcze bardziej wszechstronnym narz臋dziem do monitorowania ruchu DMR.
Kr贸tki filmik prezentuj膮cy prac臋 prototypu.
Ca艂y kod w formacie *.bin mo偶esz otrzyma膰 bezp艂atnie po kontakcie przez e-mail
- Je偶eli do mnie napiszesz mo偶esz dosta膰 program z usuni臋tym moim znakiem (wpisz臋 Tw贸j znak).
✍️ Autor: Robert HF5WWL
馃搮 Data projektu: Lipiec / sierpie艅 2026 r.
馃搷 Lokalizacja: Wo艂omin, POLSKA
馃搧 Co艣 nie jasne? Pytaj poprzez e-mail (hf5wwl@gmail.com) lub w komentarzu
馃洜️ Poziom trudno艣ci: 艁atwy (jak si臋 ma oprogramowanie) 馃槉
#HamRadio
#DMRradio
#TalkGroup260
#AmateurRadio
#DigitalRadio
#RadioMonitor
#SP5WWL




















