___________________________________________________________________________________________________________________________________________________________________________
___________________________________________________________________________________________________________________________________________________________________________

31 sierpnia 2026

Emulator wyświetlacza Nextion do MMDVM

 

 
Gotowy HotSpot (bez obudowy) z emulatorem wyświetlacza NEXTIN. 

  

Wprowadzenie

Projekt jest własnoręcznie wykonanym emulatorem wyświetlacza Nextion przeznaczonym do współpracy z systemem MMDVM DUAL. Został zrealizowany na mikrokontrolerze ESP32 oraz kolorowym wyświetlaczu TFT ST7789 o rozdzielczości 320 × 240 pikseli i przekątnej 2,8".

Głównym zadaniem urządzenia jest prezentowanie najważniejszych informacji dotyczących pracy MMDVM oraz aktualnie prowadzonej korespondencji DMR. Zamiast niewielkiego, typowego wyświetlacza można zastosować znacznie większy i bardziej czytelny ekran graficzny, którego wygląd oraz sposób prezentowania informacji można dowolnie dostosować do własnych potrzeb.

Program został napisany tak, aby ESP32 odbierał informacje przesyłane przez MMDVM, analizował je i przedstawiał na ekranie w czytelnej, graficznej formie.

Przepraszam za marne kolory na zdjęciach. W realu są ładnie nasycone i wyraźne. Niestety, to wina aparatu a nie chciałem ich poprawiać za pomocą AI ;) 

Konstrukcja urządzenia

Sercem urządzenia jest moduł ESP32. Do komunikacji z systemem MMDVM wykorzystany został drugi interfejs szeregowy ESP32 (Serial2) pracujący z prędkością 9600 bit/s.

Wyświetlanie informacji realizowane jest przez bibliotekę Adafruit_ST7789, natomiast za obsługę grafiki i czcionek odpowiada biblioteka Adafruit_GFX.

Zastosowany wyświetlacz ST7789 ma rozdzielczość 320 × 240 pikseli, dzięki czemu można na nim jednocześnie prezentować kilka różnych informacji.

Cały interfejs został zaprojektowany jako jeden ekran roboczy, bez konieczności przechodzenia przez rozbudowane menu.

Płytka procesora ESP32 w zasadzie nie potrzebuje żadnych dodatkowych komponentów i została umieszczona bezpośrednio pod wyświetlaczem. Połączenia opisałem w końcowej części opisu.

Wygląd ekranu

Na górze ekranu znajduje się nagłówek zawierający oznaczenie MMDVM oraz znak własny operatora.

W prawym górnym rogu umieszczony został dodatkowo kolorowy wskaźnik informujący o aktualnym stanie systemu.

Poniżej znajduje się główna część ekranu, w której prezentowane są informacje dotyczące korespondencji.

Interfejs wykorzystuje kilka różnych rozmiarów czcionek oraz kolory pozwalające szybko odczytać najważniejsze informacje bez konieczności analizowania całego ekranu.

HotSpot w stanie oczekiwania na transmisję. Obok anten widać oryginalny wyświetlacz.

 

Wskaźnik stanu

Jednym z elementów interfejsu jest niewielki prostokątny wskaźnik statusu.

W zależności od aktualnego stanu urządzenia może on pokazywać:

  • STB – stan gotowości,
  • RX – odbiór,
  • TX – nadawanie,
  • IDL – czuwanie.

Kolor wskaźnika dodatkowo informuje o sytuacji.

Podczas odbioru kolor zależy od wartości BER:

  • zielony – bardzo dobra jakość,
  • żółty – pogarszająca się jakość,
  • czerwony – wysoki poziom błędów.

Wskaźnik może również pulsować, dzięki czemu stan urządzenia jest widoczny nawet z większej odległości.

Informacje o korespondencie

Podczas aktywnej korespondencji na ekranie wyświetlany jest znak korespondenta.

Jest on prezentowany dużą, wyraźną czcionką, dzięki czemu można go odczytać bez podchodzenia bezpośrednio do urządzenia.

Jeżeli system MMDVM przekazuje również nazwę operatora, pod znakiem wyświetlane jest jego imię lub nazwa.

Ważnym szczegółem jest to, że nazwa operatora jest związana z aktualną korespondencją. Po zakończeniu transmisji dane korespondenta są kasowane, dzięki czemu na ekranie nie pozostaje imię poprzedniego operatora.

Informacja o Talk Group

Podczas aktywnej transmisji prezentowany jest również numer używanej grupy rozmównej TG.

Informacja ta jest wyróżniona kolorem, dzięki czemu można ją szybko odnaleźć na ekranie.

Pozwala to w prosty sposób sprawdzić, na której grupie odbywa się aktualnie odbierana lub nadawana transmisja.


 

Wskaźnik BER

Jedną z ciekawszych funkcji programu jest graficzny wskaźnik BER – Bit Error Rate.

Wartość BER jest przedstawiana nie tylko jako liczba procentowa, ale również w postaci poziomego paska.

Pasek zmienia swoją długość wraz ze zmianą wartości BER. Im większa liczba błędów, tym krótszy jest pasek jakości.

Dodatkowo stosowane są trzy kolory:

  • zielony – niski BER,
  • żółty – podwyższony BER,
  • czerwony – wysoki BER.

Dzięki temu operator może jednym spojrzeniem ocenić jakość odbieranego sygnału.

Wskaźnik BER jest widoczny tylko podczas aktywnej korespondencji. W trybie czuwania nie zajmuje niepotrzebnie miejsca na ekranie.

RSSI

W dolnej części ekranu program może prezentować również informację o poziomie sygnału RSSI, jeżeli taka informacja zostanie przekazana przez MMDVM.

Pozwala to na bieżąco obserwować nie tylko jakość transmisji mierzoną wartością BER, ale również poziom odbieranego sygnału.

 

Adres IP

Program rozpoznaje również informacje dotyczące adresu sieciowego urządzenia.

Jeżeli MMDVM przekaże adres IP, zostaje on wyświetlony na ekranie.

Adres prezentowany jest przez określony czas, a następnie znika, aby niepotrzebnie nie zajmować miejsca na ekranie głównym.

Przykładowo może być pokazany pełny adres:

IP: 192.168.1.37

Po upływie czasu wyświetlania adres jest automatycznie usuwany.


 

Automatyczny tryb czuwania

Jeżeli przez 30 sekund nie wystąpi aktywność, program automatycznie przechodzi w tryb czuwania.

W tym momencie dane dotyczące ostatniej korespondencji są kasowane.

Na ekranie zamiast znaku oraz danych ostatniego operatora pojawia się zegar.

Wyświetlana jest również informacja:

STAN: CZUWANIE

Takie rozwiązanie sprawia, że ekran w stanie bezczynności nie pokazuje nieaktualnych informacji.

Gdy pojawi się nowa aktywność, urządzenie automatycznie powraca do prezentowania informacji o korespondencji.

Zegar

W trybie czuwania głównym elementem ekranu jest aktualny czas.

Jeżeli MMDVM przekazuje datę i czas, program wykorzystuje te informacje do prezentacji zegara oraz daty.

Duża czcionka sprawia, że czas jest dobrze widoczny nawet z większej odległości.

HotSpot w stanie czuwania.

 

Automatyczna analiza danych z MMDVM

Program nie ogranicza się do prostego wyświetlania odebranych komunikatów.

ESP32 analizuje przychodzące dane i rozpoznaje poszczególne informacje, między innymi:

  • znak korespondenta,
  • nazwę lub imię operatora,
  • numer Talk Group,
  • informacje o BER,
  • informacje o RSSI,
  • adres IP,
  • status systemu,
  • datę i czas.

Na podstawie tych danych odpowiednie elementy interfejsu są aktualizowane.

Dzięki temu ekran działa jak autonomiczny monitor systemu MMDVM.

Sygnalizacja nadawania

Program rozpoznaje również własny znak operatora.

Jeżeli aktywna transmisja dotyczy własnego znaku, urządzenie przechodzi w stan TX i odpowiednio zmienia wygląd wskaźnika statusu.

Pozwala to szybko rozróżnić transmisję własną od odbieranej korespondencji.

Czytelny interfejs

Dużą uwagę poświęciłem temu, aby informacje były czytelne i łatwe do rozpoznania.

Zastosowano różne wielkości czcionek oraz kontrastowe kolory. Najważniejsze informacje, takie jak znak korespondenta, znajdują się w centralnej części ekranu i są prezentowane dużymi znakami.

Interfejs wykorzystuje również delikatne elementy dekoracyjne oraz gradientowe tło, dzięki czemu całość nie wygląda jak surowy terminal tekstowy.

Jednocześnie program nie odświeża bez potrzeby całego ekranu w sposób powodujący nieprzyjemne migotanie. Poszczególne informacje są aktualizowane w zależności od zmiany ich stanu.

Podsumowanie

Projekt pokazuje, że stosunkowo prosty zestaw składający się z ESP32 i kolorowego wyświetlacza ST7789 może stać się bardzo funkcjonalnym monitorem dla systemu MMDVM DUAL.

Urządzenie pozwala w jednym miejscu obserwować najważniejsze parametry pracy systemu:

znak → operator → Talk Group → BER → RSSI → status → IP → czas

Największą zaletą rozwiązania jest możliwość całkowitego dostosowania wyglądu oraz sposobu prezentowania informacji do własnych potrzeb.

Program można również w przyszłości rozwijać o kolejne funkcje, takie jak historia ostatnich korespondentów, dodatkowe parametry transmisji, statystyki pracy czy kolejne ekrany informacyjne.

Projekt jest więc nie tylko emulatorem wyświetlacza Nextion, ale w praktyce stanowi samodzielny, graficzny monitor pracy MMDVM DUAL, pozwalający znacznie wygodniej obserwować pracę systemu DMR.

 

Schemat połączeń (ESP32 <-> ST7789 & MMDVM)

Wyświetlacz ST7789 -> ESP32:

  • CS -> GPIO 15

  • RST -> GPIO 4

  • DC -> GPIO 2

  • MOSI-> GPIO 23

  • SCLK-> GPIO 18

  • VCC -> 3.3V / 5V (w zależności od modułu)

  • GND -> GND

Połączenie z Pi-Star (UART):

  • RX2 (GPIO 16) ESP32 -> TX z płyty MMDVM / Raspberry Pi (3.3V Logic)

     TX2 (GPIO 17) ESP32 -> RX z płyty MMDVM / Raspberry Pi (3.3V Logic)

     (GND ESP32 -> GND Raspberry Pi / MMDVM  (WAŻNE!)


  •  Zwróćcie uwagę, że do wyświetlacza z tego złącza wysyłane są dane (Rx i Tx) oraz masa i +5V. Tak więc łączymy go z Vin ESP32 i nie potrzebujemy dodatkowego (osobnego) zasilania do modułu wyświetlacza.

    Należy też pamiętać, że zasilając wyświetlacz przez gniazdo USB modułu ESP32 zasilamy też moduł MMDV i Raspberry Pi. Tak więc zasilanie z gniazda Raspberry należy wcześniej wyłączyć. 

Konfiguracja w programie Pi-Star

Aby emulator działał poprawnie, w panelu Pi-Star Configuration należy zmienić ustawienia w sekcji MMDVM Display Driver:

  • MMDVM Display Type: Nextion

  • Port: Modem (lub /dev/ttyAMA0 w zależności od połączenia)

  • Nextion Layout: G4KLX

 

 Jeszcze jeden "drobiazg" na który proponuję zwrócić uwagę: Fabryczne "anteny" które były dołączone do MMDVM. Rezonans na częstotliwości 424 MHz. Może tylko mi się takie trafiły? :) Co prawda nadajnik ma około 15 mW ale tak być nie powinno. Proponuję sprawdzić co otrzymaliście w zestawie.

 



 Jeśli zainteresował Cię ten projekt i chciałbyś do niego program - napisz. Z pewnością Ci go wyślę.

 

✍️ Autor: Robert HF5WWL
📅 Data projektu: 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) 
😊

 

 

 #DIY #DoItYourself #HAMRadio #HamTech #ESP32 #MMDVM #DMR #RadioAmatorskie #Krótkofalarstwo #Homebrew #Electronics #Maker #TechProject #DigitalRadio #DMRMonitor

 

31 lipca 2026

DMR Monitor na ESP32

 

 Prototyp monitora DMR na płytce uniwersalnej.

 

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.csv na 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.txt na 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_haslo
    dane 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().

cpp
if (destinationID != MONITORED_TG) {
  break;
}

 

