___________________________________________________________________________________________________________________________________________________________________________
___________________________________________________________________________________________________________________________________________________________________________

11 listopada 2025

WYŚWIETLACZ ST7789P3

 


Nietypowy wyświetlacz ST7789P3  284×73 pix – test i charakterystyka

 

 

Wprowadzenie

Zakupiłem ostatnio ciekawy wyświetlacz w rozsądnej cenie:

 

 

 

W świecie mikrokontrolerów i wyświetlaczy TFT czasami natrafiamy na perełki, które wyróżniają się nietypowymi parametrami. Takim właśnie egzemplarzem jest wyświetlacz ST7789P3 – sterownik znany, ale w zupełnie niestandardowym wykonaniu. W tym artykule omówię ten ciekawy wyświetlacz i pokażę, jak go uruchomić z ESP32.

Parametry techniczne



SterownikST7789P3
Rozdzielczość284 × 73 pikseli
InterfejsSPI
Kolory16-bit (65K kolorów)
Wymiary aktywne  ~61.0 × 15.7 mm
PodświetlenieLED, 3.3V
Napięcie zasilania3.3V

Uwaga: Rozdzielczość 284×73 pikseli jest nietypowa dla sterowników ST7789, które zazwyczaj obsługują standardowe rozdzielczości jak 240×240 czy 135×240. Ten "wąski i szeroki" format sprawia, że wyświetlacz idealnie nadaje się do aplikacji wymagających pasków stanu, wskaźników czy minimalistycznych interfejsów.

Podłączenie do ESP32

Konfiguracja połączeń z mikrokontrolerem ESP32 przedstawia się następująco:

cpp
#define TFT_CS            15  // Chip Select
#define TFT_RST            4  // Reset
#define TFT_DC              2  // Data/Command
#define TFT_MOSI         23  // MOSI (SDA)
#define TFT_SCLK         18  // Clock (SCK)
#define TFT_BACKLIGHT  5  // Podświetlenie

Schemat połączeń:

  • VCC → 3.3V ESP32

  • GND → GND ESP32

  • CS    → GPIO15

  • RST  → GPIO4

  • DC    → GPIO2

  • SDA  → GPIO23

  • SCK  → GPIO18

  • BL     → GPIO5

Kluczowa różnica: podświetlenie aktywne stanem LOW

UWAGA! To najważniejsza informacja dla osób mających problemy z uruchomieniem tego wyświetlacza:

cpp
pinMode(TFT_BACKLIGHT, OUTPUT);
digitalWrite(TFT_BACKLIGHT, LOW);   // AKTYWACJA podświetlenia

W przeciwieństwie do większości standardowych wyświetlaczy ST7789, gdzie podświetlenie aktywowane jest stanem HIGH, w modelu ST7789P3 podświetlenie wymaga stanu LOW. To częsty powód, dla którego wiele osób sądzi, że ma uszkodzony egzemplarz – podświetlenie po prostu nie świeci, mimo poprawnego podłączenia.

Inicjalizacja w Arduino IDE

Do obsługi wyświetlacza wykorzystaliśmy bibliotekę Adafruit_ST7789 z następującą konfiguracją:

cpp
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>

#define TFT_WIDTH 284
#define TFT_HEIGHT 76

Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  pinMode(TFT_BACKLIGHT, OUTPUT);
  digitalWrite(TFT_BACKLIGHT, LOW); // Włącz podświetlenie
  
  tft.init(TFT_HEIGHT, TFT_WIDTH); // Uwaga: wysokość, szerokość
  tft.setRotation(1);              // Obrót 90°
  tft.fillScreen(ST77XX_BLACK);
}

Ważne: W funkcji init() podajemy najpierw wysokość (76), a potem szerokość (284), a dopiero setRotation(1) zapewnia prawidłową orientację poziomą.

Teraz niestety będziemy mieli obraz w negatywie. Musimy zmienić go na pozytyw. To znaczy, w sekcji Viod Setup () musimy dodać:

  tft.invertDisplay(false);

 

Wyzwania i rozwiązania

Podczas konfiguracji napotkałem kilka wyzwań:

  1. Nietypowa rozdzielczość - wymagała ręcznego zdefiniowania wymiarów

  2. Orientacja - konieczność użycia setRotation(1) dla pozycji poziomej

  3. Podświetlenie - odwrotna polaryzacja niż w standardowych modelach

  4. Optymalizacja animacji - konieczność minimalizowania mrugania poprzez częściowe odświeżanie

