Dzień dobry!
Chciałbym opisać mój projekt sterownika do układów WS281x, czyli coraz bardziej popularnych pasków diodowych (i nie tylko) z indywidualnie, szeregowo sterowanymi diodami.
Do wykonania samego projektu skłoniła mnie potrzeba sterowania takimi paskami, które kupiłem u chińczyka. Materiały do urządzenia są wdrodze, stąd jeszcze dział DIY Początkujący/Niedokończone.
Cechy sterownika:
1) 2 kanały sterujące, umożliwiające sterowanie do 1024 diod z odświeżaniem 30fps każdy (w/g noty katalogowej WS2812B)
2) komunikacja ze światem po USB i/lub RS485
3) możliwość zapisania efektów w pamięci QSPI lub na karcie microSD
4) zegar RTC z podtrzymywaniem bateryjnym
5) sterowanie pilotem IR
6) sterowanie trzema przyciskami
7) możliwość podłączenia wyświetlacza OLED 0,96" lub 1,3"
8) czujnik natężenia światła otoczenia
9) mikrofon z przedwzmacniaczem
10) wyjście przekaźnikowe do odłączania głównego zasilacza LED
11) możliwość zasilania z pasków diodowych, USB lub zewnętrznego zasilacza 5V
12) oparty na STM32L476RET6
Rozwinięcie cech:
1) Do wygenerowania odpowiednich przebiegów do sterowania WS281x (czyli zgodnie z ich notą katalogową) został wykorzystany sprzętowy interfejs SPI wraz z układem formującym na elementach RC i tranzystorze NPN.
Sama idea jest oparta na pomyśle ze strony Link a rozwinięta o bufor ostatecznie kształtujący przebieg. Dodatkowo został dostosowany do sterowania napięciem 0/3,3V, wyjście 0/5V.
Schemat z symulacji w spice oraz przebiegi:
2) Zastosowany mikrokontroler posiada sprzętowy interfejs USB, który można wykorzystać do komunikacji z PC. Szczegóły zależą już od oprogramowania. Może być to np klasa CDC, czyli emulacja portu szeregowego, lub tez MSC, czyli dostęp jak do dysku i zapis bezpośrednio efektów na kartę microSD lub pamięć QSPI. Jako alternatywny sposób zdalnego sterowania po kablu można użyć interfejsu RS485.
3) Efekty mogą być zapisywane na karcie microSD lub pamięci QSPI, do wyboru.
Karta microSD jest o tyle dobra, że można wgrać dane na komputerze.
Natomiast alternatywą jest pamięć QSPI, czyli pamięć SPI, z tym, że przesył danych możliwy jest za pomocą 4 linii danych.
Footprint na PCB umożliwia montaż zarówno układów w obudowie SO-8 208mil i WSON-8. Przykładowo pamięć S25FL256SAGNFI001 za niecałe 20zł oferuje 32MB przestrzeni. Oba typy pamięci również są sprzętowo obsługiwane przez zastosowany mikrokontroler. Możliwe jest zaimplementowanie FatFs w oprogramowaniu.
4) Ponownie, zaproponowany mikrokontroler posiada sprzętowy zegar RTC, który potrzebuje do działania jedynie kwarcu 32kHz, opcjonalnie potrzymywanie bateryjne. Umożliwia to wykonanie, np. zegara na wspomnianych diodach.
5) Do sterowania na odległość możliwe jest użycie pilota na podczerwień.
Sygnał IR odbierany jest za pomocą układu TSOP34836, po czym kierowany jest na timer skonfigurowany w trybie capture. AN3174
6) Lokalnie można sterować przewidzianymi do tego celu trzema przyciskami typu TACT, więcej opisu chyba nie trzeba.
7) Jako ciąg dalszy lokalnego interfejsu użytkownika przewidziany jest gotowy moduł wyświetlacza OLED. Pasuje zarówno tańszy model o przekątnej 0,96" jak i droższy 1,3". Sterowanie po I2C.
8) Układ umożliwia pomiar natężenia oświetlenia otoczenia. Do tego został wykorzystany fototranzystor TEPT4400, którego sygnał mierzony jest za pomocą wewnętrznego ADC mikrokontrolera. Możliwe jest przez to np. sterowanie jasnością diod w zależności od ilości światła w pomieszczeniu.
9) Jako kolejne "wejście" użyto mikrofonu, wraz z przedwzmacniaczem zrealizowanym na wzmacniaczu operacyjnym LMV321. Sygnał kierowany jest również na kanał ADC mikrokontrolera. Ta opcja umożliwia np. stworzenie kolorofonu.
10) W celu obniżenia poboru prądu w trybie "uśpienia" za pomocą wbudowanego przekaźnika możliwe jest odłączenie z sieci głównego zasilacza do diod. W ten sposób można wyeliminować jego straty "jałowe".
11) Sam sterownik jest zasilany napięciem 5V. Możliwy jest pobór prądu ze strony pasków diodowych, portu USB jak i zewnętrznego zasilacza. Każde wejście odseparowanie jest diodą.
12) STM32L476RET6 został wybrany, gdyż zawiera w sobie wszystkie potrzebne peryferia, głównie interfejsy QSPI, MMC/SD i USB. Dodatkowo ma sporo pamięci Flash i kosztuje koło 30zł.
Kompletny schemat:
Płytka drukowana ma wymiary 5cm x 10cm. Layout PCB:
Szkielet oprogramowania, czyli wstępna konfiguracja peryferiów, sprawdzenie
przypisania pinów itd. zostało zrobione w programie CubeMX.
Oprogramowanie planuje pisać w SW4STM32 od AC6, czyli gcc + Eclipse.
Jako programatora/debuggera użyję płytki Nucleo.
Aktualny stan projektu:
1) Wykonany projekt schematu i PCB
2) Zweryfikowane użycie wyprowadzeń i peryferiów mikrokontrolera
3) Wygenerowany szkielet oprogramowania
4) PCB zlecona do wykonania
Wkrótce ciąg dalszy... :)
Pozdrawiam,
Karol
PS. Zamówiłem kilka PCB więcej. Jeśli ktoś byłby zainteresowany proszę o PW
Fajne? Ranking DIY