🔹 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

  1. Sformatuj kartę SD jako FAT32.

  2. W katalogu głównym karty utwórz plik config.txt o zawartości:

    text
    SSID=TwojaNazwaWiFi
    PASS=TwojeHasloWiFi
  3. Zainstaluj wymagane biblioteki w Arduino IDE lub PlatformIO:

    • WiFi.h

    • WebSocketsClient.h

    • ArduinoJson.h (wersja 6.x)

    • Adafruit_GFX.h

    • Adafruit_ST7796S_kbv.h

    • SD.h

    • time.h

  4. Sprawdź piny w sekcji KONFIGURACJA SPRZETOWA – dopasuj do swojej płytki.

  5. Skompiluj i wgraj na ESP32.

    Niektóre piny są zdublowane dla wyświetlacza i karty SD. To nie jest błąd. TAK MA BYĆ! 


// ==================================
//                 KONFIGURACJA SPRZĘTOWA
// ==================================
// Piny wyświetlacza (VSPI)
#define TFT_CS 16
#define TFT_RST 4
#define TFT_DC 2
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_BACKLIGHT 17

// Piny karty SD (współdzielone z wyświetlaczem, różne CS)
#define SD_CS_PIN 21  
#define SD_MISO 19  
#define SD_MOSI 23
#define SD_SCLK 18
 
 

 

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
2

Nowa 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:

text
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
3
 
Monitor oczekuje na aktywność na wybranych grupach:
 

Zmienił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

  1. Monitorowanie lokalnych grup - wpisz wszystkie lokalne grupy w swoim regionie

  2. Śledzenie konkretnych rozmów - dodaj tylko interesujące Cię grupy

  3. Obserwacja ruchu w całym prefiksie 260 - użyj 260*

  4. 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

10 lipca 2026

Cyfrowy bezpiecznik i monitor zasilania przetwornicy DC/DC 300W/20A.


 Dzisiaj chciałbym podzielić się z Wami moim najnowszym projektem warsztatowym. Jest to inteligentny sterownik, monitor oraz ultraszybki cyfrowy bezpiecznik przeznaczony do współpracy z popularnymi, mocnymi modułami przetwornic obniżających napięcie (Step-Down CC/CV 20A 300W). Niezbędna będzie też modyfikacja bocznika w INA219.

Głównym zadaniem projektu jest zabezpieczenie źródła zasilania całego urządzenia. W zależności od wydajności źródła zasilania możemy tak ustawić blokady by go nie uszkodzić. Bez względu na to czy będzie to transformator z mostkiem i kondensatorem, akumulator czy jakaś przetwornica. Układ umożliwia zabezpieczenie wszystkiego co podaje napięcie DC na wejście układu i pod warunkiem, że U max. nie przekroczy 30V. Układ powstał głównie w celu wykorzystania starych zasilaczy do laptopów których trochę mi się uzbierało.

Schemat wyjaśniający ideę projektu:


 

Sercem układu jest moduł ESP8266 (NodeMCU), który współpracuje z układem pomiarowym INA219, wyświetlaczem ST7789 oraz miniaturowym przekaźnikiem kontaktronowym MSS2-1A05B. Do zasilania części cyfrowej została użyta dodatkowa mała przetworniczka która ma zakres napięć wejściowych od 5 do 30V a na wyjściu daje tylko jedno napięcie +5V które jest podawane na wejście Vin płytki procesora. Tak wygląda dodatkowa przetwornica której użyłem (zdemontowane gniazdo USB które było na wyjściu):


Dlaczego ten projekt powstał?

Standardowe chińskie przetwornice DC/DC z regulacją prądu i napięcia (CC/CV) są tanie i wydajne, ale posiadają istotną wadę: brak precyzyjnego, cyfrowego monitoringu parametrów w czasie rzeczywistym oraz brak możliwości zdefiniowania sztywnych limitów mocy czy napięcia, których przekroczenie natychmiast odetnie obciążenie. Ten projekt rozwiązuje ten problem, zamieniając zwykły moduł DC/DC w zaawansowany, programowalny zasilacz laboratoryjny :) .

