W poprzednim poradniku opisałem nieco, czym jest Apple HomeKit i jak wygląda podstawowa konfiguracja modułu ESP. Poza tym znalazły się tam informację o strukturze projektu oraz konfiguracji nowych akcesoriów w aplikacji Dom. Dlatego w tym artykule nie będę powtarzać raz jeszcze tych informacji, jeśli spotykasz się z tematem łączenia mikrokontrolerów ESP i platformy HomeKit po raz pierwszy to odsyłam Cię do wcześniejszego materiału.
Tematem tego poradnika będzie integracja modułu ESP8266 z podłączoną do jego wyprowadzenia linijką diod RGB LED o oznaczeniu WS2812B. Ta niezwykle popularna konstrukcja zyskała sporą popularność ze względu na swoją niską cenę oraz prostotę implementacji. Świecące elementy łączymy szeregowo, dzięki czemu do komunikacji wykorzystywany jest tylko jeden pin mikrokontrolera. Trzeba jednak pamiętać, że zasilanie podłączane jest równolegle. Poza tym diodowe linijki potrafią pobierać całkiem sporo prądu, pojedynczy element emitujący białe światło może potrzebować nawet 60mA, dzieje się tak, ponieważ przy białej fali światła świecą wszystkie krzemowe struktury – czerwona, zielona i niebieska, a każda z nich pobiera około 20mA. Przy kilku diodach RGB nie musimy o tym pamiętać, ale przy większej ilości pobór prądu rośnie, wówczas wskazanym rozwiązaniem będzie zasilić diody z osobnego źródła energii. W takim przypadku skorzystanie z gniazda USB, w komputerze może skończyć się źle, w skrajnych przypadkach możemy je bezpowrotnie uszkodzić.
Jednak, aby zacząć zabawę z diodami WS2812B, potrzebna będzie odpowiednia biblioteka, możesz pobrać ją tutaj. Ściągnięty plik zip dodajemy do Arduino IDE identycznie jak w poprzednim poradniku.
Sterowanie diodami WS2812B
Jeśli środowisko programistyczne jest już gotowe, można przejść do fizycznego podłączenia diod do modułu ESP. Na potrzeby przykładu do wyprowadzenia D4 mojego mikrokontrolera podłączyłem linijkę diodową z czterema świecącymi elementami, całość zasilana jest z portu USB komputera. Pamiętaj, że przy większej ilości diod wskazany jest zewnętrzny zasilacz o większej mocy.
Podobnie jak poprzednio projekt składa się z trzech plików, których nie będę omawiać w całości, zajmiemy się tylko najważniejszymi fragmentami, które należy zmodyfikować „pod siebie”. Projekt możesz pobrać z mojego profilu GitHub.
#define LOG_D(fmt, ...) printf_P(PSTR(fmt "\n") , ##__VA_ARGS__);
#define NEOPIN D4
#define NUMPIXELS 4
W głównym kodzie projektu przyjrzeć bliżej musimy się tak naprawdę tylko dwóm definicją – NEOPIN i NUMPIXELS. Pierwsza z nich określa wyprowadzenie, do którego podłączony został sygnał sterujący diodami, w moim przykładzie jest to D4. Druga definicja określa liczbę podłączonych do ESP diod, podłączyłem cztery elementy, dlatego w kodzie znalazła się cyfra 4. Co ciekawe, w definicji ilości diod można podać wartość większą od ilości fizycznie podłączonych elementów. Trzeba jednak pamiętać, że w takim przypadku moduł ESP, będzie wysterowywać diody, których fizycznie nie ma, co zabiera cenny dla mikrokontrolera czas.
Pliki my_accessory.c oraz wifi_info.h nie różnią się wiele względem przykładu z poprzedniego poradnika. Tutaj również możemy zmodyfikować podstawowe dane konfiguracyjnie, takie jak nazwa urządzenia (w przykładzie jest to RGB LED) oraz hasło dostępu potrzebne przy pierwszym uruchomieniu. Informację o sieci, z jaką połączyć ma się ESP, podajemy w pliku nagłówkowym.
Sterowanie diodami z aplikacji
Po zaprogramowaniu modułu ESP można przejść do dodania nowego akcesorium w aplikacji Dom. Proces ten wygląda identycznie jak w poprzednim materiale. Na chwilę uwagi zasługuję jednak sam proces sterowania diodami LED. Jak możecie zobaczyć na filmie mamy całkiem sporo możliwości, możemy z powodzeniem sterować jasnością, kolorem, jak i temperaturą barwy. Poza tym można utworzyć kilka skrótów do konkretnych kolorów świecenia.
Jak widać sterowanie diodami RGB WS2812B, jest całkiem proste i nie wymaga zbyt wielkiej ingerencji w kod. Wystarczy wstawić własne parametry i informacje konfiguracyjne, a następnie zaprogramować układ. Po uruchomieniu modułu należy połączyć go z Apple HomeKit i gotowe.
Zobacz też:
Kolejny artykuł o Apple HomeKit jest jeszcze niedostępny.
Źródła:
- https://github.com/adafruit/Adafruit_NeoPixel
- https://github.com/Mixiaoxiao/Arduino-HomeKit-ESP8266