Lampki choinkowe na Arduino i led-ach z kontrolerem WS2811 :-)
Gdzieś na początku listopada odkryłem diody RGB LED z wbudowanym kontrolerem: WS2812 i inne podobne. Pomysł wydawał mi się na tyle fajny, że zapragnąłem też coś takiego mieć do zabawy 🙂
Co więcej, sterowniki stały się na tyle popularne i tanie, że są nawet montowane wewnątrz diod LED, jak na przykład WS2812 w tej diodzie:
Zważywszy porę roku, stało się oczywiste, że najlepiej byłoby sobie z tego zrobić lampki na choinkę. Chwila szukania i okazało się, że na Aliexpress sprzedają już gotowe takie diody polutowane w łańcuszki 🙂
Moje LEDy nie mają co prawda układów wewnątrz diod, a na małej płyteczce zalanej twardym silikonem, ale za to były tańsze. Zwłaszcza jak kupuje się łańcuszek z 50 sztuk 🙂
Dzień przed Wigilią nadal wszystko leżało luzem czekając na 'tą właściwą chwilę’, ale jako, że to już była ostatnia szansa na sensowne wykorzystanie tego, to trzeba się było zebrać do pracy 🙂
Połączenie tego do kupy było całkiem proste, bo to tylko 3 rzeczy: zasilacz 5V, płyteczka Arduino Pro Mini i łańcuszek LED-ów.
Oprogramowanie protokołu było większym wyzwaniem – przebiegi generowane dla WS2811 muszą być dosyć dokładnie, a najkrótsze impulsy mają tylko 8 cykli zegara w Atmega328 (taktowanej 16MHz), więc wybrałem znowu (jak zwykle) assembler 🙂
Żeby było trudniej, była już 3 rano jak zacząłem debugować 🙂 Szczerze mówiąć, to bez mojego nowego oscyloskopu znalezienie 3 błędów jakie zrobiłem potrwałoby pewnie grube godziny. Zwłaszcza, że Chińczyk, który sprzedawał te diody opisał je jako: ’we sent WS2811. Or we may sent UCS1903′ (czyli wysyłamy WS2811 lub UCS1903) – dwa różne kontrolery z różnymi protokołami i nikt nie wie który tak naprawdę dostałem.
Na szczęśćie to był WS2811, więc pierwsza (poprawna) implementacja protokołu zadziałała.
Dodałem do tego kilka prostych funkcji do poruszania światła po łańcuszku i całość wylądowała na choince.
Cały kod z tego 'jednonocnego projektu’ jest dostępny na moim Githubie: https://github.com/majekw/wsled
A tak wyglądają światełka na mojej choince:
The first picture doesn’t actually show a WS2811 LED, rather it’s an autofading RGB LED. The WS2811 would have 2 more leads- Din and Dout signals necessary for control.
Lens distorts view, but definitely all 4 legs are present 🙂
What seems to be some kind of dirt on the left and on the right, there are 'missing’ legs. On the left you can also spot bonding wire. Two center legs have also much larger ends to make support for chip (on the right) and leds (on the left).
I could make picture with side view if you still not believe 🙂
However, thank you for comment 🙂
I pity the guy deep in china who had to solder all these les elements to the tiny pcb before they were encased 😉
lovely setup though