Główne cechy urządzenia:

  • Szeroki zakres napięć wejściowych: 7V do 30V DC.

  • Maksymalny prąd roboczy: do 20 A (moc maksymalna do 300 W).

  • Ultraszybki bezpiecznik programowy: monitorowanie i ochrona przed przekroczeniem zadanego napięcia (U), prądu (I) oraz mocy całkowitej (P).

  • Zapis ustawień Non-Volatile: Limity bezpieczeństwa są zapisywane bezpośrednio w pamięci Flash układu ESP8266 (bez użycia klasycznej biblioteki EEPROM). Tak więc ustawienia są pamiętane nawet po wyłączeniu zasilania.

  • Graficzny interfejs użytkownika: Wyświetlacz LCD ST7789 (320x240 px) z płynnie odświeżanymi paskami postępu (podziałka 0-100% obciążenia limitu) oraz ekranem alarmowym.

  • Automatyczny restart: Po wyzwoleniu zabezpieczenia układ odlicza 3 sekundy i podejmuje próbę ponownego załączenia wyjścia. Jeżeli zniknie przyczyna przeciążenia przetwornica podejmie normalną pracę. Uwaga! Bezpośrednie zwarcie na wyjściu natychmiast zablokuje przetwornicę. Po usunięciu zwarcia przetwornica pracuje normalnie.

     


Architektura Sprzętowa i Moduł INA219

Kluczowym elementem odpowiedzialnym za pomiary jest układ INA219 komunikujący się przez magistralę I2C. Fabrycznie moduły te wyposażone są w rezystor bocznikowy (shunt) o wartości 0,1Ω. Przy prądzie rzędu 20 A spadek napięcia na takim boczniku wynosiłby aż 2 V, co generowałoby ogromne straty mocy i natychmiastowe uszkodzenie płytki.

Aby dostosować układ do wysokich prądów, fabryczny bocznik został zastąpiony zewnętrznym rezystorem precyzyjnym o wartości 0,01 Ω wpiętym w plusową linię wyjściową przetwornicy (High-Side). Dzięki temu przy 20 A tracimy zaledwie 4 W mocy, a spadek napięcia wynosi bezpieczne 200 mV.

Moduł przetwornicy zawiera rezystor pomiarowy (za zwyczaj 0.04Ω ) na minusie który pozostawiamy bez zmian.

 

W kodzie programu wymusiło to autorską konfigurację rejestru kalibracji układu INA219:

C++
uint16_t calValue = 40960; 
uint16_t configValue = INA219_CONFIG_BVOLTAGERANGE_32V |
                       INA219_CONFIG_GAIN_8_320MV |
                       INA219_CONFIG_BADCRES_12BIT_64S_34MS | 
                       INA219_CONFIG_SADCRES_12BIT_64S_34MS | 
                       INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS;

 

Przeliczenie prądu w pętli głównej uwzględnia bocznik 0,01Ω, gdzie spadek 10 mV odpowiada natężeniu 1 A:

C++
float current_A = (shuntVoltage / 10.0);
 
 

Sterowanie Przetwornicą – Przekaźnik Kontaktronowy

Do sterowania stanem pracy modułu Step-Down wykorzystałem dedykowane wejście ENABLE (EN) na płycie przetwornicy. Za fizyczne kluczowanie tego sygnału odpowiada miniaturowy przekaźnik kontaktronowy MSS2-1A05B, sterowany poprzez tranzystor PNP z pinu D0 procesora ESP8266.

  • Stan normalny (Praca): Pin D0 w stanie niskim (LOW), przekaźnik zwiera sygnał EN do odpowiedniego potencjału startowego przetwornicy.

  • Stan alarmu (Zabezpieczenie): Wykrycie przekroczenia limitu natychmiast ustawia pin D0 w stan wysoki (HIGH), rozłączając obwód EN i błyskawicznie wyłączając kluczowanie tranzystorów mocy w przetwornicy.

    W układzie został zastosowany przekaźnik MSS2-1A05B ze względu na różne sposoby blokowania przetwornic ale o tym później.

 

Logika Menu i Praca Bezbiblioteczna z Pamięcią Flash

Sterowanie limitami odbywa się za pomocą dwóch przycisków: MENU (pin D6) oraz ZMIANA (pin A0 z zewnętrznym rezystorem pull-up 10k). Układ pozwala na płynną regulację progów odcięcia:

  • Napięcie: do 24,0 V  (krok co 0,5 V)

  • Prąd: do 20,0 A        (krok co 0,5 V)

  • Moc: do 300 W         (krok co 10 W)

     


Ciekawostką programistyczną jest rezygnacja z gotowych bibliotek typu EEPROM na rzecz bezpośrednich odwołań do niskopoziomowego SDK ESP8266 (spi_flash_erase_sector oraz spi_flash_write). Zapis danych realizowany jest binarne w bezpiecznym sektorze 1011 z weryfikacją poprawności za pomocą unikalnego identyfikatora Magic ID (0x55AA55AA):

