Tym razem postaram się opisać jak w łatwy i prosty sposób można stworzyć własny system IoT, który będzie odczytywał i zapisywał dane z Arduino za pośrednictwem serial portu, a następnie prezentował je w aplikacji webowej.
Czym jest 'Arduino Custom Data Station'?
Arduino Custom Data Station jest projektem, który zakłada stworzenie prostego systemu, który pokaże, w jaki sposób można przesyłać własne dane np. wartość temperatury z poziomu Arduino do aplikacji webowej, bezpośrednio przy użyciu serial portu (bez użycia dodatkowych bibliotek). A następnie wyświetlić je w odpowiedniej formie graficznej np. wykresu. Wszystkie zebrane dane będą przechowywane w nierelacyjnej bazie danych czasu rzeczywistego. Na koniec naszą aplikację umieścimy na darmowym hostingu, żeby mieć do niej dostęp z każdego miejsca na świecie za pośrednictwem Internetu.
Nazwa projektu nawiązuje bezpośrednio do popularnych projektów w stylu 'Arduino Weather Station', lecz z tą różnicą, że frazę 'Weather' zamieniłem na 'Data', ponieważ zależy mi, aby ten projekt był traktowany jako pewnego rodzaju generyczne rozwiązanie, a to do czego zostanie użyty, zdecyduje już osoba, która będzie chciała skorzystać z tego projektu :)
Z jakich technologii będę korzystał?
Jeśli chodzi o część sprzętową, to w tym przykładowym projekcie wykorzystam Arduino Nano wraz z czujnikiem wilgotności i temperatury DHT11. Oprogramowanie zostanie napisane w JavaScript z wykorzystaniem Stencil.js oraz Ionic 4, zaś sama komunikacja z aplikacją webową zostanie oparta o Web Serial API. Dodatkowo do komunikacji z bazą danych NoSQL czasu rzeczywistego, wykorzystam Firebase SDK.
Jakie możliwości daje mi ten projekt?
Projekt ten ma na celu przedstawić inne, bardziej customowe podejście, do tworzenia systemów typu IoT (i nie tylko), gdzie będziemy odpowiedzialni za tworzenie poszczególnych warstw aplikacji/systemu. W Internecie większość takich projektów bazuje na gotowych rozwiązania, ja jednak chcę przedstawić trochę inne podejście, które daje nam możliwość pełnej customizacji oraz kontroli nad naszym systemem. Na podstawie tego projektu możemy stworzyć np. prostą stację pogodową, lecz również możemy stworzyć rozbudowany system typu Home Assistant, ponieważ komunikacja w tym projekcie jest dwukierunkowa (możemy zarówno odczytywać dane, jak i również wysyłać z poziomu aplikacji do naszego Arduino), co oznacza, żę możemy stworzyć aplikację, która będzie sterować urządzeniami, które są podłączone bezpośrednio do Arduino/ESP/STM za pośrednictwem sieci Internet.
Czy jest tutaj coś wyjątkowego?
Tak, w tym projekcie wykorzystam Web Serial API, które jest obecnie w fazie testów i nie jest domyślnie włączone w Google Chrome, dlatego będziemy musieli włączyć tę funkcję ręcznie. API to daje nam możliwość komunikacji z Arduino za pośrednictwem portu szeregowego z poziomu aplikacji webowej, bez konieczności instalowania dodatkowych sterowników, czy bibliotek. Odbywa się to na zasadzie Plug & Play. Dodatkowo aplikacja webowa zostanie wgrana na hosting Firebase, co w praktyce oznacza, że każdy, kto wejdzie na naszą stronę z aplikacją i podłączy Arduino do komputera, będzie mógł korzystać z naszej aplikacji.