logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

SplashFlag - własne urządzenie IoT z obudową i stroną - DIY autorstwa Bert Wagner

p.kaczmarek2 20 Paź 2025 09:38 1785 1

TL;DR

  • SplashFlag to własne urządzenie IoT do informowania sąsiadów o kąpieli w przydomowym basenie — podnosi flagę i pokazuje komunikat na wyświetlaczu.
  • Projekt działa na ESP32-S3 z LCD 1602 po I2C, serwomechanizmem i MQTT, a całą logikę skupia w SplashFlagController.
  • Firmware napisano w PlatformIO z bibliotekami LiquidCrystal_I2C, ESP32Servo, MQTTPubSubClient, ArduinoJson i ESPAsyncWebServer-esphome, a ustawienia zapisuje Preferences.
  • Backend opiera się na nginx i mosquitto; strona SPA działa przez tunel Cloudflare, korzysta z mqtt/4.3.7/mqtt.min.js i łączy się przez WebSockety.
  • OTA realizuje samo urządzenie: odpytuje GitHub po HTTPS i sprawdza, czy pojawił się nowy plik binarny.
REKLAMA
📢 Słuchaj (AI):
  • Niebieskie urządzenie SplashFlag z wyświetlaczem LCD ustawione przy basenie
    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:
    Prototyp urządzenia SplashFlag z wyświetlaczem LCD i płytką ESP32-S3Tył niebieskiej obudowy SplashFlag z serwomechanizmem i przewodem zasilającym
    Projekt 3D obudowy:
    Niebieska, prostokątna obudowa z napisem SplashFlag i prostokątnym otworemNiebieska plastikowa obudowa z prostokątnym otworem i sześcioma miejscami montażowymiRender 3D niebieskiej tylnej płyty obudowy projektu SplashFlag z otworami montażowymi
    Portal konfiguracyjny na ESP oraz strona serwerowa:
    Ekran konfiguracji Wi-Fi urządzenia SplashFlag z polami SSID i hasłaPanel webowy SplashFlag z datą, godziną i wiadomością o kąpieli w basenie
    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ę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    Inżynier programista z wieloletnim doświadczeniem embedded i full stack developer.
    Specjalizuje się w: embedded, Full-Stack Developer
    p.kaczmarek2 napisał 14649 postów o ocenie 12661, pomógł 655 razy. Jest z nami od 2014 roku.
  • REKLAMA
  • #2 21728192
    bsw
    Poziom 22  
    Posty: 697
    Pomógł: 5
    Ocena: 730
    p.kaczmarek2 napisał:
    Czy Wy też budowaliście jakieś własne urządzenia oparte o ESP?

    Chodzi o ESP32? Właśnie jedno kończę budować - niebawem zaprezentuję.

    Ten ESP32 S3 z wbudowanym USB OTG jest strasznie upierdliwy w programowaniu - średnio co 5 upload się wywala - (Panic Error albo inny).
    Wybrałem go bo ma BLE - niezbędny w moim projekcie.
    BTW: miałem problem z biblioteką - LiquidCrystal_I2C - nie mogłem skonfigurować jej do działania z i2c na moich pinach (ESP32 pozostawia w tym dowolność).
    Pomogłem? Kup mi kawę.
📢 Słuchaj (AI):
REKLAMA