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

Programator/debugger ST-Link. Programowanie pamięci zewnętrznych w systemie z mikrokontrolerem STM32

Numer: Luty/2016

Podczas konstruowania systemów mikroprocesorowych wyposażonych w zewnętrzne układy pamięci często pojawia się potrzeba podglądu i modyfikacji ich zawartości. O ile z dostępem do wewnętrznej pamięci mikrokontrolera najczęściej nie ma problemu - realizuje to programator / debugger, o tyle z dostępem do zewnętrznych pamięci dołączonych do mikrokontrolera nie jest już tak łatwo. Można oczywiście posiłkować się specjalnie tworzonymi ...

Środowisko programistyczne AC6 System Workbench dla mikrokontrolerów STM32, cz.3. Współpraca z ekosystemem narzędzi Open Development Environment

Numer: Luty/2016

Korzystanie z nowego środowiska programistycznego AC6 System Workbench wiąże się z różnymi udogodnieniami dla programistów tworzących systemy oparte na mikrokontrolerach z rodziny STM32. Jednym z nich jest możliwość współpracy z ekosystemem narzędzi STM32 ODE (Open Development Environment). W artykule pokazano krok po kroku jak przy ich wykorzystaniu stworzyć kompletną aplikację.

Oprogramowanie dla STM32. Ultradźwiękowy czujnik odległości HC-SR04

Numer: Luty/2016

Od kilku lat są dostępne w handlu ultradźwiękowe czujniki odległości (sonary) przeznaczone do zastosowań w konstrukcjach amatorskich - robotach i automatyce. Prawdopodobnie najpopularniejszym i najtańszym z nich jest moduł HC-SR04, dostępny w wielu popularnych sklepach internetowych. W artykule przedstawiono moduł czujnika oraz jego współpracę z mikrokontrolerem rodziny STM32.

Wprowadzenie do LVDS. cz. 5

Numer: Grudzień/2015

Wybierając kable i złącza do transmisji szeregowej wysokiej szybkości, bardzo ważne jest uwzględnienie wpływu medium transmisyjnego na zachowanie systemu. Media o kontrolowanej impedancji zazwyczaj dobiera się tak, aby ich impedancja różnicowa wyniosła 100 Ω. Odpowiednie złącze o dopasowanej impedancji także jest konieczne. W tym rozdziale zostanie omówiony wpływ tych wyborów oraz sposoby kompensacji niepożądanych efektów ...

Nowe peryferia Microchipa. Jak ponownie polubić 8-bitowce. cz. 2

Numer: Grudzień/2015

Dominacja mikrokontrolerów 32-bitowych stała się faktem. Umysłami konstruktorów zawładnęły 32-bitowe jednostki centralne, rozbudowane peryferia, olbrzymie (jak na układy embeded) pamięci programu i RAM. A mimo wszystko są firmy, który w tym 32-bitowym świecie proponują inne rozwiązania.

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Luty 2017

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym