Ustatnia modyfikacja 4 maja 2020 przez Olek

W ramach swojego projektu szukałem sterownika rolet, które by spełniam moje wymagania
– komunikacja kablowa, najlepiej CAN-bus
– dodatkowe wejścia, cyfrowe minimum dwa
– sterowanie równoległe przez ręczny przełącznik
– obsługa przez system Domoticz lub Home Assistant
– umieszczony w puszce przełącznika
– zasilanie z sieci 230V
– z własna logiką.

Na rynku nie znalazłem takowego sprzętu, który by spełniał powyższe kryteria. Dlatego zdecydowałem się samemu jego wykonać.

Do projektu użyłem mikrokotrolera STM32F103C8T6, miał wystarczającą moc, miał na pokładzie obsługę protokołu CAN, był mały. Była też okazja poznać bliżej układy rodziny STM32 i środowiska do ich programowania STM32CubeIDE. Przyznaje, że jest to wygodne środowisko i co pierwszy raz miałem okazje przetestować w wbudowanym debuggerem. Ostatnio jednak pisałem w Visual Studio Code z wtyczką PlatformIO i bardzo przypadł mi on do gustu. Można w nim również pisać dla STM32 z framework-iem STM32Cube i biblioteką HAL , ale nie było wygodnego narzędzia do konfiguracji rejestrów i flag taki jaki jest w oryginalnym IDE.

Do budowy prototypu sterownika posłużyła mi popularna płytka rozwojowa “blue pill” z wybranym STM32F103C8T6. Przy pomocy płytki stykowej stykowej podłączyłem dodatkowe moduły takie jak: płytkę z przekaźnikami i płytkę z transceiverem MCP2551. Ten zestaw dokładnie przedstawiał układy jakie będę potrzebował w sterowniku. Teraz mogłem zacząć pisać oprogramowanie do tego zestawu.

Oprócz samego sterownika musiałem opracować i obsłużyć komunikację CAN po drugiej stronie. Do tego posłużył mi ulubiony mikrokomputer Raspberry Pi ver. 3B. Wyposażyłem go w dodatkowy moduł do komunikacji CAN.

Magistrale CAN wybrałem, bo wydawała mi się najbardziej odpowiednia to tego typu zadań, czyli komunikacji kablowej inteligentnego domu. Mam doświadczenie z innym bardzo popularnym protokołem RS485 i MODBUS-em, ale ten wariant ograniczał się do komunikacji tylko typu klient-serwer. Ja potrzebowałem czegoś więcej i to daj CAN. Przy okazji warto było poznać ten rodzaj komunikacji.

Trochę trwało zanim dwa urządzenia po przeciwległych końcach kabla się dogadały. W grę wchodziły problem sprzętowe jak również programowe. Nie ocenionym w tych sprawach okazał się oscyloskop z wbudowanymi możliwościami śledzenia ramek komunikacyjnych CAN. Za jego pomocą mogłem obserwować i sprawdzać fizyczne parametry komunikacji, co określało m.i. po czyjej stronie (nadawcy czy odbiorcy) był problem.

Po stronie Raspberry Pi też musiałem zająć się obsługą programową protokołu. Planowałem programować w Pythonie i to mi się znakomicie udało. Były odpowiednie biblioteki do obsługi protokołu, które dało się w prosty sposób zaimplementować. Początkowo korzystałem z Domoticza jako głównego narzędzia do sterowania logiką całości domu. Udało mi się podłączyć sterownik do niego za pomocą API json.

W miedzy czasie dużo dobrego przeczytałem o innym opensoursowym pakiecie jakim jest Home Assistant. Dlatego uznałem, że wypadało by się z nim zapoznać, co uczynniłem. Ma trochę inne podejście do tematu jak Domoticz, nie tak przejrzyste, ale podobno bardziej uniwersalne i profesjonalne. To się okaże jak więcej na nim popracuje

Należy jeszcze wspomnieć o protokole MQTT, który służy do rozgłaszania informacji w sieci Internetu Rzeczy. Ja również z niego korzystam w projekcie. Napisałem skrypt w Pythonie, który jest bramka pomiędzy MQTT a komunikacją CAN. Home Assistant właśnie za jego pośrednictwem komunikuje się z moim sterownikiem.

Jak tylko miałem pewność że wybór sprzętowy jest trafny zacząłem docelowo projektować sterownik. Miał się on mieścić w puszcze i dlatego miał być maksymalnie zminiaturyzowany. Dlatego pozostała mi tylko technologia montażu SMD. Do projektowania układu skorzystałem z programu Eagle z którym kiedyś korzystałem przy projekcie sieci pomiarowej. W miedzy czasie oprogramowanie Eagle zmieniło właściciela na AutoDesk-a, którego produkty takie jak Invetor czy AutoCad bardzo dobrze mi są znane.

Ze względu na miniaturyzację i dwu warstwową płytką musiałem skorzystać z firmy zewn zewnętrznej, która mi je wykonała. Jak otrzymałem pierwsza płytkę fizycznie to dopiero się zorientowałem o jakiem miniaturyzacji mówimy. Dla przykładu układy SMT32F103C8T6 jest w obudowie LQFP48 o rastrze 0,5mm (20mils). Jest to chyba jedna z najmniejszych najmniejsza “rozdzielczość” jaką można ręcznie (nie maszynowo) lutować.

Jednak moje wrodzone umiejętności 🙂 pokonały tą technologię i bez większego doświadczenia i praktyki ją opanowałem, bez strat w układach i płytkach. Jak się ponownie okazuje strach/obawy ma wielkie oczy. Trzeba mieś tylko w miarę dobry sprzęt. Do wlutowywania niedziwnym narzędziem jest stacja na gorące powietrze.

Oczywiście w momencie montażu i uruchamiania układu okazało się, że zapomniałem do mikrokontrolera doprowadzić główne zasilanie (VSSA i VDDA), dlatego te kabelki obok układów. Jest jeszcze kilka pomniejszych błędów, ale jest to bądź co bądź prototyp i moje pierwsze jego wykonanie po dłuższej przerwie. I tak uważam, że wyszło to całkiem nieźle, a co najważniejsze działa.

Ze sterownika wychodzi troch wyprowadzeń, ze względy na jego miniaturyzację zrezygnowałem z standardowych złączy. Wyszyte wyjścia są na zasadzie wyprowadzeń przewodowych. Z moich doświadczeń w montażu elektryki w puszkach uznałem, że podłączanie na złącza typu WAGO czy UY (popularne żelki) będą wygodniejsze.

Ochroniłem też płytką od strony układów SMD i ściąłem jeszcze wolne krawędzie dla zmniejszenia rozmiaru sterownika. W planie było jego ułożenie na dnie puszki równolegle do ściany, co sugerował okrągły kształt sterownika. W praktyce jednak włożyłem go płasko pomiędzy wyprowadzane kable. Jak widać teoria z praktyką może się trochę mijać.

Uruchomiłem sterownik w rolecie jednym z najdalszym miejscu od serwera i ładnie wszystko chodzi, brak problemów z komunikacją. Wykorzystuje jedną pare skrętki z kabla Eternetowego jaki mam rozprowadzony do każdej rolety i nie tylko :).

Mam jeszcze dwie prototypowe płytki, które chce uruchomić w innych miejscach i sprawdzić komunikacje z kilkoma sterownikami, w mieszanej topologi sieci CAN magistrala i gwiazda. Równolegle dopieszczenie oprogramowania, m.i. sterowanie proporcjonalne rolety, integracja z kontaktronem ich zamknięcia. Jeśli chodzi o sprzęt to może inny format płytki PCB i inaczej rozmieszczone elementy do innego sposoby umieszczanie sterownika w puszcze. Obecny okrągły przystosowany do równoległego osadzenia w puszcze chyba jest nietrafiony, ale to się jeszcze okaże, mam jeszcze 2 płytki okrągłe i 13 rolet do obsadzenia :-).

Dodatkowe funkcjonalności do ewentualnego przyszłego dodania
– obsługa własnego czujnika zmierzchu, mam wyprowadzone nadmiarowe przewody do kontaktronu zamknięcia, można je wykorzystać.
– pomiar prądu zasilającego roletę, można w ten sposób rozpoznać krańcowe położenia rolet czyli wyłączenie napędu rolety

Dodaj komentarz