Naujametinė girlianda

Paskutiniu metu visus apšvietimo prietaisus keičia šviesos diodai (led). Tai suprantama, jie ima žymiai mažiau elektros. Tačiau turi ir vieną didelį minusą – gerokai didesnę kainą. Kaina vis krinta, todėl neabejotinai šviesos diodų apšvietimas bus naudojamas vis plačiau. Ne išimtis ir įvairios girliandos, naudojamos papuošimui. Be įprastų visiems žinomų girliandų, kurios skiriasi tik tuo, kad vietoje lempučių naudojami įvairių spalvų šviesos diodai, yra ir įdomesnių. Tai adresuojami RGB šviesos diodai, kurie irgi gali būti naudojami girliandose.

Jie įdomūs tuo, kad kiekvienas RGB šviesos diodas turi dar ir kontrolerį, kuris, gavęs atitinkamas komandas, gali įjungti bet kurią iš trijų RGB spalvų bet kokiu ryškumu (256 žingsniai). Spalvų ryškumo santykiai leidžia išgauti bet kokią spalvą. Tokie šviesos diodai gali būti sujungti į girliandą ir tam tereikia trijų laidų (du maitinimui, vienu eina komandos ką jiems daryt). Tokia girlianda, pajungta prie mikrokontrolerio, turi neribotas šviesos efektų galimybes. Kiekvienas šviesos diodas visiškai nepriklausomas nuo kitų, į komandas reaguoja tik tas, kuriam jos skirtos.

Tokių šviesos diodų yra ne viena rūšis. Pvz. yra variantas, kur kiekvienas šviesos diodas (8-12 mm) ir kontrolerio mikroschema sulituoti į mažą plokštę (toliau vadinsiu tiesiog šviesos diodais). Parduodami atskirai arba jau sujungti į girliandas. 25, 50 arba daugiau šviesos diodų girliandoje. Yra ir kitas variantas, kur kontroleris ir trys šviesos diodai (RGB) yra bendrame korpuse (smd). Tokie šviesos diodai parduodami juostomis, kur galima atsikirpti kiek reikia. Būna ir moduliai po vieną, arba po kelis. Gali būti ir kitokie variantai. Asortimentas nemažas. Tokių šviesos diodų pilnos užsienio parduotuvės (tame tarpe ir Ebay). Keista, tačiau šiuo metu (2015-12-11), aš niekur nerandu jų Lietuvoje. Nors žinant, kad Lietuvoje kaina būtų visai kita, ir be kontrolerio su jais nėra ką veikt, gal ir nelabai turėtų paklausą. Nors mačiau, kad parduodami ir kažkokie kontroleriai…

Nusipirkau ir aš tokią girliandą (Ebay). Joje 50 šviesos diodų. Kiekvienas su kontrolerio mikroschema (WS2811). Ant jų užmauti kembrikai ir užpilta kažkuo panašiu į epoksidinę dervą. Girlianda turėtų būti atspari drėgmei, bet vienas kembrikas neužpiltas. Pamiršo kiniečiai…

led0

Šių šviesos diodų valdymas labai paprastas, tam pakanka paprasčiausio Arduino su atmega328. Nebūtina aiškintis smulkiai valdymo protokolo, yra visai nebloga biblioteka (FastLED). Belieka sukurti įvairiausių efektų. Tačiau vien efektai kažkaip neįdomu ir per daug paprasta. O jei padaryt tokią girliandą valdomą telefonu su Android? O jei per wifi? Žymiai įdomiau ir nebloga programavimo praktika.

Pasidariau kontrolerį su atmega328 (Arduino), impulsiniu maitinimo moduliu (iki 2A), ir wifi moduliu (ESP8266). Kaip visada ant montažinės plokštės.

led1

ESP8266 modulis – neblogas dalykas. Pigus (šiuo metu ~2$), ir visai paprastai leidžia pasidaryti wifi ryšį. Su juo bendraujama per RS232. Valdomas AT komandomis, nereikia jokių specialių bibliotekų. Aš jį panaudojau kaip AP (Access point). Jis turi savo IP adresą, taip pat suteikia adresą prisijungusiam klientui (DHCP). Šiuo atveju aš jį naudoju kaip serverį, dirbantį nurodytu portu. Prisijungiu kaip klientas, nesvarbu iš kompiuterio ar iš telefono. Iš kompiuterio testavimui galima prisijungti pvz. per Telnet.

Šviesos diodai maitinami 5V, jei visi šviečia baltai (t.y. šviečia visi led’ai), girlianda ima apie 2A. Aš šviesos diodus išdėliojau taip, kad galima būtų pakabinti ant lango.

led3

Prie bibliotekos (FastLED Animation Library) yra nemažai pavyzdžių, todėl susigaudyti nesunku. Be to, internete radau ir daugiau pavyzdžių. Šviesos efektų variantai priklauso tik nuo fantazijos. Galimybės neribotos. Padariau 15 programų. Kadangi buvo numatyta, kad girlianda bus valdoma iš Android, tai jokių kitų valdymo priemonių nėra. Tik komandomis per RS232. Bet čia atsirado nenumatyta problema. Paaiškėjo, kad informacija per RS232 gaunama su klaidomis. Iš pradžių nesupratau kame reikalas, bet vėliau paaiškėjo, kad kalta būtent FastLED biblioteka. Priežastis tame, kad visų šviesos diodų būsena atnaujinama vienu metu. Tai atliekama labai greitai, tačiau tam, kad būtų išlaikyti nuoseklaus protokolo laikiniai parametrai, atnaujinimo metu išjungiami pertraukimai. Čia ir atsiranda klaidos. Sprendimas paprastas, pasirodo sumažinus RS232 greitį iki 9600, klaidų nebelieka. O man daugiau greičio ir nereikėjo.

Wifi modulis nėra “skaidrus”, t.y. iš jo gaunama ne tik perduota informacija, bet ir kai kuri pagalbinė informacija. Pvz. nurodoma kiek baitų bus perduodama ir pan. Bet šiaip tai neturi reikšmės, aš parašiau procedūrą, kuri visoje informacijoje ieško tik “pažįstamų” komandų, o į visa kita tiesiog nekreipia dėmesio. Tas pats ir ką nors perduodant per wifi modulį. Būtina kai kuri pagalbinė informacija. Pvz. pirma reikia pervesti į perdavimo režimą, nurodyti kiek baitų bus perduodama, o paskui jau perduoti reikalingą informaciją.

Parašiau ir Android programą. Galimų šviesos efektų programų sąrašas yra kontroleryje. T.y. jei aš pridėsiu dar kokius nors efektus, tai Android programos keisti nereikės, ji sąrašą gauna padavusi atitinkamą komandą. Sudaromas mygtukų meniu. Funkcijos paprastos: galima įjungti norimą programą, arba visas iš eilės, galima uždegti visus šviesos diodus kokia nors spalva, galima led’ų bėgiojimą valdyti vartant telefoną (naudojamas telefono akselerometras).

led9

Kontroleriui reikia dėžutės. Padariau su OpenSCAD.

led2

Belieka atspausdinti.

led4

Rezultatas visai neblogas. Maitinimui tinka bet koks maitinimo blokas, kurio galios užtenka išgauti 5V, 2A. Pvz. 12V, 1A.

led5

Ir pabaigai nedidelis video kaip viskas veikia.

This entry was posted in Elektronika, Programavimas. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *