___________________________________________________________________________________________________________________________________________________________________________
___________________________________________________________________________________________________________________________________________________________________________

24 września 2026

Monitor DMR ESP32-2432S028R

 


Monitor DMR na ESP32-2432S028R ("żółty moduł" CYD) z danymi z BrandMeister

 

Wstęp

Monitor DMR pokazujący na bieżąco, kto nadaje na wybranych grupach rozmównych, pierwotnie zbudowałem na ESP32 WROOM-32U z wyświetlaczem 480×320 i osobną kartą SD. Program pobiera dane bezpośrednio z internetu, więc nie potrzebuje modułu MMDVM ani radia. Wystarczy sieć WiFi.

 https://hf5wwl.blogspot.com/2026/07/dmr-monitor-na-esp32.html

Okazało się, że ten sam program można przenieść na popularny gotowy moduł ESP32-2432S028R, czyli tak zwany "żółty moduł" (CYD, Cheap Yellow Display). Ma on w jednej płytce ESP32, kolorowy wyświetlacz 2,8" i gniazdo karty microSD. Nie trzeba niczego lutować ani łączyć przewodami.

Jak to działa

Monitor łączy się przez WebSocket z serwerem BrandMeister (Last Heard) i odbiera informacje o aktywności w sieci. Każdy pakiet zawiera znak, imię lub alias operatora, jego ID DMR oraz numer grupy rozmównej (TG). Program odrzuca pakiety z grup, których nie monitorujesz, a resztę pokazuje na ekranie.

Co pokazuje ekran

  • Nagłówek: nazwa monitora, status połączenia z BrandMeister (BM ONLINE / OFFLINE), ikona radia zmieniająca kolor podczas odbioru oraz zegar synchronizowany przez NTP (z automatyczną zmianą czasu letni/zimowy).
  • Aktywny operator: duży znak wywoławczy, imię lub alias, numer TG i ID oraz licznik czasu trwania transmisji (MM:SS) z animacją odbioru.
  • Historia: cztery ostatnie transmisje z godziną, znakiem, imieniem i numerem TG.
  • Stan czuwania: gdy nikt nie nadaje, ekran pokazuje listę monitorowanych grup.

 

Konfiguracja z karty SD

Nic nie trzeba zmieniać w kodzie, żeby ustawić sieć i grupy. Wszystko jest w plikach tekstowych na karcie microSD (FAT32). Na karcie tworzymy dwa pliki:

plik config.txt – dane sieci WiFi:

SSID=nazwa_twojej_sieci_WiFi
PASS=twoje_haslo

plik monitored_tg.txt – lista monitorowanych grup, jedna w linii:

260
2602
# linia zaczynająca się od # jest komentarzem na przykład:
#260080
#TG lokalne
#TG podręczne 

Wpis 260* włącza monitorowanie wszystkich grup zaczynających się od 260. Jeśli pliku nie ma, program używa domyślnej grupy 260.

Plik logu powstanie automatycznie. 

WAŻNE! Stosuj karty max 32 GB sformatowane na FAT32. To powinno działać niezawodnie. 

 

Dziennik transmisji

Po zakończeniu każdej transmisji (po 5 sekundach bez pakietów) program dopisuje wiersz do pliku dmr_log.csv na karcie SD: data i godzina początku i końca, znak, imię, ID, TG oraz czas trwania w sekundach. Plik można otworzyć w Excelu lub LibreOffice i analizować aktywność.


 

Co trzeba było zmienić przy przeniesieniu na CYD

  1. Wyświetlacz: w wersji z dwoma portami USB (micro-USB i USB-C) jest to ST7789 o rozdzielczości 320×240. Użyłem biblioteki Adafruit ST7789, na magistrali HSPI (CS 15, DC 2, MOSI 13, MISO 12, SCK 14, podświetlenie GPIO 21).
  2. Karta SD: na płytce siedzi na osobnej magistrali VSPI (CS 5, SCK 18, MISO 19, MOSI 23), więc nie dzieli już SPI z wyświetlaczem. Uprościło to kod i usunęło ręczne przełączanie linii CS.
  3. Układ ekranu: z 480×320 na 320×240 przeliczyłem ręcznie wszystkie współrzędne. Nagłówek ma teraz dwa wiersze, a w historii zmieściłem czas bez sekund.
  4. Drobne poprawki: program nie zatrzymuje się, gdy brakuje karty SD (pokazuje komunikat i działa dalej z domyślną grupą), zegar odświeża się bez przerysowywania całego nagłówka, a zbyt długi tekst dobiera mniejszą czcionkę i nie zawija się na sąsiednie linie. 
Widok ekranu w starej wersji (480x320 px)

 

Na mojej płytce z dwoma portami USB trzeba było ustawić dwie stałe na początku programu:

cpp
#define TFT_INVERT false
#define TFT_ROTATION 3

Na innych egzemplarzach mogą być potrzebne inne wartości. Jeśli kolory są negatywem, zmień TFT_INVERT, a jeśli obraz jest do góry nogami, zmień TFT_ROTATION między 1 a 3.

Biblioteki

  • WebSockets (Markus Sattler)
  • ArduinoJson 7
  • Adafruit GFX
  • Adafruit ST7735 and ST7789 Library

Płytka w Arduino IDE: ESP32 Dev Module.

Możliwości rozwoju

Sam moduł oferuje jeszcze kilka rzeczy, których ten program na razie nie używa:

  • ekran dotykowy (XPT2046), np. do przełączania monitorowanych grup,
  • wbudowana dioda RGB, która mogłaby zapalać się podczas odbioru,
  • fotorezystor do automatycznej regulacji jasności ekranu.

Wersja z jednym portem USB ma zwykle inny wyświetlacz (ILI9341). Po zamianie biblioteki na Adafruit_ILI9341 i konstruktora (Adafruit_ILI9341(&tftSPI, TFT_DC, TFT_CS, -1)) reszta programu powinna działać podobnie, ale tego nie sprawdzałem. Wersja ILI9341 nie była testowana.

 


 

✍️ Autor: Robert HF5WWL
📅 Data projektu: wrzesień 2026 r.
 📍 Lokalizacja: Wołomin, POLSKA
📁 Coś nie jasne? Pytaj poprzez e-mail (hf5wwl@gmail.com) lub w komentarzu 
🛠️ Poziom trudności: Łatwy 

📜 Program jest dostępny za darmo /aktualna wersja/. Wystarczy poprosić via e-mail. Jest możliwość otrzymania programu w wersji angielskiej.

 

 #DMR #BrandMeister #ESP32 #Krotkofalarstwo #HamRadio #Arduino #Cplusplus 
#IoT #DIYelectronics #EmbeddedSystems #RadioMonitor #OpenSource

. 

Brak komentarzy:

Prześlij komentarz

Zastanów się, czy to co tu napiszesz było by mile widziane na Twojej stornie www lub na Twoim blogu...
Niestosowne komentarze będą cenzurowane.