___________________________________________________________________________________________________________________________________________________________________________
___________________________________________________________________________________________________________________________________________________________________________

04 września 2026

MMDVM z emulatorem ewświetlacza NEXTIN.

 

HotSpot podczas uruchamiania systemu (jeszcze bez obudowy).

    Podczas budowy mojego hotspotu MMDVM pojawiła się potrzeba zastosowania większego i bardziej czytelnego wyświetlacza niż typowy 0,96" ekran OLED. Zamiast kupować kolejny gotowy moduł (domyślnie Nextion), postanowiłem zbudować własny emulator wyświetlacza NEXTION, wykorzystujący kolorowy ekran TFT 320 × 240 pikseli oraz mikrokontroler ESP32.

    Urządzenie komunikuje się z hotspotem poprzez interfejs szeregowy dedykowany dla wyświetlacza NEXTION. Z punktu widzenia MMDVM mój emulator zachowuje się więc jak oryginalny wyświetlacz, ale cała grafika jest generowana bezpośrednio przez ESP32.

Złącze wyświetlacza NEXTION na płytce MMDVM DUAL
 

Co pokazuje wyświetlacz?

Podczas odbioru transmisji na ekranie prezentowane są najważniejsze informacje:

  • znak wywoławczy korespondenta,
  • imię operatora,
  • aktywna grupa TalkGroup,
  • poziom odbieranego sygnału RSSI,
  • wskaźnik jakości transmisji BER,
  • aktywny tryb DMR,
  • numer slotu /opcja/,
  • aktualny status RX/IDLE,
  • trzy ostatnio słyszane stacje (w czasie "oczekiwania").

Interfejs został zaprojektowany tak, aby najważniejsze informacje były widoczne z większej odległości. Zrezygnowałem więc z typowego „terminalowego” wyglądu na rzecz prostego, graficznego interfejsu.



Przykładowy ekran podczas normalnej pracy.
 

Wskaźnik poziomu sygnału

Dodatkowo wyświetlacz posiada graficzny wskaźnik poziomu sygnału. Jego wskazania są uzależnione od wartości RSSI otrzymywanej z MMDVM.

Im silniejszy sygnał, tym więcej aktywnych segmentów wskaźnika. Zastosowane zostało również kolorowe oznaczenie poziomu sygnału:

czerwony → żółty → zielony

Dzięki temu nie trzeba nawet odczytywać wartości liczbowej — jednym spojrzeniem można ocenić jakość odbioru.

Wskaźnik BER

Drugim ważnym parametrem jest BER, czyli Bit Error Rate. Na ekranie znajduje się zarówno wartość BER, jak i graficzny pasek.

Przy małym poziomie błędów pasek pozostaje krótki i zielony. Wraz ze wzrostem BER zmienia kolor na żółty, a przy większej liczbie błędów przechodzi w czerwony.

W przypadku cyfrowego DMR jest to bardzo przydatna informacja, ponieważ sam poziom RSSI nie zawsze mówi nam, czy transmisja będzie poprawnie odbierana.

Ekran oczekiwania

Gdy korespondent kończy nadawanie, wyświetlacz przechodzi w ekran oczekiwania na następnego korespondenta.

Gdy nie pojawia się nowy korespondent i grupa zostaje zamknięta znika sygnalizacja oczekiwania a jej miejsce zajmuje zegar.



 Dzięki temu od razu wiadomo, że hotspot pracuje, ale aktualnie nie odbiera żadnej transmisji.

 

Wygaszacz ekranu

Ponieważ wyświetlacz pracuje praktycznie przez cały czas, dodałem również prosty wygaszacz ekranu.

Po 5 minutach braku aktywności ekran zostaje wygaszony. Nie oznacza to oczywiście wyłączenia hotspotu — ESP32 oraz komunikacja z MMDVM nadal pracują. Opcjonalnie można wyłączyć programowo podświetlenie matrycy wyświetlacza. Ta funkcja jest ujęta w programie.

Pojawienie się nowej aktywności automatycznie wybudza ekran i ponownie pokazuje informacje o korespondencie.


 

ESP32 zamiast klasycznego NEXTION

Najciekawszą częścią projektu jest chyba właśnie sposób działania urządzenia.

Oryginalny wyświetlacz NEXTION posiada własny procesor i interpretuje polecenia przesyłane przez MMDVM. Tutaj jego rolę przejmuje ESP32.

ESP32:

  1. odbiera dane z interfejsu szeregowego MMDVM,

  2. analizuje polecenia przeznaczone dla NEXTION,

  3. wyodrębnia z nich informacje o korespondencie,

  4. rozpoznaje TalkGroup, RSSI i BER,

  5. generuje własny interfejs graficzny na ekranie TFT.

Dzięki temu wygląd wyświetlacza można zmieniać programowo bez ingerencji w konfigurację samego hotspotu.

 

Dlaczego właśnie tak?

    Projekt powstał przede wszystkim z ciekawości i chęci wykorzystania tego, co już miałem w warsztacie.

Zamiast ograniczać się do możliwości fabrycznego ekranu NEXTION, można stworzyć własny interfejs dokładnie taki, jaki jest potrzebny.

A ponieważ ESP32 ma znacznie większe możliwości niż klasyczny sterownik prostego wyświetlacza, pozostaje jeszcze sporo miejsca na dalszy rozwój programu.

Na tym etapie najważniejsze jest jednak to, że urządzenie działa stabilnie i spełnia swoją podstawową funkcję.

Reszta? Jak to zwykle w projektach krótkofalarskich bywa — skoro działa, to zawsze można jeszcze coś poprawić. 😉

 

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
  • GND   -> GND
  • BL       -> GPIO 32   /podświetlenie matrycy –opcja/

 

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


     

Podsumowanie

Mój emulator NEXTION jest więc niewielkim, samodzielnym terminalem informacyjnym dla hotspotu MMDVM.

ESP32 + TFT 320 × 240 + interfejs NEXTION/MMDVM pozwalają uzyskać czytelny, kolorowy ekran prezentujący najważniejsze informacje o aktualnej pracy hotspotu.

Projekt pokazuje również, że nie zawsze trzeba korzystać z gotowych rozwiązań. Czasami wystarczy mikrokontroler, wyświetlacz i trochę wolnego czasu, aby zrobić urządzenie dokładnie dopasowane do własnych potrzeb.

 

     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