Intel Galileo by Arduino – czyli edukacja wg Intela (pierwsze wrażenia)

Nowość? Super – lubię nowości! Jak tylko dostałem info od Nettigo, że będą mieć Arduino Galileo w sprzedaży, to od razu stanąłem w kolejce. Zestaw kupiłem, kilka dni poużywałem (dość powierzchowne działania testowe) i jestem mądrzejszy o nową platformę oraz bez 300zł w kieszeni:)

arduino-galileo

Pierwsze wrażenia, czyli ‚unboksing’ Intel Galileo

Wielkość pudełka wskazywała, że będzie to całkiem pokaźny zestaw. Niestety w środku oprócz samej płytki Galileo znajduje się tylko zasilacz z wymiennymi końcówkami – chyba na wszelkie światowe standardy. Zasilacz 2A na 5V – standard. Niestety chyba do mojego zestawu zapomniało się komuś włożyć kabla USB, albo po prostu go nie dają. Przydałoby się też zamiast tych super końcówek do zasilania dać przelotkę z microUSB na gniazdo USB-A – niby na płytce jest host USB, ale właśnie z gniazdem microUSB. Adaptery takie można za 5-10zł kupić w sieci, ale z przesyłką to dodatkowe 15-20zł. Za 300zł oczekiwałem bardziej rozmyślnego podejścia do użytkownika. Zestaw ponoć nazywany jest edukacyjnym.

A co ma w środku?

Dużo. I to dość mocno ratuje ten zestaw. Takie trochę słabsze Raspberry Pi, ale z wieloma gadżetami od Arduino. Pełną specyfikację znajdziecie na stronie Arduino Certified – Intel Galileo. Mnie zainteresowały następujące:
– procek hiper-super-wypas Quark SoC1000 – 32bit, Pentium Class, ~1,2DMIPS, rdzeń taktowany 400MHz,
– pełna kompatybilność wyprowadzeń i napięć z Arduino (oparta o Arduino UNO R3),
– wbudowany RTC (zegar czasu rzeczywistego) z wyprowadzeniem goldpinów na płytce dla baterii,
– złącza RJ45, microSD, dodatkowy port RS232 (w złączu mini-jack), 2 x USB (jeden host, drugi client), 256KB SRAM, 256MB DDRAM, 8MB flash, mini-PCIe.

Najciekawsze złącze Galileo, czyli mini-PCIe

W pierwszym odruchu powiedziałem – po cholerę! Ale chwilę po tym przypomniałem sobie jak tanie są karty sieciowe, modemy 3G czy dyski SSD na to złącze i zapiałem z zachwytu. To jest tak przewaga Galileo względem innych rozwiązań Arduino – nie dość, że prawie wszystko jest pod ręką, to do tego za kilka zł można mieć jeszcze więcej.

Rzeczy dziwne i niezrozumiałe, czyli wady zestawu

Złącze host USB w postaci gniazda mikroUSB oraz brak przelotki do tego. Rozumiem oszczędność miejsca, na płytce, ale zdecydowanie bardziej wolałbym zamiast tysiąca standardów wtyczek zasilania jedną, dodatkową, tanią przejściówkę.

(niepotwierdzone) Programowanie do pamięci SRAM. Programuję – działa, resetuję – nie działa. Po uruchomieniu zestawu z linuksem na karcie SD działa OK. Zdecydowanie muszę to zweryfikować.

Procesor SoC nachodzący na powierzchnię przestrzeni dla shieldów. Niestety w przypadku montowania jakiś dodatkowych płytek nie wchodzi w grę użycie większego radiatora, a ten zdecydowanie jest potrzebny. Procesor w trybie jałowym (uruchomiony linuks Poky z karty SD, bezczynny) nagrzewa się do około 70st.C. Niewiele pomaga założenie malutkiego radiatorka widocznego powyżej. Schłodzenie sprężonym powietrzem na chwilę obniżyło temperaturę o kilkadziesiąt stopni.

galileo-temp

Kolejnym problemem jest dedykowana wersja środowiska programistycznego IDE dla niniejszego zestawu. Obecnie dostępne jest w wersji 1.5.3 i można je pobrać ze strony Intela. Trochę dziwi fakt potrzeby uruchamiania z sudo tego IDE, ale cóż – z zaleceniami producenta się nie dyskutuje:)

Podsumowanie – czy warto kupić Arduino Intel Galileo?

Póki co mam mieszane uczucia. Niby wypas, dużo na pokładzie, ale jakoś tak wszystko niezorganizowane, słabo opisane oraz z wsparciem, ale chyba nie najlepszym na stronie producenta. Trochę żałuję wydanych pieniędzy (tak, dałem się zakupom impulsywnym), aczkolwiek skoro już jest, to w końcu trzeba nauczyć się prostych środowisk embedded linux i zacząć efektywnie używać VI oraz OPKG zamiast NANO i APT-GET:)

