RGB LED kruh 16 x NeoPixel WS2812B

09.07.2022

Ovládání pásků osazených adresovatelnými resp. programovatelnými RGB diodami WS2812 patří ke klasice. A to ať už ve spojení s platformou Arduino, Raspberry Pi nebo jinými. Na Internetu je v tomto směru spoustu zdrojů s návody a zdrojovými kódy. Nemá cenu moc rozebírat nicméně pro začátečníky, mezi které se počítám stále i já, může být užitečné. Proto jsem se rozhodl svoje "strasti" sepsat.

V zaměstnání jsem od kolegů převzal pro náš team interní projekt, který shodou okolností má využívat přesně tento modul osazený 16-ti diodami. Ve výsledku by mělo jít o něco na způsob BusyLight. Z dob dávno minulých kolegové našli "v šuplíku" i jeden klon platformy Arduino Nano, na kterém chtěli původně rozjet.
A v tomto bodě začalo moje trápení. S výše zmiňovanou deskou se mě totiž nepodařilo do dnešního dne rozjet korektně ovládání RGB LED. Dávám za vinu špatnému časování při posílání dat. Možná klon platformy o proti originálu nepoužívá shodnou časovou základnu, se kterou počítá software. Budu v tomto směru ještě pátrat. Zatím nevím jak dopadne a na čem bude ve finále postaveno.

Nicméně mne napadlo si odzkoušet stejnou aplikaci na Raspberry Pi Pico. Podařilo se na první pokus a bez problémů. Pico opět zvítězilo!!! Jedinou změnu, kterou jsem o proti návodům z Internetu udělal, že jsem mezi Pico a LED pásek pro jistotu zařadil převodník logických úrovní. Pico používá logiku 3,3V a pásek je napájen 5V. Když porovnám obě platformy tak v případě toho nejjednoduššího použití v režimu indikace BUSY ON/OFF vidím hned jednu zásadní výhodu, na kterou jsem přišel při nastudování parametrů a schématu testované desky Arduino Nano.

Problémem může být napájení. Měl jsem představu, že by "udělátko" v ideálním případě mělo jít napájet klasicky z USB portu. Problém je, že deska Arduino Nano nemá přímo vyvedeno 5V z USB konektoru. Napětí 5V ze vstupního USB konektoru je přes ochranu tvořenou diodou MBR0502 (přepólování + oddělení při současném připojení USB pro programování a externího napájení na PINu VIN) rozvedeno ke zbytku komponent a také na příslušný PIN desky. Její zatížitelnost 0,5A proto může být limitující (na druhou stranu USB port má také stejný limit na odběr připojeného zařízení). Druhou variantou by bylo externí napájení 7-12V přes na desce integrovaný stabilizátor AMS1117-5.0 (PIN VIN). To už komplikuje další použití.

U Raspberry Pi Pico jsem jednoduše vyřešil tak, že jsem pro napájení LED diod použil odbočku (PIN VBUS). Proud, který bere LED pásek tak nezatěžuje žádnou z komponent desky a je limitován pouze 0,5A při napájení z USB portu PC/NTB nebo výkonem připojeného 5V adaptéru. Nemůže tak dojít k poškození desky.
Pro testování s deskou Raspberry Pi Pico použity veřejně dostupné knihovny (třídy) z repozitářů GitHub. Konkrétně ta z odkazu níže

https://github.com/benevpi/pico_python_ws2812b
https://github.com/blaz-r/pi_pico_neopixel

Na zkoušku zapojeno na pomocné desce s nepájivým kontaktním polem Raspberry Pi Pico Breadboard kit od společnosti SB Components Ltd. Je na úvodní fotografii příspěvku. Z kitu použity resp. zapojeny 2 tlačítka a osazený bzučák.

https://rpishop.cz/nepajiva-pole/3763-sb-components-raspberry-pi-pico-sada-nepajive-pole.html
https://dratek.cz/arduino/7691-rgb-led-kruh-16-x-neopixel-ws2812b.html
https://dratek.cz/arduino/7718-rgb-led-modul-8-x-neopixel-ws2812.html

Z důvodu zjednodušení konstrukce zamýšleného finálního výrobku a také vzhledem k tomu, že RGB LED na "kruhu" mají svítivost až extrémní vyzkoušel jsem proto variantu pouze s páskem osazenými osmi LED WS2812. Původní programový kód může zůstat beze změny. Stačí pouze změnit hodnotu konstanty, která nastavuje počet RGB LED na pásku/kruhu.

Ukázkový programový kód v MicroPythonu najdete v mém repozitoráři GitHub nebo přímo na těchto stránkách pod tlačítkem níže.

Všechny výše uvedené odkazy byly v době uveřejnění příspěvku platné a funkční. Pokud zjistíte opak prosím o zpětnou vazbu. Předem děkuji.

© Všechna práva vyhrazena 2023, Kulíček R.
Vytvořeno službou Webnode Cookies
Vytvořte si webové stránky zdarma! Tento web je vytvořený pomocí Webnode. Vytvořte si vlastní stránky zdarma ještě dnes! Vytvořit stránky