Przykładowe zastosowania

Dzięki nietypowym proporcjom, wyświetlacz idealnie nadaje się do:

  • Pasków stanu i wskaźników progresu 

  • Miniaturowych konsoli do debugowania 

  • Wyświetlaczy parametrów w projektach audio a szczególnie jako wyświetlacze do zasilaczy

  • Interface'ów dla czujników środowiskowych

  • Projektów wearable tech (ze względu na wąski format) 

Podsumowanie

ST7789P3 w rozdzielczości 284×73 to ciekawa alternatywa dla standardowych wyświetlaczy TFT. Pomimo początkowych wyzwań konfiguracyjnych, oferuje unikalne możliwości dla niszowych aplikacji. Kluczowe dla sukcesu jest pamiętanie o odwróconej polaryzacji podświetlenia - bez tej wiedzy uruchomienie wyświetlacza może być frustrującym doświadczeniem.

Czy warto? Dla projektów wymagających kompaktowego, poziomego wyświetlacza - zdecydowanie tak! To dowód na to, że nawet znane sterowniki mogą kryć w sobie nietypowe implementacje wartexploration. Do tego ta cena!

Napisałem prosty program demonstrujący podstawowe możliwości wyświetlacza a za razem testujący go. 

 


W rzeczywistości kolory są inne. Są pięknie nasycone i ostre. Niestety, mój aparat ma inne zdanie...

Pliki do pobrania: Pełny kod demo dostępny jest w repozytorium projektu. Pamiętaj o autorze i wspomnij o nim gdy będziesz rozpowszechniał ten program i projekt :) Dziękuję.

Test i demo wyświetlacza ST7789P3 -link

 



20 października 2025

TESTER POJEMNOŚCI AKUMULATORÓW Li-Ion.



Tester pojemności akumulatorów Li-Ion   Ver. 4.6

Witam wszystkich miłośników elektroniki i krótkofalowców! Na warsztacie dziś moje najnowsze urządzenie pomiarowe: autorski tester pojemności akumulatorów Li-Ion. Pozwala on w prosty i stosunkowo tani sposób określić rzeczywistą pojemność (w mAh) i zmagazynowaną energię (w Wh) ogniw, które mamy w szufladzie lub które podejrzewamy o "zmęczenie" życiem.

Poniżej opiszę, jak to urządzenie działa "od środka".

UWAGA! Urządzenie przeznaczone jest dla "gołych" akumulatorów które nie posiadają zabezpieczeń przed nadmiernym rozładowaniem. Po prostu takie akumulatory nie dadzą się rozładować do napięcia 2,5 V a tym samym nie ma możliwości określenia ich pełnej pojemności.

Zasada działania (w pigułce)

Pomiar pojemności akumulatora polega na kontrolowanym rozładowaniu akumulatora do ustalonego napięcia końcowego, przy jednoczesnym całkowaniu przepływającego prądu w czasie. Proces ten symuluje zużycie energii przez typowe urządzenie i daje nam najbardziej miarodajny wynik.

"Serce" układu: Arduino Nano, wyświetlacz ST7789 i rezystor pomiarowy 10R / 10W.

  • Mikrokontroler: Układ jest sterowany przez popularne Arduino Nano, które odpowiada za wszystkie obliczenia, sterowanie i komunikację z użytkownikiem.

  • Wyświetlacz: Interfejs użytkownika to kolorowy wyświetlacz ST7789 o rozdzielczości 320x240 pikseli. Dzięki rotacji obrazu uzyskałem wygodny, poziomy (landscape) layout, na którym wyświetlam wszystkie kluczowe parametry w czasie rzeczywistym.

