Popularny post dkradke 79 Napisano Styczeń 24, 2019 Popularny post Udostępnij Napisano Styczeń 24, 2019 (edytowany) Parę lat temu podczas remontu u rodziców postanowiłem usprawnić im parę rzeczy w mieszkaniu. Stworzyłem sterownik, który integrował ze sobą sterowanie oświetleniem i ogrzewaniem. Pomimo prostej obsługi nie przewidziałem tego, że moi rodzice będą bali się tego używać, myśleli że coś zepsują... niestety są na bakier z elektroniką. Tak powstała druga wersja, która jest dla nich absolutnie bezobsługowa w kwestii ustawień czy sterowania ogrzewaniem. Podstawowe cechy komunikacja Wifi integracja z Firebase zdalny dostęp z dowolnego miejsca na świecie Odtwarzanie komunikatów głosowych sterowanie za pomocą asystenta Google pilot radiowy 2,4GHz sterowanie oświetleniem sterowanie ogrzewaniem dwupunktowy pomiar temperatury detekcja otwartego okna automatyczne aktualizowanie czasu z serwera NTP łatwe dokładanie bezprzewodowych czujników, np. zalania duży i czytelny wyświetlacz Tym razem uwzględniłem obawy rodziców i w każdej chwili mam dostęp do wszystkich ustawień. Dla niecierpliwych filmik (polecam włączyć dźwięk) Główny moduł Całe sterowanie oparłem o układ ESP12. Jest to układ o bardzo dużych zasobach z wbudowanym wifi. Niestety ma on bardzo mało wyprowadzeń, dlatego aby obsłużyć wszystkie dodatkowe elementy takie jak: LCD ST7565 DS18B20 Enkoder Trzy przyciski Kilka wyjść Moduł MP3 (JQ8400-FL) RFM73 Wykorzystałem 16 bitowy ekspander na SPI MCP23S17. Wymagało to dostosowania kilku bibliotek np. LCD czy enkodera, aby zamiast pinów ESP używały MCP23S17. To było największym wyzwaniem dla mnie, aby zrealizować obsługę trzech układów SPI, gdzie dwa z nich były częściowo sterowane poprzez pierwszy czyli MCP23S17. Dodatkowo przydzielanie czasu na poszczególny element trzeba było odpowiednio rozdzielić, aby obsługa enkodera nie gubiła kroków. Zdalny dostęp Sterownik działa jako klient w sieci wifi, nie chciałem przekierowywać portów na routerze, ani stawiać dodatkowego VPNa. Wykorzystałam tutaj RealTime Database od Google czyli Firebase. Jest darmowe, względnie proste w obsłudze wprost z układu ESP, a dostęp do Firebase posiada każdy kto ma konto w Google. Wykorzystanie tego mechanizmu daje nam bardzo duże możliwości. Możemy hostować tam własną stronę, która będzie naszym frontendem, możemy wykorzystać “cloud functions”, które są praktycznie zasobami node.js, jest to bardzo fajne, bo możemy mieć własny serwer node.js w chmurze. Mając cloud functions i bazę danych, możemy z łatwością podpiąć pod to inne usługi, np. asystenta Google, który pozwoli sterować urządzeniem naturalną mową a nie nagranymi wcześniej próbkami komend. Pod nasz system możemy podpiąć również IFTTT (if this then that) i jeszcze bardziej zautomatyzować obsługę urządzenia. ESP co kilka sekund odczytuje bazę danych z Firebase i sprawdza czy stan jakiegoś elementu uległ zmianie, jeśli tak to znaczy, że zdalnie zmieniliśmy parametry pracy. W drugą stronę, jeśli to sterownik lokalnie zmieni jakąś wartość to od razu aktualizuje ją w Firebase. Asystent Google i komunikaty głosowe Rodzice swoje lata już mają i pamięć nie ta, dlatego dołożyłem system komunikatów głosowych. Pilot, który będzie zawsze pod ręką tuż obok pilota od TV, będzie (czeka na obudowę) jasno opisany i wystarczy nacisnąć jeden przycisk a sterownik powie jaka jest temperatura w mieszkaniu, jaka jest na zewnątrz, czy ogrzewanie aktualnie pracuje albo ile razy dzisiaj było włączane. Pomyślałem, że fajnym dodatkiem będzie wgranie również instrukcji obsługi, gdzie sterownik powie do czego służą poszczególne przyciski. Ze sterownikiem można rozmawiać w sposób naturalny z wykorzystaniem asystenta Google, nie musimy być nawet w pobliżu sterownika, mówimy do telefonu czy komputera znajdując się w dowolnym miejscu na świecie. Sam Google asystent nie steruje bezpośrednio urządzeniem, z wykorzystaniem mechanizmu Dialogflow, który bazuje na machine learning zmienia parametry pracy w Firebase, a urządzenie docelowe pobiera je i wykonuje. Zależności między komponentami pokazałem na poniższej grafice. Moduł radiowy 2,4GHz W sterowniku znajduje się RFM73, jest to niewielki układ radiowy wykorzystany tutaj jako pilot, we wcześniejszej wersji tradycyjny pilot na podczerwień kiepsko się sprawdzał, nie zawsze było się w polu widzenia odbiornika. Dodatkowe czujniki Posiadając na pokładzie układ RFM73 możemy dowolnie rozbudować system o dodatkowe czujniki, np. czujnik zalania w łazience, czujnik oświetlenia czy dodatkowe czujniki temperatury. Dokładanie dodatkowych czujników nie wiąże się z przeprogramowaniem głównego sterownika, ponieważ wszystkie reguły obsługi możemy umieścić w Firebase, a sterownik je pobierze. Poniżej kilka fotek, a jako trzecią rękę polecam taki stojak: Edytowano Styczeń 25, 2019 przez dkradke Poprawiłem formatowanie. 4 Cytuj Link to post Share on other sites
Treker 3 074 Styczeń 24, 2019 Udostępnij Styczeń 24, 2019 @dkradke, właśnie zaakceptowałem opis. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum Cytuj Link to post Share on other sites
lukaszd82 88 Styczeń 24, 2019 Udostępnij Styczeń 24, 2019 (edytowany) Może zamieścisz schematy i program. Twoje rozwiązanie mi się spodobało. Może bym wykorzystał je jako podstawkę do własnych zmian... Muszę doczytać trochę informacji, bo kilku twoich rozwiązań nie znałem. Esp12 to Esp8266-12F? Mogłeś wykorzystać Esp32. Z czego tak fajna obudowa? Sam ją wykonywałeś, czy wykorzystałeś jakiś gotowiec? Ogólnie kawał dobrej roboty. Edytowano Styczeń 24, 2019 przez lukaszd82 1 Cytuj Link to post Share on other sites
dkradke 79 Styczeń 25, 2019 Autor tematu Udostępnij Styczeń 25, 2019 Dodałem schemat, nic tam odkrywczego nie ma, zebrałem do kupy kilka komponentów. Program napisałem w oparciu o Arduino Core w PlatformIO, projekt jest dosyć duży i nie chcę go tutaj zamieszczać, jak masz jakieś konkretne pytania lub problemy z czymś to chętnie pomogę. Część arduinowych bibliotek użyłem (bo po co odkrywać koło na nowo), część napisałem sam, a część przerobiłem tak, żeby pracowały z wykorzystaniem ekspandera. ESP-12 to dokładnie taki jak z linku w temacie, czyli ESP8266. Użyłem tego bo mam ich kilka w szufladzie, a większość testów robię na NodeMCU, a tam właśnie jest ESP-12. Obudowa to rzeźba podstawowymi narzędziami jak brzeszczot i dremel Korpus wycięty ze sklejki, a front to pleksa mocowana na magnesy, aby ukryć mocowanie do ściany, bardzo dobrze sprawdził się ten pomysł. Dwa boczne przyciski to też pleksa, osadziłem na niej diodę led. Całość jest pomalowana czarną farbą podkładową, jest ona trwała, daje fajną fakturę i głęboki mat. Przyciski wcześniej pomalowałem białą farbą, aby lepiej rozchodziło się światło, a ranty zeszlifowałem pilnikiem. 1 Cytuj Link to post Share on other sites
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
lukaszd82 88 Styczeń 25, 2019 Udostępnij Styczeń 25, 2019 Obudowa wyszła naprawdę fajnie, na fotkach wygląda super. 1 Cytuj Link to post Share on other sites
Inari 16 Styczeń 28, 2019 Udostępnij Styczeń 28, 2019 ciekawy i funkcjonalny projekt! Dlaczego 'sterownik domowy' ma inny głos? Jest to funkcjonalność wynikająca z dialogFlow? Nie do końca orientuje się w googlowych usługach Cytuj Link to post Share on other sites
dkradke 79 Styczeń 28, 2019 Autor tematu Udostępnij Styczeń 28, 2019 Aplikacja ma inny głos aby odróżnić go od ogólnego asystenta google, można wtedy łatwo stwierdzić czy rozmawiamy z naszą aplikacją. Mamy do wyboru dwa męskie i dwa żeńskie głosy. 1 Cytuj Link to post Share on other sites
Inari 16 Styczeń 28, 2019 Udostępnij Styczeń 28, 2019 1 minutę temu, dkradke napisał: Aplikacja ma inny głos aby odróżnić go od ogólnego asystenta google, można wtedy łatwo stwierdzić czy rozmawiamy z naszą aplikacją. Mamy do wyboru dwa męskie i dwa żeńskie głosy. Dlaczego po prostu asystenta google nie ustawiłeś by mógł wykonywać te polecenia? Cytuj Link to post Share on other sites
dkradke 79 Styczeń 28, 2019 Autor tematu Udostępnij Styczeń 28, 2019 Jeszcze nie doszedłem do tego jak ustawić, aby domyślnie rozmawiał z moją aplikacją, bez wypowiadania wcześniej "Porozmawiaj z 'nazwa aplikacji'". Dopiero wypowiedzenie tego sprawi, że mogę sterować swoim urządzeniem. 1 Cytuj Link to post Share on other sites
msalamon 45 Styczeń 30, 2019 Udostępnij Styczeń 30, 2019 Fajny panel ja sobie w końcu postawię ekspres do kawy, który będe rano wywoływał jeszcze leżąc w łóżku komendą "kawy k***a" Cytuj Link to post Share on other sites
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!