Intel Edison – wysyłanie danych do chmury dzięki Arduino

Intel Edison – wysyłanie danych do chmury dzięki Arduino

Duże zainteresowanie moim poprzednim tekstem dotyczącym platformy Intel Edison sprawiło, że postanowiłem opublikować drugą część znacznie szybciej. Tym razem opisałem wykorzystywanie modułu od strony programistycznej.

Nasunął mi się również pewien pomysł związany z kursami Forbota - liczę na Waszą opinię!

« Poprzedni artykuł z serii

Programowanie Intel Edison

Gdy platforma stoi na naszym biurku nadchodzi moment, w którym możemy zająć się już pisaniem programu. Nie jest to jednak takie oczywiste, bo do wyboru mamy kilka opcji. Dobra wiadomość dla programistów jest taka, że na stronie Intela znaleźć możemy informacje przygotowane dla użytkowników Windowsa, Mac OS oraz Linuxa.

Podczas testów Edisona korzystałem z Windowsa i tego systemu dotyczy dalsza część tekstu. Jednak kolejność postępowania jest raczej analogiczna i nie powinna sprawiać nikomu większych problemów. Aplikacje możemy tworzyć za pomocą 3 kompilatorów:

  1. Arduino,
  2. Intel® XDK IoT Edition,
  3. Eclipse.

W związku z tym, że ostatnio cały czas poświęcałem na pisanie kursu Arduino, to chyba domyślacie się, z której możliwości programowania Edisona skorzystałem? Oczywiście padło na pierwszy wariant. Dlaczego? Arduino samo w sobie jest bardzo proste, więc podświadomie liczyłem na podobnie łatwy start z Edisonem. Zanim zabrałem się jednak za miganie diodą, musiałem zrobić kilka wstępnych rzeczy.

Aktualizacja systemu, ustawienia

Po wgraniu paczki programów (do pobrania ze strony Intela) podłączyłem płytkę do komputera za pomocą dwóch kabli USB. Zgodnie z informacją na stronie producenta zewnętrzny zasilacz jest wskazany, ale nie jest konieczny. Więc oczywiście go nie podłączyłem, co okazało się błędem.

Płytka bez dodatkowego zasilania nie chciała w pełni wystartować, nie była poprawnie wykrywana. Oczywiście najpierw przeinstalowałem sterowniki, wymieniłem kable na krótsze i przeczytałem trochę materiałów w sieci. Ostatecznie podłączyłem zasilacz i system ruszył w 100%. Komputer pokazał wyczekiwany przeze mnie nowy dysk:

Intel Edison widoczny w systemie.

Intel Edison widoczny w systemie.

Następnie zaktualizowałem system operacyjny (Yocto Linux). Odbyło się to stosunkowo łatwo. W dużym skrócie: podłączamy ukłąd do komputera, usuwamy stary system, ściągamy odpowiednie archiwum ze strony producenta, wgrywamy na powyższy dysk, łączymy się z modułem przez Putty, wydajemy komendę:

Na ekranie dzieje się trochę magii i naszym oczom ukazuje się nowy system. Następnym krokiem była konfiguracja WiFi - wszystko robimy z poziomu konsoli wydając polecenie:

Proces konfiguracji WiFi w wygląda jak poniżej (przy okazji pozdrowienia dla sąsiada Dionizego...):

Konfiguracja WiFi na Intel Edison.

Konfiguracja WiFi na Intel Edison.

Od tej pory możemy połączyć się z platformą przez podany adres IP, co udowadnia poniższy zrzut:

Połączenie z Intel Edison za pomocą WiFi.

Połączenie z Intel Edison za pomocą WiFi.

Na ten moment pozostawiamy konsolę i przechodzimy do Arduino, które zostało wgrane z całą paczką programów od Intela. Jest to wersja kompilatora, która do długiej listy płytek Arduino ma dodane Intel Galileo oraz Intel Edison.

Po wybraniu platformy pozostaje wskazanie portu COM, tutaj wybieramy "ten drugi". Nie wgrywamy bowiem programów przez port, który używaliśmy wcześniej do komunikacji z Linuksem.

Na początek wgrałem standardowy kody migania diodą:

Efekt widoczny jest na poniższej animacji (zielona dioda na prawo od Edisona):

Edison_miganie

Wstyd jednak wykorzystywać tak rozbudowaną platformę do migania 1 diodą. Dlatego zabrałem się za stworzenie kolejnego programu. Miała to być prosta stacja pogodowa, która zbierze następujące informacje z czujników podłączonych do Edisona:

  1. Temperatura otoczenia
  2. Temperatura pierwszego rdzenia Edisona
  3. Natężenie oświetlenia
Elementy potrzebne w przykładzie.

Elementy potrzebne w przykładzie.

W związku z powyższym przygotowałem, na płytce stykowej, bardzo prosty obwód. Zgodnie z poniższym schematem. W roli czujnika oświetlenia wykorzystałem zwyczajny fotorezystor, a rolę termometru powierzyłem czujnikowi analogowemu LM35. Potencjometr widoczny na schemacie służył regulacji rezystancji w dzielniku napięcia utworzonym wraz z fototranzystorem. Dzięki temu mogłem łatwo regulować wskazania tego czujnika.

Schemat do pierwszego przykładu z Intel Edison.

Schemat do pierwszego przykładu z Intel Edison.

Następnie korzystając z przykładów stworzyłem prosty program, który zbierał informacje z tych czujników. Zbierał, to dużo powiedziane - po prostu je odczytywał i nic z nimi nie robił. Całość wyglądała jak poniżej. Funkcja odczytująca temperaturę rdzenia pochodzi z przykładów:

Informacje zebrane, pora na poznanie chmury Intel IoT Analytics.

Pierwsze starcie z chmurą

