SP32-S3 3.92 cale IPS LCD ekran dotykowy a SUPLA ?

rafalekkalwak@wp.pl
Posts: 892
Joined: Mon Feb 06, 2023 8:56 am

Post

vajera wrote: Thu Nov 14, 2024 12:06 pm Zacząłem od kodu dołączonego do tego panelu - w oparciu o bibliotekę Arduino GFX zbudowałem prosty interfejs LVGL, który wygenerowałem w Square Line Studio. Schody zaczęły się po odpaleniu Supli i BLE - łączenie się z WiFi i zapis do EEPROM powodowały zaburzenia wyświetlania lub tzw. pływanie ekranu, tak że byłem już bliski wywalenia tego ustrojstwa do kosza i wtedy znalazłem to:

https://github.com/esp-arduino-libs/ESP32_Display_Panel

Muszę przyznać, że jest to potężne narzędzie - obraz jest stabilny, wyświetlanie płynne, aż się boję zapeszać. Od razu zaznaczam, że zgodnie z zaleceniami zastosowałem wersję high-perf bibliotek ESP - wszystko jest opisane tutaj:

https://github.com/esp-arduino-libs/ESP ... ocs/FAQ.md

Jedyny minus - aktualnie dostępny jest port do LVGL jedynie w wersji 8.x, ale póki co w zupełności mi to wystarcza a trwają prace nad portem do LVGL 9.x.

Kod udostępnię dzisiaj wieczorem na moim GitHubie, ale póki co to wersja robocza - działa subsystem Supla, BLE i podstawowa grafika.
Dzięki za podpowiedzi, jak możesz udostępnić to będę wdzięczny , obawiam się, że wymyśliłem sobie zbyt wymagający use case:
Chce przez MQTT odczytywać dane z Supli i ewentualnie sterować , ale MQTT Supli wymaga SSLa i niestety to żre jakieś zasoby.
vajera
Posts: 1177
Joined: Wed Oct 31, 2018 7:58 am

Post

rafalekkalwak@wp.pl wrote: Thu Nov 14, 2024 12:23 pm
Dzięki za podpowiedzi, jak możesz udostępnić to będę wdzięczny , obawiam się, że wymyśliłem sobie zbyt wymagający use case:
Chce przez MQTT odczytywać dane z Supli i ewentualnie sterować , ale MQTT Supli wymaga SSLa i niestety to żre jakieś zasoby.
Rozwiń temat, proszę. Chcesz odczytywać na tym panelu dane z innych urządzeń Supla przez MQTT (lokalnie?, Cloud?) i sterować nimi?
rafalekkalwak@wp.pl
Posts: 892
Joined: Mon Feb 06, 2023 8:56 am

Post

vajera wrote: Thu Nov 14, 2024 1:59 pm
rafalekkalwak@wp.pl wrote: Thu Nov 14, 2024 12:23 pm
Dzięki za podpowiedzi, jak możesz udostępnić to będę wdzięczny , obawiam się, że wymyśliłem sobie zbyt wymagający use case:
Chce przez MQTT odczytywać dane z Supli i ewentualnie sterować , ale MQTT Supli wymaga SSLa i niestety to żre jakieś zasoby.
Rozwiń temat, proszę. Chcesz odczytywać na tym panelu dane z innych urządzeń Supla przez MQTT (lokalnie?, Cloud?) i sterować nimi?
Tak, chce się podpiąc do MQTT z Clouda i wyświetlać sobie dane ze stacji pogodowej, plus dodać sterowanie np. bramą wjazdową - ogólnie chce sobie go powiesić przy wejściu do domu ;)
Adamo28
Posts: 196
Joined: Sun Nov 08, 2020 2:54 pm

Post

