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ę!
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:
Arduino,
Intel® XDK IoT Edition,
Eclipse.
Artykuł ten omawia jedynie kolejne etapy pracy z Intel Edison bez szczegółowego opisu! Jeśli temat będzie ciekawy dla szerszego grona czytelników, to pojawią się dokładne poradniki na temat tej platformy.
Więcej szczegółów w podsumowaniu artykułu!
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.
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ę:
Shell
1
reboot ota
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:
Shell
1
configure_edison--wifi
Proces konfiguracji WiFi w wygląda jak poniżej (przy okazji pozdrowienia dla sąsiada Dionizego...):
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.
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ą:
Arduino
1
2
3
4
5
6
7
8
9
10
11
12
voidsetup(){
// initialize digital pin 13 as an output.
pinMode(13,OUTPUT);
}
// the loop function runs over and over again forever
voidloop(){
digitalWrite(13,HIGH);// turn the LED on (HIGH is the voltage level)
delay(1000);// wait for a second
digitalWrite(13,LOW);// turn the LED off by making the voltage LOW
delay(1000);// wait for a second
}
Efekt widoczny jest na poniższej animacji (zielona dioda na prawo od Edisona):
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:
Temperatura otoczenia
Temperatura pierwszego rdzenia Edisona
Natężenie oświetlenia
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.
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:
Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <IoTkit.h> // include IoTkit.h to use the Intel IoT Kit
#include <Ethernet.h> // must be included to use IoTkit
Serial.println("Try another sensors readings in this directory");
successful=false;
}
if(successful){
socTemp=atoi(rawTemp)/1000;
returnsocTemp;
}
return0;
}
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.
Po zalogowaniu do systemu przechodzimy w ustawienia konta, będziemy musieli pobrać nasz kod aktywacyjny ważny przez najbliższą godzinę:
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.
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.
Widok szczegółowy wyjaśnia chyba dostatecznie czym są komponenty:
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:
Shell
1
iotkit-admin register tempOut temperature.v1.0
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 proste. Wystarczy wywoływać polecenia zbliżone do poniższego:
Arduino
1
iotkit.send("tempOut",tempOut);
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.
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.
Cały program wygląda tak, jak poniżej:
Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <IoTkit.h> // include IoTkit.h to use the Intel IoT Kit
#include <Ethernet.h> // must be included to use IoTkit
Serial.println("Try another sensors readings in this directory");
successful=false;
}
if(successful){
socTemp=atoi(rawTemp)/1000;
returnsocTemp;
}
return0;
}
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.
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.
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.
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.
Widząc Wasze zainteresowanie pomyślałem o kursie. Takim jak kurs Arduino, czy STM32. Czyli od zera do swobodnego posługiwania się daną platformą.
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.
Czas na oddanie głosu w ankiecie już minął!
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.
W chwili obecnej moduły są dostępne m.in. w Botlandzie, a już niedługo pojawią się również w TME. Więcej informacji znaleźć można na blogu Intel iQ.
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!
Dołącz do 20 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY na bazie Arduino i Raspberry Pi.
To nie koniec, sprawdź również
Przeczytaj powiązane artykuły oraz aktualnie popularne wpisy lub losuj inny artykuł »
Dołącz do 20 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY z Arduino i RPi.
Trwa ładowanie komentarzy...