C++
struct FlashConfig {
  uint32_t magic;
  float max_voltage;
  float max_current;
  float max_power;
};

Podczas zapisu i odczytu, na czas operacji na strukturze pamięci, blokowane są przerwania mikrokontrolera (noInterrupts()), co gwarantuje integralność danych i zabezpiecza procesor przed zawieszeniem.

 

Przetwornice dostępne na AliExpress opisywane jako "20A 300W CC CV Step Down Module Regulowany DC 6-40V do 1.2-36V" (SZBK07) występują w kilku wersjach:

Wersja którą posiadam. Przetwornica działa po podaniu napięcia z wejścia przetwornicy (Vin+). Kolor żółty to niewidoczna ścieżka do pinu EN układu scalonego którego nazwa została przez producenta zeszlifowana. 

 

Inna wersja której schemat znajdziemy w internecie. Tutaj nazwa układu scalonego jest widoczna. Jest to inny układ scalony (LM25116). Tu wejście EN układu scalonego jest podciągnięte do plusa zasilania poprzez rezystor 1M a uruchomienie następuje poprzez zwarcie wejścia EN do masy (GND):

  


Właśnie do tego jest użyty przekaźnik MSS2-1A05B by było można użyć różnych typów przetwornic. Po prostu przyłączamy kontaktron przekaźnika w miejsce usuniętego przełącznika ON/OFF.


Kilka informacji o przekaźniku  MSS2-1A05B. Przekaźnik fabryczne jest zasilany napięciem 5V a styki wytrzymują prąd do 1A. W projekcie jest on zasilany napięciem 3,3V ale pracuje poprawnie i niezawodnie. Oczywiście można zastosować inny podobny przekaźnik. Schemat połączeń wewnętrznych zastosowanego przekaźnika:  


 

 SCHEMAT POŁĄCZEŃ :

POWIĘKSZENIE DOSTĘPNE W "OTWÓRZ ODNOŚNIK W NOWEJ KARCIE".

 

Podsumowanie i dalsze kroki

Układ sprawuje się znakomicie. Bezpiecznik programowy reaguje niezwykle szybko, chroniąc zasilane prototypy przed zniszczeniem w przypadku zwarcia. Na wyświetlaczu ST7789 wszystko jest czytelne dzięki dużym czcionkom Adafruit GFX i graficznym bar-grafom, które precyzyjnie pokazują, jak blisko zdefiniowanego limitu aktualnie pracujemy. 

Oczywiście nie pisałem tu o rzeczy oczywistej czyli o zastąpieniu potencjometrów znajdujących się na płycie przetwornicy "normalnymi" potencjometrami wieloobrotowymi które wyprowadzamy przewodami i umieszczamy w dogodnym dla nas miejscu na płycie czołowej urządzenia.

 

LINK DO PROGRAMU w formacie (*.bin): 

https://mega.nz/folder/EV0zmA7Z#KL4DJds3lYAv1b6Y1EDBLQ

 Gdyby ktoś bardzo potrzebował program w postaci *.ino to proszę o kontakt (komentarz lub poprzez e-mail:  hf5wwl@gmail.com).

 

 

UZUPEŁNIENIE  15.07.2026 r.

Trwają intensywne prace nad wyświetlaniem parametrów na ekranie monitora warsztatowego (laptopa, komputera itp.) poprzez sieć WiFi.

Dodanie obsługi WiFi pociągnęło kilka zmian w konstrukcji urządzenia i zmiany programowe. O tym później. 

Jak na razie wszystko działa bardzo płynnie. Odczyty są natychmiastowe.

Na razie wyświetlanie na ekranie monitora wygląda tak:

 

Normalna praca. 

 
 
 
Blokada przetwornicy. Zostało przekroczone ustawione napięcie maksymalne.

Prace trwają. Muszę poprawić kilka szczegółów. Oczywiście, gdy wszystko dopracowane to podzielę się tym z Wami.

 

 

✍️ Autor: Robert HF5WWL
📅 Data projektu: Lipiec 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) 
😊

 

 #ESP8266 #INA219 #ST7789 #NodeMCU #Arduino #MSS2-1A05B #przekaźnik-kontaktronowy

 #zasilacz-warsztatowy #przetwornica-DC-DC #Step-Down #cyfrowy-bezpiecznik #zabezpieczenie-nadprądowe #elektronika-DIY #pomiar-prądu #High-Side-Current #bocznik