MQTT normalnie działa na zwykłym ESP8266 wraz z obsługą wyświetlacza, ale to jedno połączenie i starcza mi pamięci na styk. Odczytujesz wszystkie kanały jakie masz i na pewno można sterować przekaźnikami, nie wiem jak wygląda sterowanie resztą ficzerów dostępnych w supli. Lagowanie obrazu pewnie spowodowane jest poukrywanymi w bibliotekach delayami, na ESP32 powinno zasuwać aż miło, trzymam kciuki.
rafalekkalwak@wp.pl
Posts: 892
Joined: Mon Feb 06, 2023 8:56 am

Post

Adamo28 wrote: Thu Nov 14, 2024 6:47 pm MQTT normalnie działa na zwykłym ESP8266 wraz z obsługą wyświetlacza, ale to jedno połączenie i starcza mi pamięci na styk. Odczytujesz wszystkie kanały jakie masz i na pewno można sterować przekaźnikami, nie wiem jak wygląda sterowanie resztą ficzerów dostępnych w supli. Lagowanie obrazu pewnie spowodowane jest poukrywanymi w bibliotekach delayami, na ESP32 powinno zasuwać aż miło, trzymam kciuki.
No na zwykłym ESP32 też mi działa bez problemu połączenie z MQTT, tu jest jakiś zonk z alokacją pamięci, bo jak się połączę z MQTT To potem LVGL się nie zainicjuje i na odwrót, jak zainicjuje LVGL to połączyć z MQTT się nie połączę.
Muszę zobaczyć jakąś inną bibliotekę niz PubSubClient.
vajera
Posts: 1177
Joined: Wed Oct 31, 2018 7:58 am

Post

Zgodnie z obietnicą wrzucam kod - w razie potrzeby służę wyjaśnienieniami.

https://github.com/lsroka76/TFT_theromostat_2.0.git
vajera
Posts: 1177
Joined: Wed Oct 31, 2018 7:58 am

Post

rafalekkalwak@wp.pl wrote: Thu Nov 14, 2024 7:04 pm No na zwykłym ESP32 też mi działa bez problemu połączenie z MQTT, tu jest jakiś zonk z alokacją pamięci, bo jak się połączę z MQTT To potem LVGL się nie zainicjuje i na odwrót, jak zainicjuje LVGL to połączyć z MQTT się nie połączę.
Muszę zobaczyć jakąś inną bibliotekę niz PubSubClient.
W tym rozwiązaniu, które wdrożyłem u siebie LVGL korzysta z podwójnego buforowania obrazu 1:1 - oba bufory są w pamięci PSRAM (8 MB), więc całkiem sporo stosu powinno zostać wolne.

Sprawdzałeś ile stosu zostaje po każdym etapie?
rafalekkalwak@wp.pl
Posts: 892
Joined: Mon Feb 06, 2023 8:56 am

Post

vajera wrote: Fri Nov 15, 2024 6:25 pm
rafalekkalwak@wp.pl wrote: Thu Nov 14, 2024 7:04 pm No na zwykłym ESP32 też mi działa bez problemu połączenie z MQTT, tu jest jakiś zonk z alokacją pamięci, bo jak się połączę z MQTT To potem LVGL się nie zainicjuje i na odwrót, jak zainicjuje LVGL to połączyć z MQTT się nie połączę.
Muszę zobaczyć jakąś inną bibliotekę niz PubSubClient.
W tym rozwiązaniu, które wdrożyłem u siebie LVGL korzysta z podwójnego buforowania obrazu 1:1 - oba bufory są w pamięci PSRAM (8 MB), więc całkiem sporo stosu powinno zostać wolne.

Sprawdzałeś ile stosu zostaje po każdym etapie?
Tak, i wygląda to jak poniżej, ale chyba tu widać, że mu heapu brakuje :/

Code: Select all

bez mqtt ale z wifi

