- Published on
Arduino / ESP32 i AWS IoT Core + Przykład wykorzystania
- Authors

- Name
- Piotr Kołodziejczyk

Wszyscy dziś mówią o AI, dlatego tym razem chciałem napisać o czymś trochę innym - o połączeniu mojego pobocznego hobby (Arduino / IoT) z AWS IoT Core. Być może ktoś, kto to przeczyta, wpadnie na nowe pomysły na automatyzacje albo na ciekawe połączenie AI z IoT w praktyce.
W wolnym czasie buduję proste - a czasem trochę bardziej zaawansowane - projekty z użyciem ESP32. To mikrokontroler bardzo podobny do Arduino (wspominam o Arduino, bo jest bardziej rozpoznawalne). Praca z elektroniką jest zupełnie inna niż typowe projekty software’owe czy AI. Czujniki ruchu, czujniki odległości, buzzery, wyświetlacze i komunikacja Wi‑Fi (ESP32 ma ją wbudowaną) dają dużo frajdy i satysfakcji.
W pewnym momencie chciałem, aby ESP32 komunikowało się bezpośrednio z moją aplikacją webową. W tym celu idealnie sprawdziło się AWS IoT Core - usługa, która pozwala bezpiecznie łączyć wiele urządzeń („things”) z chmurą. Dzięki SDK możemy łatwo odbierać dane wysyłane przez urządzenia i wykorzystywać je w aplikacjach lub przetwarzać dalej przy użyciu innych usług AWS.
MQTT i model publish / subscribe
AWS IoT Core opiera się na protokole MQTT, który działa w modelu publish / subscribe. W praktyce oznacza to, że:
- urządzenia mogą publikować wiadomości do określonych tematów (topics),
- inne urządzenia lub aplikacje mogą subskrybować te tematy i reagować na zdarzenia.
Jest to lekkie i wydajne rozwiązanie, idealne dla świata IoT, gdzie klasyczne zapytania HTTP nie zawsze są najlepszym wyborem.
AWS udostępnia również SDK do ogarnięcia AWS Iot np. za pomocą NodeJS'a.
Przykład: inteligentny system Pomodoro
Jako praktyczny przykład zbudowałem inteligentny system Pomodoro, wykorzystując:
- AWS IoT Core
- DynamoDB
- AWS Lambda
- ESP32 (jako „thing”)
- czujnik odległości
- wyświetlacz cyfrowy
Mógłbym oczywiście użyć zwykłej aplikacji Pomodoro, ale zależało mi na rozwiązaniu dopasowanym do mojego stylu pracy.
System sprawdza, czy siedzę przy biurku, używając czujnika odległości. Gdy jestem wykryty przy biurku, ESP32 publikuje wiadomość do AWS IoT Core informującą o rozpoczęciu sesji skupienia. To zdarzenie jest zapisywane w DynamoDB.
Dzięki temu mogę zostawić telefon w innym pokoju, usiąść przy biurku z laptopem i po prostu zacząć pracę - dane o sesji zapisują się automatycznie. Wyświetlacz pokazuje czas trwania sesji, a buzzer sygnalizuje jej zakończenie lub moment, w którym odejdę od biurka.
Dlaczego AWS IoT Core zamiast klasycznego API HTTP?
Ktoś mógłby zapytać: „Czy nie dałoby się tego zrobić przez zwykłe endpointy HTTP, np. z użyciem AWS API Gateway?”
Dałoby się - jednak AWS IoT Core oferuje komunikację dwukierunkową. W przyszłości mogę w prosty sposób wysyłać komunikaty z chmury bezpośrednio do urządzenia, np. zmienić konfigurację, tryb pracy lub zareagować na zdarzenia w czasie rzeczywistym. To trochę przypomina WebSockety, ale jest rozwiązaniem zaprojektowanym specjalnie pod IoT.
