Osvetlenie vianočného stromčeka prostredníctvom WI-FI

Stále som si chcel postaviť vlastné osvetlenie stromčeka, kde si budem môcť naprogramovať vlastné efekty tak, ako sa páčia mne. Samotná konštrukcia nie je komplikovaná, ale je časovo náročná, ak si chceme pospájkovať vlastný LED pás s ovládaním každej farby, pričom výsledný konštrukčný efekt nemusí vyzerať až tak pekne. Áno, existujú komerčné riešenia, kde už je samotná svetelná reťaz naspájkovaná. Bohužiaľ komerčné riešenia, ktoré som bežne našiel mali síce 4 farby, ale boli spojené po dve a dve farby v kope. Napríklad červená + zelená a modrá + žltá farba. To sa mi nepáčilo, nakoľko ja som chcel každú farbu ovládať samostatne.
V tomto článku opíšem konštrukciu osvetlenia vianočného stromčeka pomocou LED pásu, kde každá LED dióda má svoju vlastnú adresu a je možné ju samostatne ovládať. Ovládanie osvetlenia je možné pomocou WI-FI modulu.
Zapojenie obsahuje mikroprocesor atmega328P pre ovládanie LED pásu, WI-FI modul ESP-01 s WEB serverom, LED pás z RGB LED diód WS2812. Ďalej v zapojení sa nachádza RTC čip, IR prijímač pre ovládanie osvetlenia stromčeka pomocou IR diaľkového ovládania a Bluetooth modul pre ovládanie osvetlenia pomocou Bluetooth rozhrania. Súčasne je možné prepínať efekty pomocou jedného tlačidla.
LED diódy WS2812
LED diódy WS2812 sú špecifické tým, že každá z nich má vlastnú adresu a je možné na každej LED dióde nastaviť samostatne farbu RGB, a taktiež intenzitu svietivosti.
Ako vidíme na obrázku, LED dióda má 4 piny. Napájanie, zem, Data input a Data output. Ak chceme zapojiť viac LED diód, potom ich musíme zreťaziť. Čiže Data output z jednej LED diódy, prepojiť s Data input nasledujúcej LED diódy.
Img sch
Vzdialenosť medzi dvomi LED diódami môže byť maximálne 10m. Celková dĺžka zapojenia nie je obmedzujúca dátovou zbernicou, keďže každá LED dióda je ako samostatný zosilňovač dátového signálu. Pri zapojení na veľmi dlhú vzdialenosť, skôr dochádza k efektu úbytku napätia na vodiči ak napájame všetky LED diódy iba na začiatku LED pásu. Vďaka tomu posledné LED diódy už nemusia mať dostatočne napájacie napätie, čo môže ovplyvniť výslednú farbu. Počet LED diód na zbernici tiež nie je obmedzujúci, vďaka unipolárnemu NRZ komunikačnému módu, len obmedzenie je v rýchlosti obnovenia farieb na všetkých LED diódach pripojených do zbernice. Čím viac je zapojených LED diód za sebou, tým je nižšia rýchlosť obnovenia farby na všetkých LED. Obmedzenie počtu LED diód vzniká v riadiacom MCU, kde musíme pre každú LED diódu alokovať pamäťový priestor v RAM pamäti. Napríklad pre spomínanú atmega328P bude približný maximálny počet LED diód 682. Pre jednu farbu využívame 8 bitov, ďalej používame 3 farby, čiže pre jednu LED použijeme 3 bajty. Atmega328P má maximálnu veľkosť RAM pamäte 2048 bajtov. Z toho vyplýva, že ak vydelíme veľkosť RAM pamäte počtom bajtov pre jednu LED, dostaneme 682 LED diód, pre ktoré dokážeme naraz uchovávať nastavenie farby v RAM pamäti. Reálne to bude menšie číslo, keďže musíme brať do úvahy riadiaci kód. Myslím si, že počet LED diód, ktoré dokážeme naraz obslúžiť pomocou MCU atmega328P je dostačujúci.
LED dióda WS2812 obsahuje 3 LED čipy RGB, čiže červená, zelená a modrá. LED dióda WS2812 sa vyrába v rôznych puzdrách. Najznámejšie sú zobrazené na nasledovnom obrázku.
Existuje veľa rôznych verzii týchto LED diód. Napríklad WS2811, WS2812, WS2812B,WS2813, SK6812 a veľa ďalších. Napríklad WS2811 má maximálnu prenosovú rýchlosť iba 400KHz, WS2812B je novší model z WS2812, s vylepšeným IC. Verzie WS2812 a WS2812B môžu mať vymenenú adresu zelenej a červenej LED. Čiže ak vám LED pás svieti zelenou farbou, a má svietiť červenou farbou, tak ste zvolili zlú verziu LED diódy v komunikačnej knižnici, alebo ste nastavili zlé zapojenie LED diód v samotnom LED čipe. LED dióda WS2813 má vylepšenú komunikačnú zbernicu, vďaka čomu, ak vám odíde jedna LED-dióda v LED páse, ostatné za ňou budú ďalej svietiť a fungovať. Pri LED diódach WS2811, WS2812, WS2812B ak vám odíde jedna LED dióda, všetky ostatné za ňou prestanú svietiť. LED dióda SK6812 obsahuje samostatný LED čip pre bielu farbu. Čiže už to nie je RGB, ale RGBW, kde si môžete zvoliť typ farby bieleho LED čipu. O LED diódach tejto rady by mohol vzniknúť samostatný článok, pretože existuje veľké množstvo ich verzii a puzdier.
Hardware
Schéma pozostáva zo zapojenia atmega328P s USB to UART prevodníkom CH340, kde k MCU atmega328P je ďalej možné pripojiť WI-FI modul ESP-01, alebo Bluetooth modul HC-05 prípadne IR prijímač VS1838B pre ovládanie osvetlenia. Ďalej je použitý RTC čip DS1307 pre časové zapínanie osvetlenia a klasické mechanické tlačidlo pre prepínanie efektov. Napájanie celej elektroniky je zabezpečené pomocou mini USB konektora, a štandardných 5V. WI-FI modul ESP-01 musí byť napájaný pomocou 3,3V, na čo slúži stabilizátor napätia osadený na doske. Súčasne WI-FI modul ESP-01 nemá toleranciu 5V digitálnej úrovne na svojich digitálnych vstupoch. Preto je TX linka z Atmega328P privedená na WI-FI modul ESP-01 pomocou napäťového deliča, ktorý vytvára z 5V logickej úrovne približne 3,3V. TX linka z WI-FI modulu ESP-01 je privedená priamo na MCU atmega328P, pretože 3,3V je stále logická 1. Zvyčajne sa na tento účel používajú špecializované čipy „logic level convertor“, ale v našom prípade to nie je potrebné, a tieto čipy sú drahšie ako dva rezistory. RTC čip DS1307 je podložený štandardnou batériu CR2032, aby po strate napájania nestratil aktuálne nastavenie času. K čipu DS1307 je potrebné pripojiť hodinový kryštál.
Zoznam súčiastok:
- Atmega328P
- CH340
- Kryštál 16Mhz - 16M-49SMD-SR
- Kryštál 12Mhz - 12.00M-SMDHC49S
- Hodinový kryštál 32.768 puzdro TC26
- Mini USB konektor - 54819-0519 MOLEX
- konektor pre ESP-01
- 1x 3 pinový konektor PHOENIX 1751251, rozteč 3.5mm
- Prepínač TACTILE-PTH-EZ
- Držiak batérie CR2032 CH74-2032LF
- 3x SMD led 0805
- 1x IR prijímač VS1838B
- Stabilizátor napätia LM1117 3,3V verzia
- RTC čip DS1307
- 5x kondenzátor 100nF 0603
- 4x kondenzátor 22pF 0603
- 1x rezistor 470ohm 0603
- 7x rezistor 1Kohm 0603
- 3x rezistor 10Kohm 0603
- 2x rezistor 2,2Kohm 0603
- 1x rezistor 2Kohm 0603
Schéma zapojenia
Zapojenie MCU.
Schéma zapojenia periférií.
Doska plošných spojov
Rozmery plošného spoja sú 59,5x33.5 mm. Plošný spoj má znova osadené súčiastky iba z jednej strany, vďaka čomu je osádzanie plošného spoja jednoduchšie.
Konštrukcia
Pri osádzaní môžete použiť môj podávač spájkovacej pasty, ku ktorému nájdete článok TU. Zospájkovať súčiastky môžete pomocou žehličky, a návod ako na spájkovanie pomocou žehličky nájdete TU.
Pre komunikáciu s LED pásom slúži konektor X1, na ktorom je vyvedené napájanie, komunikačný pin a zem.
Pri hľadaní vhodného LED pásu s LED diódami WS2812 alebo WS2812B som strávil chvíľu času. Existuje veľa verzii tohto LED pásu. Podmienkou bolo, aby sa LED pás dal použiť na stromčeku. Ďalšia podmienka bola, aby sa LED pás pohodlne ukladal na stromček. Najviac sa k tomu priblížili tieto 2 verzie LED pásu, ktorý je možné kúpiť priamo v čínskom E-shope.
Prvá verzia má štandardný 5x5mm čip nespájkovaný na PCB s klasickými vodičmi. Je to zaujímavé riešenie, ale problém je v tom, že LED dióda svieti iba jedným smerom, čiže pred seba. Preto som sa rozhodol vyskúšať druhú verziu. Druhá verzia má tenké vodiče s prierezom približne 0,4mm, a perfektne splýva so stromčekom. Vodiče pripomínajú pozlátka. Keďže je LED čip zaliaty v epoxide, LED dióda svieti všetkými smermi. Áno, najviac svieti iba pred seba, ale pri otočení o 180 stupňov je svietivosť dostatočná. Bohužiaľ sa mi nepodarilo nájsť podobný LED pás s LED diódami, ktoré by boli bližšie pri sebe. Oba LED pásy môžeme kúpiť s dĺžkou približne 5m, čiže 50-timi LED-kami.
Osobne som sa rozhodol spojiť dva 5 metrové LED pásy, do jedného 10m LED pásu. Viac času som strávil s hľadaním jedného 10m LED pásu, ako zospájkovaním troch vodičov, a zaizolovaním zmršťovacou bužírkou. Pri dĺžke 10m vzniká problém s úbytkom napätia pri tomto LED páse. Úbytok napätia je viditeľný iba v špecifických situáciách, kedy je najväčší odber prúdu. Čiže napríklad ak zapneme na celej dĺžke LED pásu bielu farbu, potom LED diódy od približnej dĺžky 6,5m majú tendenciu mať jemne žltú až jemne zelenú farbu.
Tento problém môžeme riešiť pridaním štvrtého vodiča, ktorý potiahneme pomedzi LED diódy buď po spoj v dĺžke 5m, kam privedieme znova 5V. Alebo vodič dotiahneme až na koniec LED pásu. Najlepšie riešenie je dotiahnuť vodič až na koniec LED pásu. Osobne som tento problém zatiaľ neriešil, ale myslím si, že pridanie tenkého, 5m vodiča s priemerom AWG26-AWG28 by mohlo stačiť. Tento problém zrejme nebude vznikať pri spomínanom prvom type LED pásu, kde boli použité hrubšie vodiče, ale LED diódy boli zospájkované na PCB. Existujú podobné LED pásy aj s LED diódami SK6812, a pre tieto LED pásy zatiaľ nie je SW pripravený. Pripojenie LED pásu k elektronike je možné pomocou rozpojiteľného konektoru, ktorý je štandardne dodávaný priamo s LED pásom.
Pre napájanie elektroniky využívam štandardnú USB nabíjačku s výstupom 5V/2A. Elektronika má pri odpojenom LED páse spotrebu približne 50mA. Pri zapnutej elektronike a pripojenom LED páse, ktorý je vypnutý, je spotreba približne 160mA. Ak je celý LED pás rozsvietený bielou farbou, je spotreba prúdu približne 1,06A.
Software
Osvetlenie je možné ovládať pomocou tlačidla, WI-FI rozhrania, Bluetooth rozhrania a pomocou klasického diaľkového ovládania s IR. Aktuálne je naprogramované iba ovládanie pomocou tlačidla a WI-FI rozhrania. Ovládanie pomocou ďalších rozhraní bude doprogramované postupne. Problém spočíva vo veľkosti RAM pamäte samotného MCU atmega328P. Takže sa môže stať, že bude možné ovládanie iba pomocou tlačidla + WI-FI alebo Bluetooth alebo IR. To sa uvidí pri ďalších verziách SW.
Pri ovládaní pomocou WI-FI modulu obsahuje doska konektor, kam sa pripája WI-FI modul ESP-01. Z toho vyplýva, že ide o dvoj procesorovú komunikáciu medzi ESP-01 a Atmega328P. Na to bolo potrebné vyvinúť vlastný komunikačný protokol s kontrolou celistvosti rámcov. Súčasne je SW rozdelený na 2 rôzne aplikácie. Web stránku pre WI-FI modul ESP-01 a riadenie LED pásu v Atmega328P.
Procesor atmega328P je vlastne štandardné Arduino UNO, takže ho programujeme ako Arduino UNO. V projekte MainBoard si môžeme nastaviť typ LED pásu, ktorý pripájame k riadiacej elektronike. Konkrétne v súbore MCU_cfg.h, pomocou definície LED_TYPE. Pomocou definície COLOR_ORDER nastavujeme farebné zapojenie LED diód v samotných čipoch. Počet LED diód, ktoré máme celkovo pripojené, nastavíme pomocou definície NUM_LEDS. Všetka konfigurácia sa ukladá do EEPROM pamäte. To znamená, že pri prvom zapnutí budú vyčítané základné hodnoty z EEPROM pamäte. Pred kompiláciou si musíme doinštalovať knižnicu FastLED-3.3.3 a knižnicu IRremote-2.7.0 ak chceme používať IR diaľkové ovládanie. Návod na inštaláciu potrebných knižníc som spomenul v predchádzajúcom článku, o osvetlení priestoru pomocou LED pásu TU. V princípe stačí kliknúť na Sketch-> Include Library -> Add ZIP library, vybrať zip súbor, ktorý nájdete pri zdrojových kódoch, a kliknúť na Open.
O procesore ESP-01, jeho možnostiach a tom ako ho naprogramovať som už napísal článok. Môžete si ho pozrieť TU.
WI-FI modul ESP-01 sa pripája k našej domácej WI-FI sieti, po pripojení v ňom beží štandardný WEB server na porte 80. V projekte WIFI, súbore MCU_cfg.h si nastavíme prihlasovanie meno a heslo k našej WI-FI sieti pomocou definícii WIFI_SSID a WIFI_PASSWORD.
V prípade, ak chceme zistiť IP adresu nášho WI-FI modulu potrebujeme dodržať určitú sekvenciu zapínania zariadenia. Skompilujeme a nahráme si zdrojový kód do modulu ESP-01. Potom skompilujeme a nahráme zdrojový kód do MCU Atmega328P. Následne si pripojíme MCU Atmega328P pomocou mini USB kábla k PC, a otvoríme sériovú konzolu v Arduino IDE. Prenosovú rýchlosť nastavíme na 115200 baud rate. V konzole uvidíme text „Start MCU“. Po texte „MCU configuration done“ vložíme WI-FI modul do konektora s popisom ESP-01.
Po približne 1 minúte sa nám v konzole zobrazí názov siete, ku ktorej sa modul ESP-01 pripojil, a jeho IP adresa. IP adresu môžeme zadať do prehliadača vo svojom smartfóne, alebo PC, kde sa nám zobrazí nastavenie osvetlenia vianočného stromčeka.
Ovládanie
WEB stránka je rozdelená na 2 časti. Časť s aktuálnym nastavením, a časť, pomocou ktorej nastavujeme osvetlenie.
Pomocou WEB stránky si nastavíme aktuálny čas v RTC čipe. Ďalej si môžeme prepínať aktuálny efekt, ktorý sa aplikuje na LED páse pomocou „Vyber aktuálneho efektu“.
Funkcia „nastavenie rýchlosti blikania efektov“ slúži pre nastavenie, ako rýchlo majú blikať / meniť farbu niektoré efekty. Táto hodnota sa zadáva v ms. Jej minimálna hodnota je 7ms a maximálna hodnota je 65536ms.
Možnosť „Nastavenie dĺžky svietenia efektu pri náhodnom výbere“ má vstupný parameter v sekundách. Slúži pre nastavenie, ako dlho má byť aktívny jeden efekt pri náhodnom zapínaní efektov.
Súčasne je pridaná možnosť automatického zapínania a vypínania stromčeka, s nastavením efektu, ktorý ma byť aplikovaný. Táto funkcia sa neaktivuje, ak už stromček je rozsvietený. Zapnúť alebo vypnúť túto funkciu môžeme pomocou nastavenia „Automatické zapnutie“. Ďalej je možné nastaviť efekt, ktorý sa aplikuje pri automatickom zapnutí. Dĺžka náhodných efektov a rýchlosť blikania sa aplikuje z predchádzajúceho nastavenia. Čas zapínania nastavíme pomocou „Automatické zapnutie“ a čas vypínania stromčeka nastavíme pomocou „Automatické vypnutie“.
Video
Záver
Aktuálny SW ponúka približne 20 rôznych efektov svietenia. Keďže ide o komplikovanejší SW, nájde sa pravdaže aj niekoľko chýb. Známe chyby, budú pravidelne aktualizované v mojom git repozitári. V mojom GIT repozitári nájdete aj vždy najnovšiu verziu SW s popisom jednotlivých opravených chýb. Postupne plánujem pridávať aj rôzne ďalšie efekty, a pridať podporu iných LED pásov. V prípade nájdenia SW chýb ma prosím kontaktujte.
V ďalších SW verziách budem pridávať možnosť ovládania stromčeka pomocou Bluetooth rozhrania a IR diaľkového ovládania.
Aktuálne mám stále niekoľko voľných plošných spojov, takže v prípade záujmu ma môžete kontaktovať. Vieme sa dohodnúť aj na osadení a oživení elektroniky.
Odkazy
Zdrojový kód, schému a všetko potrebné nájdete v mojom GIT repozitári - klikni
Ďakujem za prečítanie článku, dúfam že vás konštrukcia zaujala.
Autor konštrukcie : Miroslav Pivovarský
Máte otázky? Kontaktujte ma - klikni