Starting
Heap: Free:273304, Min:268136, Size:307836, Alloc:237556
PSRAM (total): 8388608
Free PSRAM: 8385412
MinPSR: 8385412
AllocPSR: 8257524
connecting to wifi
.connected to wifi
After wifi and mqtt
Heap: Free:234316, Min:232904, Size:307836, Alloc:221172
PSRAM (total): 8388608
Free PSRAM: 8368948
MinPSR: 8364108
AllocPSR: 8257524
LVGL Widgets Demo
Before lvgl buffor allocation
Heap: Free:226064, Min:226064, Size:307836, Alloc:212980
PSRAM (total): 8388608
Free PSRAM: 7600824
MinPSR: 7593612
AllocPSR: 7471092
After lvgl buffor allocation
Heap: Free:34104, Min:34104, Size:307836, Alloc:25588
PSRAM (total): 8388608
Free PSRAM: 7600824
MinPSR: 7593612
AllocPSR: 7471092
Setup done


z mqtt:
Starting
Heap: Free:273288, Min:268120, Size:307820, Alloc:237556
PSRAM (total): 8388608 
Free PSRAM: 8385412 
MinPSR: 8385412
AllocPSR: 8257524
connecting to wifi
.connected to wifi
Connecting to mqtt
connected to MQTT
Connected to mqtt
After wifi and mqtt
Heap: Free:187968, Min:180924, Size:307820, Alloc:172020
PSRAM (total): 8388608
Free PSRAM: 8366668
MinPSR: 8354648
AllocPSR: 8257524
LVGL Widgets Demo
Before lvgl buffor allocation
Heap: Free:179824, Min:179824, Size:307820, Alloc:163828
PSRAM (total): 8388608
Free PSRAM: 7595372
MinPSR: 7592968
AllocPSR: 7471092
LVGL disp_draw_buf allocate failed!
Heap: Free:179824, Min:179824, Size:307820, Alloc:163828
PSRAM (total): 8388608
Free PSRAM: 7595372
MinPSR: 7592968
AllocPSR: 7471092
vajera
Posts: 1177
Joined: Wed Oct 31, 2018 7:58 am

Post

rafalekkalwak@wp.pl wrote: Fri Nov 15, 2024 8:11 pm ile stosu zostaje po każdym etapie?
Tak, i wygląda to jak poniżej, ale chyba tu widać, że mu heapu brakuje :/

Code: Select all

bez mqtt ale z wifi

Starting
Heap: Free:273304, Min:268136, Size:307836, Alloc:237556
PSRAM (total): 8388608
Free PSRAM: 8385412
MinPSR: 8385412
AllocPSR: 8257524
connecting to wifi
.connected to wifi
After wifi and mqtt
Heap: Free:234316, Min:232904, Size:307836, Alloc:221172
PSRAM (total): 8388608
Free PSRAM: 8368948
MinPSR: 8364108
AllocPSR: 8257524
LVGL Widgets Demo
Before lvgl buffor allocation
Heap: Free:226064, Min:226064, Size:307836, Alloc:212980
PSRAM (total): 8388608
Free PSRAM: 7600824
MinPSR: 7593612
AllocPSR: 7471092
After lvgl buffor allocation
Heap: Free:34104, Min:34104, Size:307836, Alloc:25588
PSRAM (total): 8388608
Free PSRAM: 7600824
MinPSR: 7593612
AllocPSR: 7471092
Setup done


z mqtt:
Starting
Heap: Free:273288, Min:268120, Size:307820, Alloc:237556
PSRAM (total): 8388608 
Free PSRAM: 8385412 
MinPSR: 8385412
AllocPSR: 8257524
connecting to wifi
.connected to wifi
Connecting to mqtt
connected to MQTT
Connected to mqtt
After wifi and mqtt
Heap: Free:187968, Min:180924, Size:307820, Alloc:172020
PSRAM (total): 8388608
Free PSRAM: 8366668
MinPSR: 8354648
AllocPSR: 8257524
LVGL Widgets Demo
Before lvgl buffor allocation
Heap: Free:179824, Min:179824, Size:307820, Alloc:163828
PSRAM (total): 8388608
Free PSRAM: 7595372
MinPSR: 7592968
AllocPSR: 7471092
LVGL disp_draw_buf allocate failed!
Heap: Free:179824, Min:179824, Size:307820, Alloc:163828
PSRAM (total): 8388608
Free PSRAM: 7595372
MinPSR: 7592968
AllocPSR: 7471092
Tutaj masz odpowiedź:

Code: Select all

LVGL disp_draw_buf allocate failed!
Ten komunikat oznacza, że lvgl próbuje zaalokować bufor w pamięci SRAM a nie PSRAM - wygląda na to, że korzystasz z przykładowego kodu.

Spróbuj mojego rozwiązania z ESP32_Display_Panel z włączonym direct double buffering i problem powinien zniknąć.
rafalekkalwak@wp.pl
Posts: 892
Joined: Mon Feb 06, 2023 8:56 am

Post

vajera wrote: Fri Nov 15, 2024 8:29 pm
rafalekkalwak@wp.pl wrote: Fri Nov 15, 2024 8:11 pm ile stosu zostaje po każdym etapie?
Tak, i wygląda to jak poniżej, ale chyba tu widać, że mu heapu brakuje :/

Code: Select all

bez mqtt ale z wifi

Starting
Heap: Free:273304, Min:268136, Size:307836, Alloc:237556
PSRAM (total): 8388608
Free PSRAM: 8385412
MinPSR: 8385412
AllocPSR: 8257524
connecting to wifi
.connected to wifi
After wifi and mqtt
Heap: Free:234316, Min:232904, Size:307836, Alloc:221172
PSRAM (total): 8388608
Free PSRAM: 8368948
MinPSR: 8364108
AllocPSR: 8257524
LVGL Widgets Demo
Before lvgl buffor allocation
Heap: Free:226064, Min:226064, Size:307836, Alloc:212980
PSRAM (total): 8388608
Free PSRAM: 7600824
MinPSR: 7593612
AllocPSR: 7471092
After lvgl buffor allocation
Heap: Free:34104, Min:34104, Size:307836, Alloc:25588
PSRAM (total): 8388608
Free PSRAM: 7600824
MinPSR: 7593612
AllocPSR: 7471092
Setup done


z mqtt:
Starting
Heap: Free:273288, Min:268120, Size:307820, Alloc:237556
PSRAM (total): 8388608 
Free PSRAM: 8385412 
MinPSR: 8385412
AllocPSR: 8257524
connecting to wifi
.connected to wifi
Connecting to mqtt
connected to MQTT
Connected to mqtt
After wifi and mqtt
Heap: Free:187968, Min:180924, Size:307820, Alloc:172020
PSRAM (total): 8388608
Free PSRAM: 8366668
MinPSR: 8354648
AllocPSR: 8257524
LVGL Widgets Demo
Before lvgl buffor allocation
Heap: Free:179824, Min:179824, Size:307820, Alloc:163828
PSRAM (total): 8388608
Free PSRAM: 7595372
MinPSR: 7592968
AllocPSR: 7471092
LVGL disp_draw_buf allocate failed!
Heap: Free:179824, Min:179824, Size:307820, Alloc:163828
PSRAM (total): 8388608
Free PSRAM: 7595372
MinPSR: 7592968
AllocPSR: 7471092
Tutaj masz odpowiedź:

Code: Select all

LVGL disp_draw_buf allocate failed!
Ten komunikat oznacza, że lvgl próbuje zaalokować bufor w pamięci SRAM a nie PSRAM - wygląda na to, że korzystasz z przykładowego kodu.

Spróbuj mojego rozwiązania z ESP32_Display_Panel z włączonym direct double buffering i problem powinien zniknąć.
Tak, poskładałem przykład widgets i zacząłem sobie w nim dłubać.

https://github.com/rkalwak/SuplaLvgl

Przesiadka na dodatkową bibliotekę będzie ciężka :D ale przynajmniej rozumiem w czym rzecz, muszę znaleźć jak go zmusić do używania PSRAMu do tego.

Dzięki za podpowiedź, działam.

Return to “Zagadnienia ogólne”