Skocz do zawartości

Programowalna kurtyna LED


Pomocna odpowiedź

Napisano

Cześć, znalazłem takie coś do kupienia na internetach.

Zastanawiam się w jaki sposób można by zrobić podobną rzecz własnymi siłami przy okazji czegoś się ucząc.

Założenie takie, że mamy jakiś prosty obrazek/animację i samodzielnie wgrywamy nowy obraz/animację poprzez zmianę szkicu przez OTA. 

Pytanie zasadnicze jak ten obrazek/animację(kilka obrazków) zamienić na kod do sterowania programowalnymi LED.

Z doświadczenia wiem, że nie wiem za dużo, więc nie będę się rozpisywał o rozdzielczościach, wielkościach kurtyny itp.

Jedno założenie, esp32 plus ew. moduł z kartą pamięci(czy potrzebny?).

Zapraszam szanownych kolegów do dyskusji;).

(edytowany)
1 godzinę temu, SOYER napisał:

nie będę się rozpisywał o rozdzielczościach, wielkościach kurtyny itp.

 

No ale od tego trzeba zacząć - to kluczowa wartość.

Załóżmy ekran (o kurtynie potem) wielkości metr na metr. Przy paskach 30 led/m potrzebujesz 30 m taśmy, ale nie wiem czy taka rozdzielczość będzie wystarczająca. Możesz sobie zrobić symulację jakiegoś gifa o wielkości np. 32x32 i sprawdzić czy to się do czegoś nadaje.

Przy pasku 60 led/m masz już rozdzielczość jako-tako wystarczającą, ale trzeba 60 m taśmy. Wysterować się da... ale ile to będzie kosztować? Szczególnie przy założeniu, że to ma być umieszczone na zewnątrz czyli taśma wodoodporna?

Dalej: połączenie elektryczne. W normalnym układzie wszystkie ledy muszą być połączone szeregowo, czyli nie ma możliwości takiej, że każdy pasek sobie zwisa swobodnie. Rozumiem jednak, że zależy Ci raczej na czymś w rodzaju prostego ekranu (czyli nie ma problemu z dolną krawędzią). Jeśli to koniecznie musi być kurtyna z majtającymi się paskami - albo połączenie w zygzak po dwa paski (dołem muszą być połączone), albo kombinowanie z metrowymi przewodami między paskami (co niekoniecznie musi działać).

Oczywiście jest trzecie rozwiązanie - każdy pasek sterowany z innego pinu. Tu potrzebny by był jakiś multiplekser, ale kod programu nie byłby dużo bardziej skomplikowany. Gorzej z elektroniką...

Jeśli stwierdzisz, że jesteś w stanie wykonać takie coś, zmieścić się w jakichś sensownych kosztach i uruchomić na tym jakieś proste demo typu "wąż" - jedziemy dalej.

A co do tego "daleja": jak się czujesz w Pythonie? bo użycie Pythona z modułem PIL jest najprostszym rozwiązaniem jeśli chodzi o przygotowanie danych w różnej postaci strawnej dla mikrokontrolera... żaden gotowiec tego nie załatwi.

No i jeszcze jedno: zwykły esp32 bez karty powinien wystarczyć. Zresztą w razie czego podłączenie karty (np. takim samodzielnie wykonanym czytnikiem zrobionym z adaptera microSD/SD i kawałka goldpina, działa na 3.3V maszynkach lepiej niż "fabryczne" przystosowane do 5V Arduino) jest trywialne.

Edytowano przez ethanak

Może w ramach testu kup sobie najprostszy moduł za kilka zł i zobacz jak się go programuje dla "obrazka" 4x4 pix. Jako zasilacz wystarczy ładowarka 1A+. W przypadku kurtyny musisz mieć już konkretne zasilanie, jeżeli zaświecisz wiele diod. ESP32 obsługuje micropythona, który nie jest wydajniejszy od c++, ale prostszy w projektowaniu, dlatego o nim wspominam (nie namawiam). Możesz rzucić okiem jak obsługuje diody RGB: link. Wczytanie obrazka z .raw jest łatwiejsze niż tworzenie animacji. Odczytujesz po 3 bajty (RGB) z pliku i ustawiasz kolor dla każdego pixela w buforze, na koniec wyświetlasz.

@orb777 i to najbardziej nieefektywny sposób... masz jeszcze kilka takich dobrych rad? Po jakiego grzyba rgb jak wystarczy indeks palety? Przy 16-kolorowej palecie i rle plik będzie jakieś 8 do 10 razy mniejszy.

(edytowany)

Myślałem nad mniejszą rozdzielczością ok 15 szt/mb taśmy. Nie wiem jakie taśmy są.

