Na blogu DATAwithBERT pojawił się ciekawy projekt obrazujący budowę własnego urządzenia IoT od zera w oparciu o gotowe biblioteki. Tytułowy SplashFlag ma za zadanie powiadamiać sąsiadów o tym, że w przydomowym basenie trwa właśnie kąpiel i można dołączyć do zabawy. SplashFlag został zbudowany w oparciu o moduł ESP32-S3, wyświetlacz LCD 1602 z dodatkowym modułem komunikacji I2C, serwomechanizm unoszący flagę oraz prostą aplikację webową komunikującą się z urządzeniem przez MQTT. Całość zamknięta jest w estetycznej obudowie, którą autor samodzielnie zaprojektował w Fusion360 i wydrukował na drukarce 3D.
Repozytorium projektu SplashFlag dostępne jest na GitHubie. Znajdziemy tam firmware na ESP32, pliki modelu 3D obudowy oraz backendowy kontener docker (strona WWW i MQTT).
Firmware ESP32 został napisany w PlatformIO. Wyświetlacz 2x16 podłączony jest przez expander na I2C i obsługuje go biblioteka marcoschwartz/LiquidCrystal_I2C. Za serwomechanizm odpowiada madhephaestus/ESP32Servo, do MQTT użyto hideakitai/MQTTPubSubClient, a do operacji na danych w formacie JSON klasycznego bblanchon/ArduinoJson. Serwer opiera się na ottowinter/ESPAsyncWebServer-esphome. Zapis danych (tryb AP/STA oraz dane Wi-Fi) odbywa się w pamięci Flash poprzez Preferences.
Ciekawe jest to, że do Captive Portal (strony do konfiguracji w trybie AP) nie użyto gotowej biblioteki, lecz pojawiła się własna implementacja autora. Główna logika projektu znajduje się w SplashFlagController. Interesujący też może być sposób, w jaki zrealizowano aktualizację OTA (przez Wi-Fi) - urządzenie samo odpytuje GitHub i sprawdza, czy pojawił się nowy plik binarny. Wymagane jest do tego HTTPS, ale to nie jest problemem na ESP. Oczywiście sama implementacja OTA pochodzi z gotowych bibliotek.
Po stronie serwerowej mamy nginx (czyli serwer HTTP obsługujący żądania klienta i statyczne pliki SPA) oraz mosquitto (czyli broker MQTT). Witryna jest opracowana w standardzie SPA (Single Page Application) i dostępna jest z zewnątrz dzięki zastosowaniu tunelowania od Cloudflare. Dla bezpieczeństwa autor używa prostej autentyfikacji HTTP. Szczególnie może zainteresować tam obsługa MQTT z poziomu Javascript w oparciu o bibliotekę JavaScript mqtt/4.3.7/mqtt.min.js. Ze względu na ograniczenia przeglądarek, ta komunikacja odbywa się poprzez tzw. Websockety i nie przez czyste TCP.
Galeria zdjęć z prototypowania i budowy:

Projekt 3D obudowy:


Portal konfiguracyjny na ESP oraz strona serwerowa:

Zrzut ekranu ze strony serwera powinien wszystko wyjaśniać - tam wpisuje się komunikat oraz podaje godziny aktywności, a następnie zatwierdza przyciskiem. Komunikat zostaje wysłany do brokera MQTT, który rozsyła go do wszystkich urządzeń SplashFlag a wtedy one podnoszą/chowają flagę i pokazują go na swoim wyświetlaczu.
Mój komentarz: moim zdaniem ten projekt dobrze obrazuje, jak łatwo jest w dzisiejszych czasach zbudować z gotowych komponentów własne urządzenie IoT. Wszystkie potrzebne elementy (w tym moduł Wi-Fi) są tanie i ogólnodostępne. Do ich oprogramowania nie potrzeba większej wiedzy, wystarcza ogólna znajomość technologii, bo dużo można złożyć w oparciu o gotowe biblioteki. Do tego dochodzi jeszcze druk 3D - wszystko coraz bardziej przystępne. Można by nawet pokusić się o stwierdzenie, że mamy dobre czasy dla konstruktorów amatorskich urządzeń. Czy Wy też budowaliście jakieś własne urządzenia oparte o ESP?
Źródła:
https://bertwagner.com/posts/splashflag-build...ot-swimming-notification-device-from-scratch/
https://github.com/bertwagner/splashflag
Repozytorium projektu SplashFlag dostępne jest na GitHubie. Znajdziemy tam firmware na ESP32, pliki modelu 3D obudowy oraz backendowy kontener docker (strona WWW i MQTT).
Firmware ESP32 został napisany w PlatformIO. Wyświetlacz 2x16 podłączony jest przez expander na I2C i obsługuje go biblioteka marcoschwartz/LiquidCrystal_I2C. Za serwomechanizm odpowiada madhephaestus/ESP32Servo, do MQTT użyto hideakitai/MQTTPubSubClient, a do operacji na danych w formacie JSON klasycznego bblanchon/ArduinoJson. Serwer opiera się na ottowinter/ESPAsyncWebServer-esphome. Zapis danych (tryb AP/STA oraz dane Wi-Fi) odbywa się w pamięci Flash poprzez Preferences.
Ciekawe jest to, że do Captive Portal (strony do konfiguracji w trybie AP) nie użyto gotowej biblioteki, lecz pojawiła się własna implementacja autora. Główna logika projektu znajduje się w SplashFlagController. Interesujący też może być sposób, w jaki zrealizowano aktualizację OTA (przez Wi-Fi) - urządzenie samo odpytuje GitHub i sprawdza, czy pojawił się nowy plik binarny. Wymagane jest do tego HTTPS, ale to nie jest problemem na ESP. Oczywiście sama implementacja OTA pochodzi z gotowych bibliotek.
Po stronie serwerowej mamy nginx (czyli serwer HTTP obsługujący żądania klienta i statyczne pliki SPA) oraz mosquitto (czyli broker MQTT). Witryna jest opracowana w standardzie SPA (Single Page Application) i dostępna jest z zewnątrz dzięki zastosowaniu tunelowania od Cloudflare. Dla bezpieczeństwa autor używa prostej autentyfikacji HTTP. Szczególnie może zainteresować tam obsługa MQTT z poziomu Javascript w oparciu o bibliotekę JavaScript mqtt/4.3.7/mqtt.min.js. Ze względu na ograniczenia przeglądarek, ta komunikacja odbywa się poprzez tzw. Websockety i nie przez czyste TCP.
Galeria zdjęć z prototypowania i budowy:
Projekt 3D obudowy:
Portal konfiguracyjny na ESP oraz strona serwerowa:
Zrzut ekranu ze strony serwera powinien wszystko wyjaśniać - tam wpisuje się komunikat oraz podaje godziny aktywności, a następnie zatwierdza przyciskiem. Komunikat zostaje wysłany do brokera MQTT, który rozsyła go do wszystkich urządzeń SplashFlag a wtedy one podnoszą/chowają flagę i pokazują go na swoim wyświetlaczu.
Mój komentarz: moim zdaniem ten projekt dobrze obrazuje, jak łatwo jest w dzisiejszych czasach zbudować z gotowych komponentów własne urządzenie IoT. Wszystkie potrzebne elementy (w tym moduł Wi-Fi) są tanie i ogólnodostępne. Do ich oprogramowania nie potrzeba większej wiedzy, wystarcza ogólna znajomość technologii, bo dużo można złożyć w oparciu o gotowe biblioteki. Do tego dochodzi jeszcze druk 3D - wszystko coraz bardziej przystępne. Można by nawet pokusić się o stwierdzenie, że mamy dobre czasy dla konstruktorów amatorskich urządzeń. Czy Wy też budowaliście jakieś własne urządzenia oparte o ESP?
Źródła:
https://bertwagner.com/posts/splashflag-build...ot-swimming-notification-device-from-scratch/
https://github.com/bertwagner/splashflag
Fajne? Ranking DIY Pomogłem? Kup mi kawę.