Kluczowe elementy obwodu pomiarowego:

  1. Obciążenie (rezystor pomiarowy): Głównym elementem rozładowującym jest rezystor 10Ω o mocy 10W. Ze względu na wydzielanie się sporej ilości ciepła podczas pracy, rezystor ten został wyposażony w dodatkowy radiator.

  2. Klucz (tranzystor MOSFET  IRLZ44N): Aby włączyć i wyłączyć proces rozładowania, w obwód szeregowo z rezystorem wpiąłem tranzystor MOSFET, sterowany poprzez rezystor 100R z pinu Arduino. Działa on jak przełącznik elektroniczny. Dodatkowo bramka MOSFET-a jest poprzez rezystor 100 kΩ przyłączona do + zasilania w celu zapobiegania przypadkowemu załączeniu obciążenia do akumulatora.

  3. Pomiar napięcia: Do pomiaru napięcia akumulatora oraz napięcia na rezystorze wykorzystałem wejścia analogowe A0 i A1 Arduino. Aby nie obciążać nadmiernie akumulatora poza czasem pomiaru, zastosowałem dzielniki napięcia z rezystorami 100 kΩ. Dzięki temu pobór prądu przez układ pomiarowy przed i po procesie pomiaru jest znikomy. Wejścia te są zblokowane do masy przez kondensatory 100nF.

Przebieg pomiaru krok po kroku

Program działa w oparciu o maszynę stanów, co oznacza, że urządzenie przechodzi przez kilka precyzyjnie zdefiniowanych etapów:

  1. WAITING_TO_START (Oczekiwanie na Start):

    • Urządzenie jest w stanie spoczynku. Wyświetla napięcie akumulatora i sprawdza, czy mieści się w bezpiecznym zakresie (2.8V - 4.3V dla Li-Ion).

    • Aby rozpocząć pomiar pojemności akumulatora, użytkownik musi wcisnąć przycisk "START". Sygnalizacja dźwiękowa z buzzera potwierdza komendę.


       

  2. DISCHARGING (rozładowanie główne):

    • Arduino załącza tranzystor MOSFET, zamykając obwód. Prąd płynie z akumulatora przez rezystor 10Ω.

    • Na podstawie spadku napięcia na rezystorze (Res_Volt) układ na bieżąco oblicza:

      • Prąd rozładowania: I = (Bat_Volt - Res_Volt) / 10Ω

      • Pojemność: Pojemność (mAh) = Całka (I * dt)

      • Energię: Energia (Wh) = Całka (I * Bat_Volt * dt)

    • Wszystkie te wartości są na żywo aktualizowane na wyświetlaczu.

    • Proces trwa do momentu, gdy napięcie akumulatora spadnie do 2.8V.


       

  3. FINAL_DISCHARGE (końcowe rozładowanie):

    • Gdy akumulator osiągnie 2.8V, uruchamiany jest 60-sekundowy etap "dodatkowego" rozładowania do głębszego, ale bezpiecznego, napięcia 2.5V. Ma to na celu odzyskanie reszty energii, która pozostała w ogniwie, co nieco zwiększa dokładność pomiaru. Proces dodatkowego, końcowego rozładowania trwa 60 s lub osiągnięcia napięcia 2.5V na zaciskach akumulatora.

  4. MEASUREMENT_DONE (pomiar zakończony):

    • Rozładowanie zostaje całkowicie zatrzymane. Na ekranie wyświetlane są finalne wyniki: zmierzona pojemność (mAh) i energia (Wh).

    • Kolejny sygnał dźwiękowy informuje o zakończeniu testu.


       

Bezpieczeństwo i estetyka

  • Zabezpieczenia: Program ma wbudowane zabezpieczenia przed rozpoczęciem pomiaru przy zbyt niskim lub zbyt wysokim napięciu akumulatora.

  • Interfejs: Ekran został zaprojektowany tak, aby był czytelny. Stałe elementy interfejsu (nagłówki, etykiety) rysowane są tylko raz przy zmianie stanu, a dynamicznie aktualizowane są tylko zmieniające się wartości (np. napięcie, prąd). Eliminuje to nieprzyjemne "miganie" całego ekranu.

  • Komunikacja: Urządzenie informuje użytkownika o swoim stanie za pomocą buzzer'a (krótkie sygnały dźwiękowe).

Podsumowanie

Tester pojemności akumulatorów Li-Ion to nieocenione narzędzie dla każdego, kto pracuje z akumulatorami. Pozwala weryfikować stan posiadanych ogniw, diagnozować wadliwe ogniwa lub po prostu porządkować swoją "kolekcję" ogniw. Dzięki Arduino cały proces jest w pełni zautomatyzowany, a kolorowy wyświetlacz czyni go nie tylko funkcjonalnym, ale i nowoczesnym urządzeniem pomiarowym.

