wersja mobilna | kontakt z nami

Programowanie Intel Edison

Numer: Grudzień/2015

Masz już platformę Intel Edison? Zatem do dzieła. 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

Pobierz PDF

Rysunek 1. Konfigurowanie WiFi na Intel Edison

Podczas testów Edisona korzystałem z Windowsa i tego systemu dotyczy dalsza część tekstu. Jednak kolejność postępowania jest dla różnych systemów jest podobna 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.

Ja skorzystałem z programowania Edisona wykorzystując Arduino. Dlaczego?

Arduino samo w sobie jest przyjazd dla użytkownika, 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

Rysunek 2. Połączenie z Edisonem

Po wgraniu paczki programów (do pobrania ze strony Intela - https://goo.gl/k12Y2q) dołą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.

Rysunek 3. Standardowy kod migania diodą

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.

Fotografia 4. Elementy potrzebne w przykładzie

Następnie zaktualizowałem system operacyjny (Yocto Linux). Odbyło się to stosunkowo łatwo. W dużym skrócie: podłączamy układ 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ę: "reboot ota".

Po chwili ukazuje się nowy system. Następnym krokiem była konfiguracja WiFi - wszystko robimy z poziomu konsoli wydając polecenie: "configure_edison -wifi".

Proces konfiguracji WiFi wygląda jak na rysunku 1. Od tej pory możemy połączyć się z platformą przez podany adres IP, co udowadnia zrzut pokazany na rysunku 2.

Fotografia 5. Schemat do pierwszego przykładu z Intel Edison

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", ponieważ nie wgrywamy programów przez port, który używaliśmy wcześniej do komunikacji z Linuksem.

Rysunek 6. Funkcja odczytująca temperaturę rdzenia

Na początek wgrałem standardowy kody migania diodą: Wstyd jednak wykorzystywać tak rozbudowaną platformę do migania 1 diodą (rysunek 3). 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

W związku z powyższym przygotowałem, na płytce stykowej, bardzo prosty obwód (fotografia 4). 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 (fotografia 5).

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 na rysunku 6.

Informacje zebrane. Pora na poznanie chmury Intel IoT Analytics.

Pierwsze starcie z chmurą

Rysunek 7. Urządzenia podłączone do naszego konta

W celu rozpoczęcia przygody z IoT konieczne jest odwiedzenie strony projektu Intel IoT Analytics ( https://dashboard.us.enableiot.com/ui/auth#/login). Na stronie znajdziemy formularz logowania i rejestracji.

Rysunek 8. Katalog

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

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 podążać, dlatego nie będę teraz dokładnie opisywał wszystkich czynności.

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, co pokazano na rysunku 7.

Rejestracja komponentów systemu

Rysunek 9. Szczegóły komponentu w chmurze Intel IoT

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, na przykład tak, jak na rysunku 8.

Widok szczegółowy dostatecznie wyjaśnia, czym są komponenty (rysunek 9). 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: iotkit-admin register tempOut temperaturę.v1.0.

Rysunek 10. Zrzut całego programu

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ę. Po dodaniu komponentów konieczne jest zrestartowanie klienta iotkit-admin! 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 łatwe. Wystarczy wywoływać polecenia zbliżone do poniższego iotkit.send("tempOut", tempOut);. 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.

Nie musimy martwić się żadnym adresem (ID/IP/MAC) Edisona - wszystko zostało już przypisane i zapamiętane na naszym koncie podczas aktywacji z użyciem kodu.

Rysunek 11. Informacja o aktywnych urządzeniach

Cały program wygląda tak, jak pokazano na rysunku 10. 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 liczbie urządzeń podłączonych do naszego konta, które wysyłają dane oraz ilości próbek, które jakie zgromadzono (rysunek 11).

W zakładce chart znajdziemy natomiast, to co najciekawsze, czyli wykresy. Na początku musimy wskazać urządzenie oraz informacje, które nas interesują. Poniżej wyświetla się wykres. Możemy wybrać jak często ma się on odświeżać.

Rysunek 12. Automatyczna aktualizacja wykresu

Dzięki temu możemy uzyskać wykres zmieniający się na żywo (rysunek 12). 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ł.

Podsumowanie przygody z Intel Edison

Mimo braku dużego doświadczenia z IoT muszę przyznać, że wdrożenie się w ten świat było stosunkowo proste. Jak sami widzicie napisanie pierwszego programu korzystającego z GPIO, WiFi oraz chmury nie jest trudne. Zachęcam zatem do podjęcia tego wyzwania.

Damian Szymański

Pozostałe artykuły

Programowanie układów STM32F4 (1)

Numer: Listopad/2016

W tym kursie, bazując na nieskomplikowanych projektach, zaprezentuję w praktyczny sposób programowanie układów z rodziny STM32F4. Jest to pierwszy artykuł z serii. Przedstawione tutaj zostało narzędzie STM32CubeMX oraz środowisko programistyczne System Workbench for STM32. Podczas czytania artykułu oraz wykonywania przykładów utworzymy pierwszy projekt ? mikrokontrolerowe ?Hello World!?. W kolejnych częściach omówione zostaną liczniki, ...

HTS221 mały czujnik o sporych możliwościach

Numer: Listopad/2016

...

Przemysłowy Internet Rzeczy (2). Mikrokontroler CC1310 - instalowanie programów narzędziowych

Numer: Listopad/2016

W artykule zaprezentujemy sposób pobrania oraz zainstalowania pakietu programów narzędziowych niezbędnych do pracy z mikrokontrolerem CC1310. Przydadzą się nam one do licznych zadań, np. do obsługi sieci czujników.

Użytkowanie Odroid-C1+ (1). Środowisko programistyczne, instalowanie systemu Linux

Numer: Listopad/2016

...

Zastosowanie modułu Wi-Fi ESP-12 (3). Bezprzewodowy czujnik stacji pogodowej

Numer: Październik/2016

Telefon komórkowy jest jednym z tych przedmiotów, po które współcześnie ? przynajmniej w naszej części świata ? człowiek sięga najczęściej. A więc gdy użytkownik ma cały czas telefon komórkowy przy sobie, czemu by nie połączyć go z elementami inteligentnego domu, które mogą komunikować się w paśmie 2,4 GHz w standardzie Wi-Fi? W artykule zaprezentowano zastosowanie smartfona jako do prezentacji danych z bezprzewodowego czujnika ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Grudzień 2017

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym