Kurs Intel Edison – #9 – Własny czujnik w chmurze

Kurs Intel Edison – #9 – Własny czujnik w chmurze

Mamy już moduł skonfigurowany do pracy z Cloud Analytics. Możemy więc przystąpić do podłączenia czujników, które będą przesyłać dane do analizy w chmurze.

Dzięki temu będziemy mogli sprawdzić odczyty w dowolnym miejscu na Ziemi - wystarczy dostępna łączność z Internetem.

IoT Kit - łączenie chmury Intela z Arduino IDE

Ponieważ programujemy wykorzystując środowisko Ardiono IDE, musimy najpierw pobrać i zainstalować bibliotekę do obsługi IoT Kit. Będziemy potrzebowali pliku IoTkit.zip, który można pobrać z repozytorium znajdującego się na githubie.

Po pobraniu niezbędnego pliku uruchamiamy Arduino IDE, wybieramy opcję menu: Szkic > Include Library > Add .ZIP Library i dodajemy bibliotekę z pliku IoTkit.zip.

Jako pierwszy przykład wykorzystamy czujnik HDC1008, który poznaliśmy wcześniej. Jak pamiętamy, pozwala on na pomiar temperatury oraz wilgotności powietrza. Podłączamy czujnik do płytki podobnie jak wcześniej:

part4 - hdc_bb

Schemat podłączenia czujnika do HDC1008 do Intel Edisona.

Teraz możemy napisać program, który będzie wykonywał pomiary i wysyłał rezultaty do chmury. Najpierw musimy na początku dołączyć pliki nagłówkowe biblioteki:

Biblioteka Ethernet jest niezbędna dla działania IoTkit, ale pamiętajmy, że program wykorzystuje sieć WiFi. Deklarujemy globalny obiekt reprezentujący nasze połączenie z Cloud Analytics:

W funkcji setup() musimy, podobnie jak dla innych modułów wywołać metodę begin() obiektu iotkit:

Teraz już możemy komunikować się z chmurą. Do wysyłania danych służy metoda send(). Przyjmuje ona dwa parametry:

  • pierwszy to nazwa czujnika,
  • drugi to zmierzona wartość.

Przykładowo:

Oczywiście zamiast stałej wartości, lepiej byłoby wykorzystać prawdziwy wynik pomiaru. Ponieważ znamy już czujnik HDC1008, możemy napisać pierwszy program:

Odwołujemy się do dwóch czujników: temp oraz humidity. Nie utworzyliśmy ich jeszcze, więc poczekajmy chwilę z uruchamianiem programu, najpierw musimy zarejestrować odpowiednie czujniki. Wiemy jak taki proces wygląda, łączymy się więc z modułem Edison za pomocą portu szeregowego lub ssh i wydajemy polecenie: iotkit-admin catalog

Wyświetli ono listę dostępnych typów komponentów. Nas zainteresują dwa: temperature.v1.0 oraz humidity.v1.0. Idealnie pasują do naszego czujnika. Wystarczy więc zarejestrować dwa czujniki: temp do pomiaru temperatury i humidity dla wilgotności:

Po rejestracji nowych czujników trzeba zrestartować usługę iotkit-agent. Czasem nie aktualizuje ona wpisów i można stracić sporo czasu szukając przyczyny błędu:

iot_23

Zrestartowanie usługi iotkit-agent.

Teraz możemy uruchomić nasz program w Arduino IDE. Aby zobaczyć rezultaty działania, musimy zalogować się do Cloud Analytics. Następnie wybieramy z menu opcję Charts oraz parametry urządzenia i wykresu (na wykresie umieszczamy zarówno temperaturę, jak i wilgotność).

iot_24

Wykres danych czujników w chmurze IoT.

Jak widzimy, raptem kilka linijek kodu wystarczyło do obsługi dwóch czujników. Chyba każdy się zgodzi, że to znacznie łatwiejsze rozwiązanie, niż pisanie własnego serwera od podstaw, które uskutecznialiśmy w poprzedniej części kursu. Dodatkowo system sam zajmuje się zbieraniem i przechowywaniem danych.

Tworzenie własnego komponentu

Dotychczas wykorzystaliśmy czujniki oparte na dostarczonych komponentach. Teraz zobaczymy jak łatwo opracować własny. Do układu podłączymy dwa fotorezystory, zgodnie ze rysunkiem:

part5 - weather_bb

Schemat połączenia dodatkowych fotorezystorów do Intel Edisona.

Następnie przechodzimy do Analytics Cloud i wybieramy opcję Account oraz zakładkę Catalog (jak pamiętamy są tam dostępne typy komponentów). Na dole zobaczymy duży przycisk Add a New Catalog Item. Przyciskamy go i definiujemy nowy komponent:

iot_25

Tworzenie nowego komponentu w chmurze Analytics Cloud.

Warto w tym miejscu poświęcić chwilę na poznanie dostępnych opcji. W polu Type mamy do wyboru dwie wartości:

  • Sensor - czyli czujnik,
  • Actuator - element wykonawczy (omówimy w kolejnej części).

Dale mamy typ danych (Data type):

  • Number - liczba,
  • String - napis,
  • Boolean - wartość logiczna,
  • Byte array - tablica bajtów.

W zależności od wybranego typu danych, będziemy mogli wybrać odpowiedni dla danego typu format. Przykładowo dla typu Number mamy do wyboru:

  • Float - czyli liczby zmiennopozycyjne,
  • Integer - liczby całkowite,
  • Percentage - procenty.

Musimy podać jednostkę, w której wykonujemy pomiary (Unit of measure). W zależności od wybranego typu można jeszcze wybrać sposób wyświetlania danych oraz zakres.

Po kliknięciu przycisku Save zostanie utworzony nowy komponent. Ponieważ jest to pierwsza wersja (1.0), jego nazwa zostanie zmieniona z Light na light.v1.0. Teraz możemy przejść do konsoli pracującej z Edisonem i upewnić się za pomocą polecenia iotkit-admin catalog, że nowy komponent został poprawnie dodany.


Czas dodać odpowiedni czujnik. Jak pamiętamy służy do tego opcja register. Zarejestrujemy dwa czujniki, ponieważ mamy dwa fotorezystory:

Podgląd rejestracji w konsoli:

iot_26

Rejestracja nowych komponentów z poziomu konsoli.

Możemy również sprawdzić zarejestrowane czujniki w chmurze, powinny wyglądać tak:

iot_27

Widok nowych komponentów w chmurze.

Czas napisać program. Od poprzedniego będzie się on różnił o raptem dwiema linijkami:

Na wszelki wypadek podamy jednak pełny kod programu:

Rezultat działania jest widoczny w zakładce z wykresami (Charts):

iot_28

Działanie systemu w praktyce - pomiar światła.

Dodajemy do Edisona więcej czujników

Wiemy już jak podłączać czujniki, dlaczego nie podłączyć ich więcej? W zestawie znajdziemy kilka kolejnych, które pozwolą na rozszerzenie możliwości naszej stacji pogodowej i zmienią ją w system monitorowania mieszkania.

Podłączmy 2 kolejne czujniki - czujnik zamknięcia drzwi oraz ruchu (PIR). Schemat podłączenia:

part7 - sensors_bb

Schemat montażowy kolejnych czujników naszego systemu.

Są to czujniki cyfrowe, więc mają tylko 2 stany włączone/wyłączone. Możemy więc dodać komponenty, które będą wykorzystywały zmienne logiczne, jednak wtedy nie będziemy mieli możliwości umieszczenia danych na wykresie (ale np. alarmy o otwarciu drzwi nadal będą mogły być zgłaszane). Zostaniemy więc przy definiowaniu wartości jako liczb całkowitych:

Następnie rejestrujemy odpowiednie czujniki:

Teraz modyfikujemy program:

Efekt działania programu w praktyce naszego systemu monitorowania mieszkania:

iot_31

Monitorowanie mieszkania przez chmurę w praktyce.

Oczywiście nasz program jest bardzo uproszczony, więc jeśli ktoś szybko otworzy drzwi, nawet tego nie zauważymy. Podobnie jest z wykrywaniem ruchu - powinniśmy takie zdarzenia zgłaszać natychmiast.

Zadanie 9.1

Zmodyfikuj program, tak aby zdarzenia otwarcia drzwi oraz wykrycia ruchu były zgłaszane natychmiast.

Zadanie 9.2

Dodaj powiadamianie o otwarciu drzwi, np. poprzez wysłanie maila.

Podsumowanie

W tej części zbudowaliśmy całkiem rozbudowany system wyposażony w wiele czujników oraz możliwość zdalnego monitorowania pracy. Zobaczyliśmy, że Cloud Analytics pozwala łatwo obsłużyć całkiem rozbudowany system.

Nawigacja kursu

W kolejnej części poznamy jak można zdalnie sterować naszym systemem. Dzięki temu możliwa będzie budowa kompletnego systemu zdolnego do opieki nad naszym mieszkaniem. Nie chcesz przeoczyć kolejnych części kursu? Skorzystaj z poniższego formularza i zapisz się na powiadomienia o nowych artykułach!

Autor kursu: Piotr (Elvis) Bugalski
Redakcja: Damian (Treker) Szymański

arduino, chmura, czujnik, Edison, Intel, IoT, komunikacja, kursEdison

Trwa ładowanie komentarzy...