WS2812 RGB LED dekoráció

A meglévő hardware eszközök fejlesztési lehetőségei, módosítások, illetve új eszközök bevezetése
Válasz küldése
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

WS2812 RGB LED dekoráció

Hozzászólás Szerző: csegebiga »

Üdv!
pörög a vezérhagyám, és most a fórum elé öntöm ötleteimet, kérdéseimet:
tehát a nünükém appropóját az adta, hogy kezd elérhető ára lenni a digitálisan címezhető-vezérelhető RGB LED chipek, és lehetővé válik a nagy darabszámú dekorációs alkalmazásk is.
robert is kínál 8x8 as mátrix panelt ,
a kinaiaktól pedig 50-100 dbos szériákat lehet rendelni

arra gondoltam, hogy még nem késő a karácsonyi (és egyéb) dekorációt új szintre emelni ezekkel az 'okos' ledekkel.
ha sima fénysort, ha valamilyen alakzatot alakítunk ki, a kigyújtani kívánt formációkat, animációkat létre kell hozni, vagy valamilyen tárolóból elő kell szedni.

tervezési ötletelés következik:
mit kellene tudnia egy ilyen kütyünek?
1. stand alone kiépítés kell. tudjon működni távol mindentől, csak a felprogramozáshoz használnék usb vagy egyéb uplinket a pc felé
2. valamilyen távvezérlés szükséges lenne. egy sima nyomógombtól az IR távirányítóig üzemmód, fényerő, program választásához
3. a megjelenített 'kép' előállítása , animálását elsőre két alapmódszert tudok elképzelni:
- algoritmussal generált, animált (nem tárolt) ábrák kiküldése
- tárolt 'frame'-k kiküldése valamilyen időzítéssel pl SD kártyából
3.1 - a fentiek ötvözése, két tárolt alakzat közötti algoritmikus áttűnés meghatározott számú és sebességű lépésben

kiindulásként egy 100 darabos WS2812B chipekből álló, három 2A-es tápegységes,
először algoritmus generált minták és animációk,
későbbiekben sd kártyán tárolt képeket megjelenítő led füzért építenék.
ami Samsung távirányítóval vezérelhető

hardver oldalról is van néhány megfontolandó dolog:
tápellátás: a ledek tápfeszültsége 5V. egy led 20mA-es fogyasztásával számolva egy 100db-os szalag esetén 100(chip)x3(rgb ledek)x20mA=6000mA, vagyis 6A(!) a szalag fogyasztása
ezt ajánlott több szegmensre bontva kisebb árammal táplálni
külön tápellátás kell a vezérlő táplálásához, hogy ne zavarjon be a ledfüzér által összeszedett zavarjel


előzetes anyaglista
- próbapanel uno vagy mega (esetleg egy okosabb ESP modul szintillesztővel?)
- 3db 5V 2A vagy 1 db 5V6A kapcsolóüzemű táp plsz egy kicsi 5V1A a vezérlő meghajtásához
- 100 db WS2812B chip, felhasználási területtől függően vízhatlan tokozásban
- esetleg IR vevő chip a vezérlő jelek fogadásához
- minták tárolásához SD kártya olvasó plusz kártya
- időzítéshez (talán)rtc modul, esetleg relé a nagy tápok indításához
- kellhet-e optokapus leválasztás a ledsor data pin meghajtásához?

adatmennyiség: véges számú ledchip köthető egy adatsorba, mivel a kommunikáció chipenként 24 bittel nő, nagy darabszám esetén az egyes chipek frissítési ideje túl nagy lesz. Róbert szerint "maximum 625 db LED lehet a villódzásmentes mozgókép kialakításához"
ezt egy darabig nem fogjuk elérni, azt hiszem. :)

adatok a memóriában:
ram:
egy led 3byte adatot foglal. érdemes ezt a 3 byteot egy elemi tömbként kezelni mint pixelt (3 byte)
100 db ledhez tehát minimm egy 100 pixelt tartalmazó tömböt kell létrehozni. érdemes a tömböt egyben kezelni mint frame-t (300 byte)
ezt a framet kell kiküldeni a led-sornak, hogy annk a tartalma szerint világítson
legalább még egy frame kell, hogy legyen, ha az előző állapotból akarják generálni a következő állapotot.
a két frame eddig 600 byte helyet foglal. zabálják a memóriát...
nagyon oda kell figyelni a megfelelő változótípusok alkalmazására, byte helyett ne használjunk floatot vagy longintet



vezérlőprogram:
a program memóriát is ésszel kell használni.
érdemes nagyon tömör programot készíteni
itt már nem biztos, hogy működik a lego építkezés, hogy ész nélkül bepakolunk mindent a programba, aztán hajrá!
nem szabad sokféle protokollt alkalmazni, úgy kell az egységeket összeválogatni, hogy azok lehetőleg egy buszon kommunikáljanak.
legalább kettő külön bsz így is lesz: egyszer a ledek vezérlése a saját formátumában, egyszer a többi eszköz kommnikációja pl IIC buszon keresztűl
itt egy durva "gányolásnak" nézünk elébe: ki kell dobálni a felhasználandó libekből a nekünk nem szükséges részeket. és mindezt úgy, hogy a maradék működjön
(pl az ir libben az ir adót megvalósító rész számunkra felesleges, tehát kuka.)