Obraz ma być oglądany z około 20m. Wielkość ok 2m x 4-5m. 
Przy wyższych rozdzielczościach zapotrzebowanie na prąd będzie nieziemskie. To nie  ma być tv tylko bajer ma święta.

Edit: tu jest 520 diód na 3m2:

 

 

IMG_1293.png

Edytowano przez SOYER
2 minuty temu, SOYER napisał:

ok 15 szt/mb taśmy.

A gdzie to widziałeś? Rzuć linkiem bo by mi się przydało 4m wodoodpornej...

 

2 minuty temu, SOYER napisał:

Wielkość ok 2m x 4-5m

Czyli ok. 2000 led. Wychodzi 120 A.

Do wgrywania ja bym wykorzystał Bluetooth. Czy klasyczny, czy LE. Ja bym szedł w program w C i bezpośrednio do RAMu ładował. Bluetooth Serial Terminal na Androida i SPP albo SPP podobne dla LE. Jedna z wielu możliwości. I innej płytki bym użył 😄 O wskazanym produkcie warto przeczytać opinie... Pewnie takie same taśmy (trzy przewody z glutem) na Ali będą. Dioda co 3 cm to chyba nawet za gęsto. To i tak z daleka ma być oglądane.

6 minut temu, SOYER napisał:

Myślałem nad mniejszą rozdzielczością ok 15 szt/mb taśmy. Nie wiem jakie taśmy są.

Obraz ma być oglądany z około 20m. Wielkość ok 2m x 4-5m. 
Przy wyższych rozdzielczościach zapotrzebowanie na prąd będzie nieziemskie. To nie  ma być tv tylko bajer ma święta.

Edit: tu jest 520 diód na 3m2:

 

 

IMG_1293.png

520szt/3m2

tyle tam jest

1 minutę temu, orb777 napisał:

chętnie zobaczę efektywny

Tak na początek:

Nie potrzebujesz RGB. Wczytujesz sobie paletę (256 * 4 bajty na przykład), a potem tylko pojedyncze bajty z pliku. W kodzie masz coś w stylu:

pasek.setPixelColor(nr++, paleta[wczytany_bajt]);

Jeśli ograniczysz się do 16 kolorów (co akurat w tym zastosowaniu ma sens) możesz dwie ledy zmieścić w jednym bajcie, czyl:

pasek.setPixelColor(nr++,paleta[wczytany_bajt & 15]);
pasek.setPixelColor(nr++,paleta[wczytany_bajt >>4]);

I już masz 6 x mniej danych 🙂

 

5 minut temu, matsobdev napisał:

Do wgrywania ja bym wykorzystał Bluetooth

Nie lepiej przez WWW?

6 minut temu, matsobdev napisał:

Ja bym szedł w program w C i bezpośrednio do RAMu ładował

Raczej C++... a RAM ma to do siebie że nie trzyma danych po wyłączeniu. A pewnie trochę zostanie miejsca na LittleFS we flashu 🙂

7 minut temu, matsobdev napisał:

I innej płytki bym użył

A co jest złego w ESP32?

 

(edytowany)

Nie ma lepiej czy gorzej. Ja tak to widzę. Jak ktoś chce tak, to zrobi tak. Inaczej, to inaczej. Nie wiem co jest złego w ESP32. Ja bym po prostu innej płytki użył, z którą jestem bardziej obeznany - Pico W. Dlatego też w C. No i bym na większą ilość kolorów sobie pozwolił, bo czemu nie. Jakaś korekcja gamma, wsadowo to też wcześniej wspomniany ImageMagick się nada. To byłaby gotowa surówka do podania na diody.

PS. A można też po prostu mieć w pamięci zestaw animacji do wyboru, tak jak się będzie chciało. To i 16 MB będzie sporo.

Edytowano przez matsobdev
2 minuty temu, matsobdev napisał:

Ja bym po prostu innej płytki użył, z którą jestem bardzie obeznany

A to zmienia postać rzeczy 🙂 Zresztą Pico też można w C++ programować tak na marginesie 🙂

Ja jednak bym pozostał przy ESP32. Więcej RAM, więcej flasha, można sobie wgrywać dane na flasha bez problemu... ale to kwestia wyboru. Cenowo na jedno wychodzi. W sumie funkcje do wyświetlania niewiele się będą różnić, gorzej z całą resztą.

12 minut temu, ethanak napisał:

Nie lepiej przez WWW?

Raczej C++... a RAM ma to do siebie że nie trzyma danych po wyłączeniu. A pewnie trochę zostanie miejsca na LittleFS we flashu 🙂

A co jest złego w ESP32?

 

Tym się nie martwcie, użyję dedykowanych funkcji supli do ota przez www.

Co do taśm led to faktycznie nie widzę nic z mniejszą gęstością niż 30/mb, ale nikt nam w programie nie każe używać wszystkich, można co drugą…

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...