Uwaga dla majsterkowiczów: Pamiętajcie, że rozładowywanie akumulatorów Li-Ion poniżej pewnego napięcia (zwłaszcza 2.5V) może je uszkodzić. Mój program został zaprojektowany z myślą o bezpiecznym, jednorazowym teście pojemności, a nie jako stały system rozładowywania. Używajcie go z rozwagą! 

AKUMULATORY Li-Ion POTRAFIĄ ZGROMADZIĆ SPORO ENERGII. NIEOSTROŻNE OBCHODZENIE SIĘ Z NIMI MOŻE SPOWODOWAĆ POŻAR LUB INNE NIESZCZĘŚCIE. JEŻELI NIE WIESZ CO ROBISZ TO ZREZYGNUJ Z BUDOWY TAKIEGO URZĄDZENIA! 

Kod programu jak zwykle udostępniam zainteresowanym poprzez e-mail (hf5wwl@gmail.com) ze względu na ograniczenia bloga który nie daje możliwości  umieszczenia go tutaj.  

 


 

UWAGA! Zamieszczone zdjęcia nie przedstawiają całego procesu pomiaru pojemności akumulatora. Są to tylko zdjęcia poglądowe które pozwalają zorientować się co i jak wygląda :) 



EDIT 23.10.2025 r.

 

Tester pojemności Li-Ion Ver. 4.6 - kluczowe ulepszenia

Dynamiczny Tryb Końcowego Rozładowania - Znaczące polepszenie dokładności pomiarów

Do opisanego wcześniej testera wprowadziłem kluczową innowację, która znacząco podnosi dokładność pomiarów:

🔋 NOWOŚĆ: Cykliczne rozładowanie 5s ON / 10s OFF

  • W fazie końcowego rozładowania urządzenie pracuje w powtarzalnych cyklach

  • 5 sekund z włączonym obciążeniem → pomiar prądu

  • 10 sekund z wyłączonym obciążeniem → precyzyjny pomiar napięcia bez obciążenia (V-off-load)

  • Warunek stopu (2.5V) sprawdzany tylko w fazie bez obciążenia

📊 Dlaczego to ważne?

  • Eliminuje błąd pomiaru caused by rezystancją wewnętrzną ogniwa

  • Napięcie bez obciążenia jest prawdziwym wskaźnikiem stanu akumulatora

  • Wyniki są znacznie bliższe rzeczywistej pojemności ogniwa

🖥️ Wizualizacja na żywo procesu dynamicznego obciążenia 

  • Wskaźnik OBCIAZENIE ON (czerwony) / OBCIAZENIE OFF (zielony)

  • Całkowity czas fazy końcowej: 5 minut

Pozostałe ulepszenia:

  • Skrócony czas prezentacji ekranu powitalnego (2s)

  • Dopracowane stałe kalibracyjne 

  • Lepsza organizacja kodu

    Dodałem też funkcję całkowitego odłączenia akumulatora po zakończeniu całego procesu rozładowania pozostawiając na ekranie tylko wynik pomiarów (pojemność + energia) 

     

Poniżej kilka fotek zrobionych podczas pomiaru pojemności jakiegoś akumulatorka o pojemności około 350 mAh. Akurat ten akumulatorek posiada układ zabezpieczający. 

Akumulator został rozładowany a następnie naładowany. Według ładowarki akumulator "przyjął" 355 mAh.


 

Tak wygląda ekran miernika pojemności akumulatora podczas pracy (rozładowywanie główne):


 

 Teraz rozładowywanie dodatkowe (włączanie i wyłączanie obciążenia)


 

Tak wygląda przygotowanie do posumowania pomiarów i całkowite odłączenie akumulatora:


 

Jak widać pojemność akumulatorka można ocenić na 350 mAh.

 

 Na koniec schemat montażowy miernika pojemności akumulatorów.





.

17 czerwca 2025

3 KANAŁOWY STEROWNIK OŚWIETLENIEM LED

 


