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

Wyświetlacz firmy Riverdi z modułem rozszerzającym dla Arduino

Numer: Maj/2016

Dołączenie kolorowego wyświetlacza TFT z pojemnościowym panelem dotykowym jako modułu rozszerzającego Arduino, tworzy możliwości budowy urządzeń z interfejsem graficznym o profesjonalnym wyglądzie i sposobie działania. W artykule - oprócz opisu wyświetlacza i modułu - sporo uwagi zostanie poświęcone procedurom programistycznym pozwalającym na uruchomienie potencjału drzemiącego w wyświetlaczu.

Pierwsze kroki z FPGA. Szkoła MAXimatora - pierwszy projekt z edytorem schematów. cz. 2

Numer: Maj/2016

W pierwszej części kursu przedstawiliśmy podstawowe informacje na temat tego skąd i jakie narzędzia programowe będą nam potrzebne do rozpoczęcia przygody z układami FPGA i zestawem MAXimator. W tej części pokażemy jak krok-po-kroku przygotować pierwszy projekt. Ze względu na dostępny w bezpłatnej wersji programu Quartus Prime zestaw bogato wyposażonych bibliotek oraz łatwość przygotowania projektu z wykorzystaniem edytora ...

Renesas Synergy - Internet Rzeczy w zasięgu ręki. cz. 1

Numer: Maj/2016

Ktoś, kiedyś (podobno był to Kevin Ashton) wpadł na pomysł, aby urządzenia powszechnego użytku i układy sterownia na przykład oświetleniem, połączyć za pomocą sieci komputerowej, by mogły pomiędzy sobą wymieniać informacje. Nie wiem dlaczego, ale często jako przykład urządzenia dołączanego do sieci jest podawana lodówka domowa. Może dlatego, że w obecnym stadium rozwoju cywilizacji, lodówka i jej zawartość wymagają ...

STM-owa układanka: generator PWM

Numer: Maj/2016

Tematem artykułu jest odpowiedź na pytanie: jak zmusić kontroler STM32F411 do wygenerowania przebiegu PWM o pożądanych parametrach? Mam zamiar udowodnić, że za pomocą narzędzi wspomagających pisanie oprogramowania dla STM32, rozwiązanie problemu wcale nie musi być trudne.

Podstawy programowania STM32F746G-DISCO. Jak zbudować oscyloskop z FFT z użyciem STM32F746G-DISCO

Numer: Maj/2016

Zaczynając pisać oprogramowanie dla systemu wbudowanego zawsze warto zwrócić uwagę na trzy czynniki mające znaczący wpływ na jakość i czas powstawania projektu. Są to: dostępność sprzętowych zestawów deweloperskich, bibliotek, oraz narzędzi programistycznych. Zestawy deweloperskie zawierające dodatkowe peryferia umożliwiają szybkie tworzenie prototypów bez konieczności projektowania dodatkowego sprzętu. Zwykle dostarczane ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Maj 2017

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym