Witam,
Od kilku lat buduję projekty w oparciu o mikrokontrolery ESP32/8266. Bawiłem się na początku atmegami / Arduino, ale gdy tylko wspomniane moduły wpadły w moje ręce, pozostałem przy nich. Swoje projekty opieram o ksIotFramework - swój własny framework IoT, który bazuje na portach Arduino pod ESP. Napisałem go głównie po to, by nie klonować wzoru firmware'u za każdym razem, tylko wydzielić współdzielone komponenty do osobnej biblioteki.
Bibliotekę napisałem, wzorując się na tym, czego nauczyłem się programując zawodowo gry - architektura oparta o kompozycję, gdzie każda kategoria funkcjonalności osadzona jest w odrębnym komponencie. Przykładami komponentów są np. WiFiConnector, MqttConnector czy Led. Każdy komponent przypomina osobny program Arduino. Wszystkie wykonują się po kolei i zamknięte są w obiekcie Aplikacji.
Wracając jednak do projektu - Zigbee Gateway.
Protokół Zigbee jest rozwiązaniem obecnym w automatyce domowej. Dzięki gotowym modułom, takim jak EBYTE-E180, jego implementacja w urządzeniu jest prosta. Wystarczy uruchomić na nim firmware EZSP, który wystawia cały interfejs za pomocą UART. Co więcej, jest wiele gotowych programów do obsługi tego protokołu, w tym również są wtyczki do Home Assistanta. Okazało się, że nie muszę implementować na ESP całej logiki, a jedynie wystawić UART na socket - czyli de facto zrobić coś w rodzaju mostu Serial To Ethernet. W ten sposób obsłużyłem Zigbee w projekcie.
Chciałem jednak, by bramka Zigbee nie była tylko prostą bramką, bo takie można zakupić w formie USB sticka. Urządzenie miało zostać zamontowane w centralnym pomieszczeniu i służyć również jako elektroniczny asystent powiadomień. Ta funkcjonalność zrealizowana została przy pomocy układu MAX98357A, który jest konwerterem DAC I2S. Można do niego podłączyć praktycznie bezpośrednio głośnik o mocy do 3 W. Dekodowanie strumieni MP3 odbywa się z pomocą biblioteki ESPAudio-I2S. Żądania odtworzenia określonych dźwięków docierają z pomocą MQTT. Alerty sygnalizowane są również za pomocą diody LED.
Co ciekawe, ESP32S3 posiada sprzętowe USB. Daje to możliwość debugowania oraz aktualizacji oprogramowania.
Zarówno obudowa, jak i PCB zaprojektowane zostały w EasyEDA. Produkcję laminatów i obudowy zleciłem zewnętrznej firmie. Lutowanie elementów 0603 nie jest trudne, zrobiłem to za pomocą płyty grzewczej, dobrego topnika i pasty.
Aktualizacje i worklogi znajdziecie również na portalu Hackaday:
https://hackaday.io/project/194721-ks-zigbee-gateway
Od kilku lat buduję projekty w oparciu o mikrokontrolery ESP32/8266. Bawiłem się na początku atmegami / Arduino, ale gdy tylko wspomniane moduły wpadły w moje ręce, pozostałem przy nich. Swoje projekty opieram o ksIotFramework - swój własny framework IoT, który bazuje na portach Arduino pod ESP. Napisałem go głównie po to, by nie klonować wzoru firmware'u za każdym razem, tylko wydzielić współdzielone komponenty do osobnej biblioteki.
Bibliotekę napisałem, wzorując się na tym, czego nauczyłem się programując zawodowo gry - architektura oparta o kompozycję, gdzie każda kategoria funkcjonalności osadzona jest w odrębnym komponencie. Przykładami komponentów są np. WiFiConnector, MqttConnector czy Led. Każdy komponent przypomina osobny program Arduino. Wszystkie wykonują się po kolei i zamknięte są w obiekcie Aplikacji.
Wracając jednak do projektu - Zigbee Gateway.
Protokół Zigbee jest rozwiązaniem obecnym w automatyce domowej. Dzięki gotowym modułom, takim jak EBYTE-E180, jego implementacja w urządzeniu jest prosta. Wystarczy uruchomić na nim firmware EZSP, który wystawia cały interfejs za pomocą UART. Co więcej, jest wiele gotowych programów do obsługi tego protokołu, w tym również są wtyczki do Home Assistanta. Okazało się, że nie muszę implementować na ESP całej logiki, a jedynie wystawić UART na socket - czyli de facto zrobić coś w rodzaju mostu Serial To Ethernet. W ten sposób obsłużyłem Zigbee w projekcie.
Chciałem jednak, by bramka Zigbee nie była tylko prostą bramką, bo takie można zakupić w formie USB sticka. Urządzenie miało zostać zamontowane w centralnym pomieszczeniu i służyć również jako elektroniczny asystent powiadomień. Ta funkcjonalność zrealizowana została przy pomocy układu MAX98357A, który jest konwerterem DAC I2S. Można do niego podłączyć praktycznie bezpośrednio głośnik o mocy do 3 W. Dekodowanie strumieni MP3 odbywa się z pomocą biblioteki ESPAudio-I2S. Żądania odtworzenia określonych dźwięków docierają z pomocą MQTT. Alerty sygnalizowane są również za pomocą diody LED.
Co ciekawe, ESP32S3 posiada sprzętowe USB. Daje to możliwość debugowania oraz aktualizacji oprogramowania.
Zarówno obudowa, jak i PCB zaprojektowane zostały w EasyEDA. Produkcję laminatów i obudowy zleciłem zewnętrznej firmie. Lutowanie elementów 0603 nie jest trudne, zrobiłem to za pomocą płyty grzewczej, dobrego topnika i pasty.
Aktualizacje i worklogi znajdziecie również na portalu Hackaday:
https://hackaday.io/project/194721-ks-zigbee-gateway
Fajne? Ranking DIY