2019. már 05.

WS2812 alias NeoPixel címezhető LED

írta: eNeS
WS2812 alias NeoPixel címezhető LED

Ezúttal egy egyszerű alkatrészről írok pár sort, ami a soron következő projektjeimben kap helyet. Egyszerű RGB LED-ről van szó, aminek nagyszerűsége a vezérlésében rejlik, mivel egyetlen, digitális lábbal vezérelhető PWM módban. És itt nem arról van szó, hogy LED-enként egy, hanem akármennyit köthetünk sorba egymás után, akkor is csak egy láb kell szükséges összesen, ezen az egy lábon keresztül éri el az összes címzett LED-jét, és állítja a színüket.

ws2812.jpg

A VCC a tápfeszültség (ajánlott 4-7V DC között, de a legtöbb 3V-al is működik, kicsit halványabban), a GND elég egyértelmű, a DI-re kell kötni a vezérlőegység (akár ESP8266 akár Raspberry) digitális lábát, mely PWM kimenetre van konfigurálva. (A DO-ra a következő WS2812 LED DI bemenetét lehet továbbkötni, modulárisan)

A képen látható modellen csak egy LED van, de különféle osztásokban 1, 2, 4, 8, 16 modulárisan, különféle alapformában (kör, négyzet, téglalap..) vagy éppen szalagra integrálva is kapható.

Beüzemelés előtt érdemes megtervezni a megfelelő tápegységet is, mivel színenként 20mA a fogyasztása, ezért egy darab WS2812 60mA-t is fogyaszthat, ha mind a három csatornája teljes fényerőre van állítva. Érdemes megemlíteni még, hogy kikapcsolt állapotban is 1mA a fogyasztása, így elemes működésnél nem annyira praktikus a használata.

Konkrétan 1 db Neopixel LED-et minden probléma nélkül használhatunk oly módon, hogy direktbe kötjük a NodeMCU/D1 Mini 3V3 lábát a WS2812 VCC-vel, GND-t GND-re, a DI-re pedig egy használható GPIO-t. (pl D5,D6,D7)

ws_3.jpg
Arra a kérdésre, hogy hány darab LED-et hajthatunk meg ilyen direkt módon, konkrét leírást nem találtam, de némi számolgatással megsejthetjük, mint a határértéket.
Ha veszünk egy átlagos NodeMCU-t, az abban levő AMS1117-3.3 feszültségstabilizátor 3.3V 800mA-t állít elő, amiből szélsőséges körülmények között akár 500mA-t is felhasználhat maga a fejlesztőlap, rövid ideig. (jellemzően egyébként 80-100mA a fogyasztása, de WiFi kapcsolódáskor vannak ilyen nagyobb tüskék, ezzel számolni kell)
Ha ezt figyelembe véve számolunk, 300mA-el gazdálkodhatunk, ami a lapka 3V3 lábáról szabadon felhasználható, tehát ha semmi mást nem táplálunk róla, ez 5 db WS2812 LED meghajtására elegendő lehet - 500+(5x60)=800mA és ezzel kimaxoltuk a stabilizátort. (persze, ha számítógép USB portjáról tápláljuk az eszközt, az lehet hogy kevés lesz ehhez)
Raspberry Pi esetén (B+ vagy újabb, régivel ne próbálkozzunk az csak 50mA-t tud!) a 3.3V-os táp része max 1A-t képes leadni, amiből 500-800mA (megfelelő 5V2A tápegység megléte szükséges és erős a gyanúm, hogy ez típusfüggő és függ a használt eszközöktől is) használható szabadon. Így elméletileg akár 8-10 db WS2812 LED megtáplálására is alkalmas, ha jó a Pi tápegysége, és nem kötünk semmilyen más eszközt rá.

A másik megoldás: köthetjük az 5V-os lábakat a WS2812 VCC-re, ez mind NodeMCU mind RPI esetén azt jelenti, hogy az USB betápot kapja meg a LED, vagyis amit maga az RPI nem használ, azt mind megkapja (D1 Mini esetén van út közben egy dióda is, így 5V helyett csak 4,7V-ot), GND-t pedig a GND-re. Ebben az esetben viszont a DI lábat nem tudjuk közvetlenül vezérelni, szükségünk lesz egy szintillesztőre, ami a vezérlőről kimenő 3V3 jelet 5V-ra alakítja a LED számára! (a digitális jeleknél a maximális érték >70%-át értelmezik általában logikai 1-nek, ami 5V esetén >3.5V)

ws_5.jpg

Sok LED-nél már érdemes saját 5V tápegységet használni, természetesen a GND-ket megfelelően közösítve, (és a vezérlés szintillesztésre figyelve!) LED szalagnál meg egyenesen több tápegységet kell használnunk, néhány méterenként egyet, ahogy a szufla elfogy..

ESP8266 esetén ESPEasy-n a NeoPixel (Basic) plugin segítségével vezérelhetjük az eszközt, beállítva, hogy mely GPIO-t kívánjuk használni, és hogy hány darab címzett LED található ezen a vonalon. (RPIEasy-ben is nagyon hasonló az eljárás)

ws_esp.jpg

A vezérlést az alábbi parancsokkal tudjuk megoldani:

  • LED-enként a címét behelyettesítve a sorszám helyére
    NeoPixel,<LED sorszám>,<vörös fényerő>,<zöld fényerő>,<kék fényerő>
    NeoPixel,1,10,0,0
  • Vagy mindegyikre egyidőben
    NeoPixelAll,<vörös fényerő>,<zöld fényerő>,<kék fényerő>
    NeoPixelAll,0,0,10

 

Szólj hozzá

led alkatrész rgb ws2812 neopixel