Chciałbym przedstawić mój projekt na konkurs świąteczny bazujący na płytce Nucleo 64 z mikrokontrolerem STM32 na modelu STM32F411RET6 Link.
Jest to sterownik WiFi komunikujący się z telefonem z systemem Android do coraz bardziej popularnych diod WSRGB2811 zamontowanych na świątecznej choince.
Dokładnie to łańcuch choinkowy 150 szt. diod LED do nabycia na znanym portalu aukcyjnym. Zmianą kolorów świecenia można sterować również za pomocą encodera.
Projekt ten powstał w dość ekspresowym tempie przed świętami w głównej mierze żeby raz na zawsze skończyć z dylematem czyli w jakim kolorze zamontować lampki na choince

Dzięki tym diodom WSRGB2811 można wybrać kolor dowolny, a mało tego można wybrać by każda dioda świeciła na inny, nazwałem to "mix" i w sumie ta funkcjonalność oraz różne jej warianty najbardziej się podobała rodzinie czy odwiedzającym gościom. Myślę iż najlepiej to obrazuje film:
Elektronika sterownika została wykonane jako "Shields Arduino" i stanowi nakładkę na Nucleo więc może zostać użyta z dowolną inną płytką posiadającą złącza zgodne z tym standardem.
Schematy: (w załączniku pliki z Eagle)


Jak widać na schemacie za komunikacje z telefonem odpowiada moduł ATNEL-WIFI232-T firmy ATNEL Link użyty w jego podstawowej aplikacji komunikujący się z mikrokontrolerem za pomocą UART. Zdecydowałem się na niego ponieważ dzięki wsparciu producenta, a zwłaszcza dedykowanemu oprogramowaniu jest łatwy w konfiguracji, zarządzaniu oraz obsłudze i tak naprawdę problematyka jego używania sprowadza się do uruchomienia obsługi UART. Oprócz niego na płytce znalazł się wyświetlacz OLED 1,3 cala 128x64px Link do wyświetlania aktualnego czasu i daty oraz wyboru programu świecenia diod led za pomocą encodera (jest to moduł firmy Waveshare Link). Do potrzymania działania RTC została zamontowana podstawka pod 3V baterię CR2032, natomiast układ EEPROM 24C04AP służy do zapisania domyślnego programu świecenia choinki po włączeniu zasilania.
Program dla mikrokontrolera został napisany w języku „C” w środowisku TrueSTUDIO Lite firmy ATOLLIC Link z wykorzystaniem bibliotek HAL i uprzednio wygenerowanym kodem konfiguracyjnym w STM32CubeMX. Zegar STM32F11RET6 pochodzący z PLL zewnętrznego rezonatora kwarcowego 8Mhz skonfigurowany jest na jego maksymalną moc 100Mhz, do odliczania czasu wykorzystywany jest również zewnętrzny rezonator dla RTC 32,768KHz. W CubeMx zostały skonfigurowane takie peryferia mikrokontrolera jak DMA, RTC, TIM1, TIM2, I2C1, SPI1, SPI4 i USART2 oraz odpowiednie przerwania i porty GPIO dla poszczególnych wyjść wg. dołączonego schematu. Plik wynikowy konfiguracji z programu CubeMX dołączam jako załącznik do wglądu podobnie jak plik main.c który teraz skrótowo omówię tutaj:
Code: c
Wygenerowany program najpierw konfiguruje wszelkie peryferia mikrokontrolera, następnie inicjalizowany jest wyświetlacz OLED oraz komunikacja z modułem WiFi. W kolejnym etapie odczytany zostaje układ EEPROM by po wykonanym teście po włączeniu wyświetlania podstawowych kolorów RGB wybrać zapisany kolor domyślny. Następnie program przechodzi w pętlę główną gdzie w oparciu o taimery, wyświetla aktualny czas oraz oczekuje na informację o zmianie programu z telefonu bądź za pomocą encodera.
Sama komunikacja z diodami WSRGB2811 odbywa się za pomocą sprzętowego SPI w oparciu o DMA.
Zastanawiać może poco to całe RTC i odmierzanie czasu, otóż projekt uważam za przyszłościowy i rozwojowy na kolejne święta. Po dokupieniu większej ilości diod WSRGB2811 będę chciał przyozdobić zewnętrzną choinkę i wówczas dorobię programową funkcjonalność włączania i wyłączania ich o określonej porze.
Program napisany na telefon z systemem Android współpracującym z programem sterownika jest stworzony w środowisku B4A firmy Anywhere Software Link w wersji 6.00 czyli w języku „Basic for Android”. Oprogramowanie to stanowi swego rodzaju nakładkę na Java SDK i Android SDK umożliwiającym w dość szybki i prosty sposób napisanie działającej aplikacji na system Android. Aplikację tą wgrałem na telefon każdemu z domowników co spotkało się z dużym entuzjazmem gdyż każdy mógł sobie zmieniać podczas okresu świątecznego kolor choinki siedząc w przysłowiowym "fotelu" w pokoju dziennym według własnego gustu bądź nastroju. Program oferuje możliwość nastawy podstawowych kolorów świecenia, a także mixów bądź efektów migania. Jego działanie widać na filmie. Dodatkową funkcjonalnością jest zapisanie domyślnej nastawy koloru po włączeniu zasilania. Jednakże funkcja ta była mało używana, gdyż sterownik pracował cały czas i zdalnie za pomocą telefonu występowało włączanie bądź wyłączanie choinki.
Dodatkowe zdjęcia obrazujące program na telefonie:





Za zasilanie elektroniki oraz diod odpowiada 5V 12 amperowy zasilacz MEAN WELL LPV-100-5 Link
Dokonałem pomiarów i 150 diod świecących na biało bierze ok 2,5A prądu więc jest jeszcze spory zapas na większą ilość diod.
Zasilam zarówno początek jak i koniec łańcucha.
Natomiast całość została zamknięta w transparetnej puszcze hermetycznej firmy Pawbol S-BOX 516-P Link
Dodać należy również, iż sama płytka Nucleo została zmodyfikowana wg. jej noty o możliwość używania USART2, RTC i zewnętrznego rezonatora 8 Mhz, który został przylutowany nie typowo od spodu płytki
ze względu na gniazdo baterii znajdujące się na wykonanym prze zemnie "shield`zie arduino". Został również odcięty z niej programator ST-LINK.
Schemat Eagle, PCB, wsad do mikrokontrolera oraz program do wgrania na telefon zamieściłem w załączniku do pobrania.
Zdjęcia sterownika:






Zdjęcia pracy użytego łańcucha diod LED WSRGB2811 w zbliżeniu:






Cool? Ranking DIY