W celu rozpoczęcia przygody z IoT konieczne jest odwiedzenie strony projektu Intel IoT Analytics. Na stronie znajdziemy formularz logowania i rejestracji.

logowanie do chmury Intela.

logowanie do chmury Intela.

Po zalogowaniu do systemu przechodzimy w ustawienia konta, będziemy musieli pobrać nasz kod aktywacyjny ważny przez najbliższą godzinę:

Kod aktywacyjny.

Kod aktywacyjny.

Teraz wracamy do naszego Edisona i łączymy się z nim za pomocą WiFi (przez Putty). Tak jak wspomniałem na wstępie opis ten ma jedynie przedstawić ścieżkę, którą trzeba iść dlatego nie będę teraz dokładnie opisywał wszystkich czynności (więcej informacji pod koniec tekstu).

Konieczne jest zainstalowanie agenta iotkit-admin, który pozwoli nam na komunikację z chmurą. Następnie wykorzystując podany kod i aktywujemy Edisona.

Po kilku sekundach będzie on widoczny w naszych urządzeniach:

Urządzenia podłączone do naszego konta.

Urządzenia podłączone do naszego konta.

Rejestracja komponentów systemu

Teraz musimy zarejestrować komponenty, które będzie wykorzystywał nasz system. Mówiąc bardziej zrozumiale musimy zadeklarować jakie informacje będziemy wysyłać z Edisona oraz, co ma się z nimi później dziać. W tym celu korzystamy z czujników oraz elementów wykonawczych, które są dostępne w katalogu, np.:

Katalog.

Katalog.

Widok szczegółowy wyjaśnia chyba dostatecznie czym są komponenty:

Szczegóły komponentu w chmurze Intel IoT.

Szczegóły komponentu w chmurze Intel IoT.

Teraz pora na właściwą rejestrację komponentów, którą wykonujemy z konsoli Edisona. Każdy czujnik należy dodać osobno poleceniem zbliżonym do poniższego:

Każdy element musi mieć przypisany swój unikalny alias, w tym wypadku jest to tempOut oraz typ - tutaj było to wskazanie temperatury. Wybranie odpowiedniego typu sprawia, że na wykresie zobaczymy później odpowiednią skalę oraz jednostkę.

Teraz możemy wrócić do Arduino i zacząć wysyłać dane.

Intel Edison - wysyłanie danych do chmury

Teraz pora wzbogacić nasz poprzedni program o funkcje wysyłania informacji do chmury. Jest to bardzo proste. Wystarczy wywoływać polecenia zbliżone do poniższego:

Prawda, że banalne? Komunikacja z chmurą nie jest dużo trudniejsza od obsługi UARTa z Arduino. Wywołanie tego polecenia sprawia, że wartość zmiennej tempOut podanej jako drugi argument zostaje przypisana w chmurze do komponentu zarejestrowanego pod nazwą tempOut. Zbieżność nazw tych dwóch wartości jest oczywiście przypadkowa.

Cały program wygląda tak, jak poniżej:

Po wgraniu programu dane zaczną być regularnie wysyłane do chmury. Będzie to widoczne zaraz po zalogowaniu, na stronie głównej. Znajdziemy tam informacje o ilości urządzeń podłączonych do naszego konta, które wysyłają dane oraz ilości próbek jakie zgromadzono:

Informacja o aktywnych urządzeniach.

Informacja o aktywnych urządzeniach.

W zakładce chart znajdziemy natomiast, to co najciekawsze, czyli wykresy. Na początku musimy wskazać urządzenie oraz informacje, które nas interesują (tutaj widać, że miałem zarejestrowany również drugi termometr, którego nie użyłem):

Wybór odpowiednich parametrów.

Wybór odpowiednich parametrów.

Poniżej wyświetla się wykres. Możemy wybrać jak często ma się on odświeżać. Dzięki temu możemy uzyskać wykres zmieniający się na żywo:

Automatyczna aktualizacja wykresu.

Automatyczna aktualizacja wykresu.

Co ciekawe chmura pozwala również na definiowanie pewnych reguł wyzwalających pewne akcje. Przykładowo możemy otrzymać e-mail, gdy wartość z czujnika spadnie poniżej zadanej wartości. Opcji jest więcej, jednak na ten moment nie będę ich opisywał.

Systemy IoT na Intel Edison - Kurs?

Tak jak wspomniałem we wstępie, nie opisywałem specjalnie szczegółów dotyczących działania na Intel Edison. Nie jest to temat, który można potraktować skrótowo w dwóch artykułach.

Pamiętajcie jednak, że w tym przypadku koszt sprzętu nie będzie niski - jednak jego możliwości znacznie przewyższają inne technologie. Sam moduł będzie również bardzo uniwersalny. Wyraźcie swoją opinię w ankiecie. Liczę również na szersze informacje w komentarzach do wpisu.

Podsumowanie przygody z Intel Edison

Pora na podsumowanie mojej krótkiej przygody z Edisonem. Mimo braku dużego doświadczenia z IoT muszę przyznać, że wdrożenie się w ten świat nie było takie straszne. Jak sami widzicie napisanie pierwszego programu korzystającego z GPIO, WiFi oraz chmury nie jest trudne.

« Poprzedni artykuł z serii

Szkoda, że na ten moment w Polskim Internecie (i nie tylko) znaleźć możemy ograniczoną ilość projektów opartych o Intel Edisona.  Jest to jednak chyba spowodowane brakiem wystarczających materiałów edukacyjnych, a te oficjalne mają niestety pewne braki. Jednak tak jak wspomniałem Forbot może to zmienić - wszystko zależy od wyników powyższej ankiety!

arduino, chmura, Edison, Intel, IoT, przykład

Trwa ładowanie komentarzy...