Główne funkcje systemu:

  1. 3 niezależne kanały sterowania oświetleniem:

    • Każdy kanał ma własny czujnik ruchu (HC-SR501)

    • Sterowanie taśmą LED przez moduł XY-MOS

    • Płynna regulacja jasności (PWM)

  2. Inteligentne sterowanie oświetleniem:

    • Płynne zwiększanie jasności po wykryciu ruchu

    • Stałe świecenie przez ustawiony czas

    • Płynne wygaszanie po upływie czasu

    • Automatyczne przedłużanie świecenia przy nowym ruchu

  3. Pełna konfigurowalność:

    • Niezależne ustawienia dla każdego kanału:

      • Czas narastania jasności (Fade In)

      • Czas świecenia pełną jasnością (On Time)

      • Czas wygaszania (Fade Out)

    • Trwałe zapisywanie ustawień w pamięci EEPROM

  4. Zaawansowany interfejs użytkownika:

    • Wyświetlacz ST7789 (240x320) z czytelnym menu

    • Enkoder obrotowy z przyciskiem do nawigacji

    • Intuicyjna struktura menu:

      • Ekran statusu

      • Wybór kanału do edycji

      • Edycja parametrów czasowych

    • Wizualne podświetlenie aktualnej opcji

Schemat działania:

[Status] → [Wybór kanału] → [Edycja parametrów]
     ↑                  |      ↑                         |
     |__________|      |______________|
          (Powrót)              (Zapisz)

 

Instrukcja obsługi:

  1. Ekran główny (Status):

    • Pokazuje stan wszystkich 3 kanałów

    • Krótkie wciśnięcie: przejście do menu wyboru kanału

  2. Wybór kanału:

    • Obrót enkoderem: wybór kanału 1-3 lub "Powrót"

    • Krótkie wciśnięcie:

      • Na kanale: przejście do edycji jego parametrów

      • Na "Powrót": powrót do ekranu głównego

  3. Edycja parametrów:

    • Obrót enkoderem: wybór parametru lub "Zapisz i wyjdź"

    • Krótkie wciśnięcie:

      • Na parametrze: zmniejszenie jego wartości

      • Na "Zapisz i wyjdź": zapis ustawień i powrót

    • Długie wciśnięcie (>0.5 s) na parametrze: zwiększenie wartości

 

Wskazówki techniczne:

  1. Podłączenie sprzętu:

    • Użyj pinów PWM (3,5,6) do sterowania XY-MOS

    • Zapewnij osobne zasilanie dla taśm LED

    • Dodaj kondensatory (100nF) do enkodera dla stabilności

  2. Oszczędzanie pamięci EEPROM:

    • Każdy zapis skraca żywotność pamięci

    • Unikaj częstych zapisów tych samych ustawień

  3. Rozszerzenia:

    • Możliwość dodania czujników światła (LDR)

    • Integracja z sterowaniem zdalnym (IR/RF)

    • Dodanie trybów pracy (np. nocny, czuwania)

       

       *************************************************

       Sterownik podczas pracy:


       Sterownik podczas ustawiania parametrów:


       

      Schemat sterownika: 


      Otwórz w nowym oknie by powiększyć.


    •  
      Trochę o komponentach: 
       
       

    • Wyświetlacz na powyższym zdjęciu jest tańszym zamiennikiem wyświetlacza ST7789. Można go "trafić" na AliExpress za 10...15 zł. Pod względem połączeń i sterowników jest w pełni kompatybilny z ST7789. Rozdzielczość to 240 na 320 pixeli. W programie użyłem biblioteki Adafruit_ST7789.h                                                                                                                                                                                    
    •  Do zasilania procesora i innych komponentów potrzebne jest napięcie 5V. By nie komplikować układu zastosowałem uniwersalną przetwornicę która w szerokim zakresie napięć wejściowych daje na wyjściu 5V. Przetwornica zasilana jest z 12V zasilających taśmy LED. Z przetwornicy zostało usunięte gniazdo USB A.                                                                                                                                                                                               . 
      Głównym źródłem zasilania jest przetwornica 12V 8,33A. Ta 100W przetwornica w pełni pokrywa zapotrzebowanie energetyczne mojego projektu. Przetwornica jest prosta i może generować zakłócenia elektromagnetyczne (jak to przetwornica) ale do jej zastosowania skusiła mnie cena. 9,40 zł na AliExpress.

      Pozostałe komponenty (enkoder obrotowy, czujniki ruchu i przełączniki MOSFET) były już stosowane w moich wcześniejszych projektach i tam zostały dokładnie opisane.
       
       
       Teraz kilka słów odnośnie programu sterującego. Blog uniemożliwia wstawianie takich plików więc trzeba je umieszczać na serwerach zewnętrznych. Jeżeli ktoś będzie zainteresowany otrzymaniem gotowego programu to proszę o kontakt poprzez e-mail. Na 100% odpowiem :)
      Program został napisany w środowisku Arduino IDE.