Z czasem też pojawi się więcej opracowań na platformę i będzie zdecydowanie łatwiejsze dotarcie do przykładów i rozwiązań. Trzymam kciuki.

Przydatne miejsca / linki

http://arduino.cc/en/ArduinoCertified/IntelGalileo – oficjalna strona projektu w domenie Arduino

http://www.intel.com/content/www/us/en/intelligent-systems/galileo/galileo-overview.html – oficjalna strona projektu w domenie Intel

https://communities.intel.com/community/makers/demosprojects/content?itemView=thumb – galeria projektów opartych na Galileo na stronie Intel

https://communities.intel.com/message/208564#208564 – włączenie telnetu (putty/console) za pomocą prostego programu z poziomu Arduino IDE (bez potrzeby uruchamiania większej wersji linuksa z karty SD)

https://learn.sparkfun.com/tutorials/galileo-getting-started-guide/bigger-linux-image – opis uruchomienia „dużego” linuksa z poziomu karty SD (dodam od siebie, że karta ma być sformatowana na system plików fat32)

https://communities.intel.com/docs/DOC-22272 – przykłady dla „dużego” linuksa

https://communities.intel.com/thread/48009 – tutorial do przykładów dla Arduino IDE

http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#usingpoky – bardzo dużo o „dużej” wersji linuksa na Galileo (Yocto Project – Poky)

http://www.malinov.com/Home/sergey-s-blog/intelgalileo-programminggpiofromlinux – opis jak sterować GPIO z poziomu linuksa

sterowanie GPIO Raspberry Pi z poziomu przeglądarki internetowej (strony www)

Raspberry Pi posiada 8 dowolnie programowalnych linii I/O + UART (port szeregowy) + I2C + SPI (do wykorzystania również jako zwykłe piny IO). Wszystko (wraz z liniami zasilającymi oraz masy) wyprowadzone na złącze P1 (jest jeszcze kilka linii I/O na innych portach, ale o nich kiedy indziej + nie do wszystkich jest łatwy dostęp).

Ponieważ dostęp do w/w linii jest bezpośredni, to można (i jest nawet wskazane) podłączać różne urządzenia do tego portu, zaś sterowanie rozwiązać np.: poprzez stronę internetową.

Oczywiście dla wytrawnych programistów dostępnych jest cała gama języków programowania + biblioteki umożliwiające prosty dostęp do I/O. Zaś dla osób mniej obeznanych (oraz takich jak ja, czyli dopiero wchodzących w świat języków wysokiego poziomu) na początek zaleca się skorzystanie z gotowych lub pół-gotowych rozwiązań.

I tutaj przychodzi na ratunek WEBIOPI, czyli framework oraz aplikacja webowa pozwalająca na kontrolowanie liniami GPIO z poziomu przeglądarki internetowej.

Instalacja jest bardzo prosta. Konfiguracja również. Pozostaje tylko ustawienie własnego portu, na którym można apkę wypuścić na świat + przekierowanie na routerze i można się bawić.

Bardziej rozbudowany opis webiapi można znaleźć na stronie: http://pccode.pl/raspberry-pi-i-zestaw-duzego-masterkowicza/, gdzie jest przy okazji opis jak podłączyć diody LED poprzez układ ULN.

Pełen opis portów oraz przykłady kodów sterujących nimi dostępny jest tutaj: http://elinux.org/Rpi_Low-level_peripherals. Co ciekawe, przykładowe kody rozpisane są na języki (i powłokę) sh, C, Perl, C#, Ruby i Basic.

Kolejnym ciekawym rozwiązaniem jest podłączenie RPi i zarządzanie nim poprzez port szeregowy. Opis można znaleźć tutaj: http://elinux.org/Rpi_Low-level_peripherals. W sumie port RS można wykorzystać również w drugą stronę (i o ile nie mamy innego portu RS w domu), to przy pomocy tego z RPi odratować na przykład router, który po „update” przestał odpowiadać po protokole http.

RPi to nie tylko 3 w/w interfejsy. Wystarczy chwilę pokombinować i już mamy 1Wire, a na nim zegary RTC, pamięci eeprom, czujniki temperatury i inne gadżety od Dallas… tfu… Maxim Integrated. W projekcie: http://techfreak.pl/nettemp/ wykorzystanych zostało kilka czujników DS18B20, które nie wymagają kalibrowania i posiadają względnie dobrą dokładność.

Na koniec jeszcze opis kolegi Spychalskiego: http://www.spychalski.info/2013/01/12/obsluga-magistrali-i2c-raspberry-pi z manualem do obsługi magistrali I2C. Co prawda w projekcie wykorzystany jest jakiś przetwornik A/C, ale nic nie stoi na przeszkodzie, żeby podłączyć kilka PCF8574, który da nam n x 8 (każdy układ to expander i2c na 8bit) portów I/O dodatkowo.