érdemes lenne az algoritmsos vezérlés neten található mintáit összeszedni,
érdemes lenne egy 'frame editor programot összeszedni, amivel az sd-kártya mintáit készítenénk el?
mások hogyan csinálják?

mint látszik, a dolog a brainstorming kezdeti állapotában van még semmi sincsen kőbe vésve.
de hol van még Karácsony?
érdekelne a véleményetek, ha van, tapasztalatotok, és minden egyéb, amit a témával kapcsolatban megosztanátok velünk!
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Re: WS2812 RGB LED dekoráció

Hozzászólás Szerző: winnerbt »

Szia!
Pont tegnap este dobtam össze a csajoknak a mai bulira 1-2-3 zenére villogót...
Kép
Az említett 8x8-as mátrix vehető 1db-os tételben is , de ha több kell, akkor érdemesebb nagyobb mátrixokat venni.
A 8x8-asra talán 2 hete írtam lobogó tűz imitációt. (Az a 625 nem tudom, hogy jön ki...)
Ha tárolt animációt (nem interaktív) akarsz csinálni, akkor érdemesebb
a kész T1000-res vagy mi is ma a neve vezérlőt venni, az tud kezelni SDkártyát meg távirányítós...meg készen van.
(Java szerkesztő program meg fut mindenen: Glediator_V2 van most fen nekem).
Az áramokat jól saccolod, bár igen ritkán megy mindig 100%-on (nálam 0xE0 a maximális érték 0xFF helyett, mert felette csak melegszik, de nem látható fényerőváltozás, itt is lehet spórolni az áramon). Egy 144LED/m-es szalag bekajál 5-6A-t, ha nagyon világít minden.
Én még a főprogramban nem tudtam megvalósítani az infra kezelését, ezért majd kap egy T13-at csak erre a célra.
A tárolás: Ha fényerőszabályozás kell, akkor vagy ASM rutin a kivitelnél vagy külön tömb kell.
Nálam van egy RGBtömb, ebben történnek a dolgok, a kivivő rutin meg egy ciklussal áttölti a másik tömbbe, miközben megcsinálja a fényerőszabályozást, utána ömleszti ki az adatokat. A sok RAM nem árt, főleg, ha szép áttűnéseket kell csinálni (régiképtömb-újképtömb-köztes tömb), ilyenre írtam tesztet, mert a Zasszony nyavajog a csillagos égboltért és ott kelleni fog a csillagképek finom szabályozása, de szépen megy, igaz elég bénán van megírva (nem akartam lebegőpontos szorzást bele) és érdekes hatások jönnek ki most színesben.
Az algoritmusos szépségek kis kivétellel rekurzívak, így (akár több) tömböt kell kezelni.
Amire figyelj oda: az időzítés!!! Most szaladtam bele olyan LED-ekbe, amelyek már 23usec szünetre STROBE-olnak, tehát kivitel közben nem jöhet INT, mert csúszik minden, ez főleg INT alapú kommunikációnál tud idegbajt okozni. (és a +-150nsec impulzusszélesség is ott van ugye)
Ami még ajánlott: soros 100 ohm az első adat bemenetre, mert van olyan LED, amelyik tápfesz nélkül, ha kap adatot, akkor kéken világít, de van olyan, amelyik tönkremegy (különben igen jól vannak védve, de ha sok LED van a tápon, akkor a mellette lévő kondik összeadódnak és elég nagy áram folyhat).
Ha van M328P-s kis Arduinód meg 8x8-as WS-paneled, elküldöm a tesztprogramokat, sokra nem mész vele, de tesztelni jó.
JAni
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Re: WS2812 RGB LED dekoráció

Hozzászólás Szerző: winnerbt »

Ja, színek:
Nem kell mindig RGB-vel manipulálni. Nálam mondjuk vegyes, de maga az algoritmus palettát használ, így maga a munka-tömb csak byte-on tárolja a színeket, az más tészta, hogy a kivitelhez meg finom dolgokhoz az RGBtömbbe kell nyúlkálni. Ha csak pl. szöveget akarsz futtatni meg ugrándozó rénszarvast, akkor elég a paletta. Azt is vedd figyelembe, hogy pl. futószöveg kijelzéshez lehet, jobban megéri venni 6db szalagot és egymás alá helyezni (de ezt át kell számolni, mi éri meg épp, van amikor fillérekért ki lehet fogni szalagokat, van amikor meg mindenki megőrül és iszonyat áron nyomják).
JAni
Válasz küldése