Kto uważnie śledzi różne nasze mniej oficjalne kanały komunikacyjne już pewnie wie, że od jakiegoś czasu rozwijamy projekt pod wiele mówiącą nazwą GoWired Touch. Obecny stan przedsięwzięcia jest już na tyle zaawansowany, że przyszedł czas na jego oficjalne ogłoszenie.
GoWired Touch
Co to jest/będzie GoWired Touch
GoWired Touch to seria włączników dotykowych komunikujących się przewodowo z systemem automatyki domowej. Od strony architektury jest to niemal dokładny odpowiednik modułów dopuszkowych GoWired sfinansowanych w naszej kampanii crowdfundingowej na portalu Crowd Supply w 2020 roku. Zgadza się zarówno architektura samej elektroniki (moduł Touch MCU pracujący w połączeniu z shieldami o zróżnicowanej funkcjonalności) jak również architektura systemu (moduły montowane w puszkach elektrycznych połączone magistralą szeregową). Oczywiście, jak wszystkie nasze projekty, również GoWired Touch będzie miało otwarty kod źródłowy (w całości opublikowany na GitHub) oraz otwarty protokół komunikacji bezproblemowo integrowalny z wiodącymi kontrolerami automatyki domowej open source (polecamy Home Assistant 🙂 ).
Musimy przyznać, że zamknięcie modułu automatyki w łączniku instalacyjnym marzyło nam się od samego początku. Dopiero teraz jednak pojawiła się możliwość realizacji tego marzenia, z której bez wahania skorzystaliśmy. Był (i jest) to dla nas niesamowicie ekscytujący i pobudzający wyobraźnię projekt, za pomocą którego chcielibyśmy wpłynąć choć odrobinę na polski (i nie tylko) rynek automatyki domowej. Może zacznijmy od dokładnego opisu naszej koncepcji. Ale na początek krótki film.
Demonstracja działania GoWired Touch na stole. Włączenie bezpośrednie, wyłączenie za pośrednictwem włącznika schodowego, dłuższe wciśnięcie.
Dlaczego rozproszona architektura systemu?
Rozproszona architektura przestrzenna, czyli umieszczanie modułów automatyki w puszkach instalacyjnych to zdecydowanie jedna z głównych cech charakterystycznych rozwijanych przez nas projektów, a zarazem, naszym zdaniem, ich główna zaleta. Przyjęło się, że podstawowym wyborem w przewodowych instalacjach automatyki domowej jest okablowanie w gwiazdę, czyli prowadzenie wszystkich przewodów od odbiorników/czujników bezpośrednio do punktu centralnego. W takiej architekturze wszystkie moduły elektroniczne umieszcza się w rozdzielni. Podejście to ma jednak naszym zdaniem istotne wady. Przede wszystkim instalacja w gwiazdę wymaga większej ilości materiałów i pracy, więc jest droższa. Żeby ją zastosować należy od podstaw zbudować całą instalację elektryczną, co jest możliwe tylko na początkowym etapie budowy. Sama instalacja modułów wykonawczych wymaga też więcej wysiłku od instalatora, ponieważ musi on poradzić sobie z ogromną ilością przewodów w punkcie centralnym: posortować je, opisać, a na końcu jeszcze odpowiednio podłączyć.
Zupełnie inaczej jest w systemie magistralowym, który bardzo łatwo i tanio można nałożyć na już istniejącą tradycyjną instalację elektryczną. Wystarczy położyć szeregowo przewód magistralowy pomiędzy rozdzielnią a puszkami instalacyjnymi. Szczególnie łatwo jest w przypadku GoWired Touch, ponieważ płytka głębokość wbudowania mechanizmów pozwala na ich zastosowanie w standardowych puszkach instalacyjnych. Instalator nie zderzy się ze „spaghetti ze skrętek”, ale za każdym razem ma do czynienia z niewielką ilością przewodów, które wystarczy przyporządkować do kilku kategorii, takich jak magistrala, faza, odbiornik, łącznik schodowy. Dodatkową zaletą, jaką daje ulokowanie elementów systemu we wszystkich pomieszczeniach domu jest możliwość łatwiej rozbudowy, szczególnie o czujniki, które można podłączyć lokalnie, bez prowadzenia dodatkowych przewodów do punktu centralnego. Powyższe zalety powinni docenić zarówno inwestorzy, jak i nabywcy nieruchomości w trakcie budowy (np. od dewelopera) oraz sami instalatorzy.
Touch MCU – serce (i mózg) GoWired Touch
Moduł Touch MCU to najważniejszy element proponowanej przez nas układanki. Ta 4-warstwowa płytka PCB posiada pola dotykowe i wszystkie podzespoły elektroniczne potrzebne do samodzielnej pracy. Mikrokontroler to dobrze znana z naszych wcześniejszych konstrukcji, sprawdzona i niezawodna ATmega328PB. Transceiver RS485 oraz zewnętrzna pamięć EEPROM to również układy znane z kampanijnego GoWired MCU. Podświetlenie LED realizowane jest natomiast przez montowane od spodu diody RGB sterowane przez dedykowany kontroler od Texas Instruments. Jego zastosowanie bardzo uprościło layout płytki pozwalając choćby na wyeliminowanie rezystorów do diod LED. Na płytce znalazło się też miejsce na stabilizator napięcia oraz przełącznik typu DIP Switch, który używany jest do konfiguracji pracy modułu. Na warstwie TOP znajdują się również pola lutownicze na dodatkowe czujniki: temperatury, wilgotności, natężenia światła i zbliżeniowy, które mamy zamiar wprowadzić na dalszym etapie rozwoju projektu. Programowanie układu odbywa się przez złącze SKEDD od Wurth Elektronik, które umożliwia łatwe flashowanie na linii produkcyjnej, a fizycznie jest tylko metalizowanymi otworami w płytce PCB. Interfejs łączący Touch MCU z shieldami posiada 12 pinów, wśród których znajdują się 2 piny zasilania, 2 piny RS485, 4 piny cyfrowe PWM, 2 piny analogowe oraz 2 piny I2C.
Obecność 3 pól dotykowych pozwala na obsługiwanie wersji 2-polowych oraz 1-polowych włącznika za pomocą dokładnie tego samego sprzętu. Oznacza to ułatwienia logistyczne, a także możliwość łatwiej zmiany trybu pracy przez użytkownika. W każdej chwili włącznik dwu przyciskowy będzie mógł stać się włącznikiem jedno przyciskowym i odwrotnie. Moduł współpracuje z panelem z matowego, odpornego na pozostawianie odcisków palców szkła, który jest przez naszego partnera dostarczany w wersji białej lub czarnej. Dostępne są również ramki wielokrotne do 4 modułów, jak również łączenie włączników z gniazdami różnego rodzaju (230V, RJ45, HDMI, SAT, USB).
Shieldy
Shieldy w systemie GoWired Touch spełniają dokładnie taką samą funkcję jak w „tradycyjnym” GoWired czyli posiadają złącza do przymocowania przewodów magistrali oraz obciążenia, a także całą niezbędną elektronikę do obsługi różnego rodzaju obciążeń. Są solidnie przymocowane do metalowej ramki za pomocą śrub oraz zamknięte w obudowie z tworzywa sztucznego. Na początek przewidzieliśmy 2 konstrukcje: 2Relay oraz RGBW.
GoWired Touch 2Relay
Tym modułem kontynuujemy tradycję nazywania naszych konstrukcji od funkcjonalności, którą oferują. Moduł 2Relay posiada na pokładzie 2 przekaźniki elektromagnetyczne o obciążalności do 5A/230V AC (lub 30V DC) każdy. Pozostałe zadania, które spełnia, to zasilanie Touch MCU za pomocą przetwornicy DC/DC (co istotne, napięcie wejściowe będzie mieścić się w zakresie ~7-24V), odczyt wejść cyfrowych przez transoptory oraz pomiar prądu za pomocą używanego przez nas już wcześniej czujnika ACS712. 2Relay nadaje się do współpracy z oświetleniem oraz roletami.
GoWired Touch RGBW
Shield RGBW to ściemniacz 4-kanałowy, który może być używany również do obciążeń o mniejszej liczbie kanałów. Zastosowane tranzystory pozwalają na pracę z napięciami do 30V DC. Rodzaj złącz limituje maksymalny prąd obciążenia do 6A (vs 10A dla „tradycyjnego” GoWired RGBW), co jednak nadal pozwala na obsługę wielometrowej taśmy LED, szczególnie takiej o napięciu 24V DC. Ponadto, analogicznie do modułu 2Relay, Touch RGBW posiada przetwornicę DC/DC oraz czujnik prądu ACS712.
Oprogramowanie, czyli to, co tygryski lubią najbardziej
W tym temacie zdecydowanie przebyliśmy długą drogę. Mimo że znaczna część kodu pochodzi bezpośrednio z „oryginalnego” projektu GoWired, to ze względu na specyfikę rozwiązania chyba nawet większość musiała zostać napisana od nowa. Przy okazji zaimplementowanych została cała masa bardzo ciekawych zmian i udoskonaleń, z których część będzie mogła też w przyszłości trafić do kodu naszego wcześniejszego projektu. Obecnie kod GoWired Touch jest już gotowy do wypuszczenia w wersji 1.0.0. Z tej okazji poniższy dokładny opis nowych funkcjonalności.
Jeden kod by wszystkimi rządzić
Główną cechą linii GoWired Touch od początku miała być większa niż dotychczas dostępność, czyli gotowość do obsługi przez użytkowników innych niż entuzjaści mikrokontrolerów i programiści. W związku z tym niezbędne było wyeliminowanie konieczności przygotowania indywidualnego kodu dla każdego modułu i zastąpienie jej programowaniem w ramach procesu produkcyjnego. W tym celu zastosowaliśmy kilka mechanizmów:
– Detekcja shielda – za pomocą dzielnika napięcia podajemy na pin analogowy informację o rodzaju podłączonego shielda. Dzięki temu Touch MCU wie z jakim sprzętem ma do czynienia i wykorzystuje tę wiedzę do przeprowadzania zautomatyzowanej konfiguracji,
– Konfiguracja przez DIP switche – każde MCU jest wyposażone w 3-polowy DIP Switch, za pomocą którego można konfigurować pracę modułu. W zależności od podłączonego shielda (patrz punkt wyżej) dostępne są następujące opcje: 1 lub 2 pola dotykowe, oświetlenie lub roleta, wybór ilości kanałów ściemniacza,
– Automatyczne nadawanie nr ID – dzięki pracy jednego z użytkowników GitHub naprawiony został błąd w bibliotece MySensors i automatyczne nadawanie ID modułom jest już możliwe. Bardzo nam to pomogło w osiągnięciu celu,
– Konfiguracja „sekretna” – parametry lub funkcje, których nie ma możliwości przekazać modułowi poprzez opisane powyżej sposoby zostały elementem konfiguracji „sekretnej”, czyli polegającej na wysłaniu odpowiedniej wiadomości do modułu. Najważniejszym zastosowaniem tego sposobu jest wywołanie autokalibracji rolety. Dzięki temu kalibrację można wywołać w dowolnym momencie, bez kasowania pamięci modułu.
– Konfiguracja tekstowa – znana z „tradycyjnego” GoWired konfiguracja tekstowa również występuje w przypadku GoWired Touch, jednak konfigurowane w ten sposób wartości są znacznie bardziej ‘niskopoziomowe’. Producent, instalator lub zaawansowani użytkownicy mogą dzięki niej modyfikować zachowanie modułów, jednak ustawienia domyślne są odpowiednie dla wszystkich. Konfiguracja tekstowa pozwala na zmianę takich parametrów jak prędkość transmisji, pinout, kolory podświetlenia i jego intensywność, dezaktywowanie składników systemu (debug, watchdog, itp.).
Odczyt wejść analogowych i cyfrowych
Do odczytu wejść analogowych zastosowaliśmy bibliotekę ADCTouch, która nie wymaga żadnych dodatkowych komponentów sprzętowych, a jedynie analogowy pin mikroprocesora. Jest to zdecydowana oszczędność kosztów, a z testów już wiemy, że odczyt za jej pomocą działa bardzo solidnie. Natomiast sama biblioteka stanowi daleki backend. Cała funkcjonalność odczytu stanów wejść została napisana od nowa. Pierwszy algorytm odczytu, mimo że teoretycznie poprawny, powodował nietypowe i nieregularne błędy. Po zmianie algorytmu problemy ustały i kod wygląda na gotowy do publikacji.
Diagnostyka referencji pól dotykowych
W trakcie rozwiązywania problemu z odczytem opisanym w akapicie powyżej podejrzenie padło na zmiany referencji pól dotykowych (czyli wartości odczytu w warunkach bez dotyku). Z tego powodu napisana została dodatkowa funkcjonalność polegająca na śledzeniu referencji podczas pracy modułu i w razie potrzeby pobieraniu nowej referencji. Dzięki temu moduł powinien automatycznie wykryć zmianę referencji spowodowaną np. założeniem szklanego panelu i samodzielnie dostosować się do nowych warunków odczytu.
Interakcje z użytkownikiem za pomocą wbudowanych diod LED
Zagadnienie wskazywania stanów modułu poprzez wbudowane diody RGB jest czymś zupełnie nowym, co pojawiło się dopiero przy okazji projektu GoWired Touch. Standardowo, diody przyjmują określoną intensywność i barwę w zależności od stanu sekcji (np. przekaźnika) – domyślnie jest to kolor niebieski w stanie wyłączonym i pomarańczowy w stanie włączonym. Za pomocą efektów wizualnych jest również demonstrowane wykrycie dłuższego wciśnięcia (tzw. rainbow swirl), lub nieaktywność pól dotykowych w wyniku inicjalizacji, kalibracji rolety, itp. (ciągłe lub mrugające światło czerwone).
Zachowanie wbudowanych diod LED podczas kalibracji rolety.
Wartościowe funkcjonalności odziedziczone z „tradycyjnego” GoWired
Kod rozwijany wcześniej na potrzeby projektu GoWired ma również kilka sukcesów i wartych opisania funkcjonalności. Przede wszystkim jest to obsługa rolet, która ma takie udogodnienia jak autokalibracja, czyli pomiar i zapisywanie w pamięci nieulotnej czasu ruchu rolety. Dzięki temu możliwe jest sterowanie procentowe nawet po przywróceniu zasilania. Obecny kod obsługi rolet w obu projektach cechuje się możliwością mieszania sterowania procentowego ze sterowaniem z przycisków, co nie było możliwe w wersjach wcześniejszych niż v1.2.0. Dodatkowo, na podstawie upływu czasu precyzyjnie mierzona jest pozycja rolety. Warto wspomnieć również o funkcji pomiaru prądu, na podstawie której raportowane jest do kontrolera zużycie energii. W oparciu o pomiar prądu działa również wewnętrzny, elektroniczny bezpiecznik, który wyłączy wyjścia po wykryciu zbyt dużej wartości pobieranej przez obciążenie.
Co dalej
Skoro od strony technicznej projekt GoWired Touch jest już właściwie gotowy, to poświęcimy teraz czas na zebranie informacji zwrotnej od entuzjastów zrzeszonych w grupach i forach internetowych. Jeśli nasz projekt się Wam spodoba, przedstawimy go naszym partnerom z Crowd Supply i rozpoczniemy przygotowania do nowej kampanii crowdfundingowej w celu wejścia z naszym nowym dziełem na rynek. Równocześnie będą odbywać się testy systemu w wybranych lokalizacjach.
W wyniku prac nad GoWired Touch przerwaliśmy nasze zaangażowanie w inną zapowiedzianą już kampanię nt. GoWired Multiprotocol Gateway. Obecnie skłaniamy się ku strategii zrealizowania kampanii na włączniki dotykowe jeszcze przed kampanią nowego gateway’a. Ethernet Gateway zrealizowany w ramach pierwszej kampanii jest nadal dostępny na Mouser Electronics, a zapowiedź i realizacja kampanii na nowe włączniki (które przecież do pracy wymagają starszego, czy nowszego projektu gateway’a) ma szansę bardziej wypromować nowy gateway, jak również przyczynić się do wyczerpania stanów magazynowych poprzedniej konstrukcji.
Drogi czytelniku! Jesteś członkiem jakiejś społeczności zrzeszonej wokół tematyki smart home? Daj znać o nas w swojej grupie. Dowiedz się od kolegów i koleżanek co sądzą o naszych działaniach i daj nam znać mailowo lub na fb. Wszędzie nie dotrzemy, dlatego potrzebujemy Twojej pomocy!
Jeśli dotarłeś do końca, bardzo Ci dziękujemy! Wierzymy, że też widzisz dużą wartość dodaną w naszej pracy i będziesz nas wspierał w dalszych wysiłkach!