niedziela, 24 sierpnia 2014

Intel Galileo - konfiguracja, pierwsze testy

Cześć i czołem!

Sprawdzam sobie ostatnio cóż to za prezent Microsoft mi sprawił, możliwości jego są spore,
aczkolwiek nie kosmiczne. Na pierwszy rzut oka widzę większą pamięć, 8MB flash to w porównaniu do 8KB na Atmedze8 to pieruńsko dużo. Połączenie możliwości aplikacji z Windows API z Arduino też brzmi ciekawie.
Prosy narzekają że ta płytka jest do kitu, że powolna, że 1wire nie działa, łee wolę Malinę co za crap mi przysłali i tego typu historie. Co bardziej cwani zawiedzeni jakością płytki powystawiali je na alleDROgo i pochodne, jak to pisali na wykopach "bo mogą". Ja uważam że tak nie wypada, nie po to je rozdawali.

Dwa tryby

Z tego co już rozkminiłem, płytka w wersji "od wujka Gates'a" może śmigać w dwóch trybach: jeden pod kontrolą Windowsa, drugi jako emulowane Arduino, gdzie możemy sobie w czystym Arduino na spokojnie działać. Emulator jak to emulator może niedomagać, ale lepszy rydz niż nic.
Przy pierwszym normalnie odpalamy z kartą pamięci w urządzeniu i podpinamy się przez ethernet RJ-45. Przy drugim kartę wyjmujemy przed uruchomieniem i wpinamy się kablem z wtykiem Micro USB pod złącze USB CLIENT w płytce. Sterowniki pod Galileo Arduinowe można znaleźć tutaj: https://communities.intel.com/docs/DOC-22226
Są one w paczce razem ze przygotowanym środowiskiem Arduino, więc nic tylko pobierać i śmigać.
Ucieszył mnie ten drugi tryb, jako że i tak o Arduino miałem zahaczyć ponieważ uważam, że drzemie w tej platformie spory potencjał. Zamówiłem i czekam sobie z tej intencji na prosty shield ze stykówką, będzie nieco wygodniej.

Korzystając z Windowsa na Intel Galileo, możemy zlecać mu rozkazy za pośrednictwem Telnetu. Można skorzystać z tego wbudowanego w windę co pokazuje oficjalny poradnik, ja jednak wolę uniwersalne PuTTY.
Po skończeniu zabawy zalecane jest wyłączenie płytki przez wpisanie komendy:  
shutdown /s /t 0
Z tym zamykaniem przyszedł mi do głowy pewien pomysł, żeby zrobić program śmigający jako proces w tle i mający przycisk podpięty jako przerwanie, pod którym wysyłana jest komenda do wyłączenia urządzenia. Ot taki wyłącznik ażeby mniej maltretować palce wstukując komendę. Niemniej dodatkowy proces w tle korzystający ze strony sprzętu kompletnie ścina odpalany przez nas program który tworzymy, debugujemy i z niego korzystamy. Być może jest to kwestia napisania programu, nie wiem, może ktoś wie? ;)


Pierwsze programy

Stykówka wraca do łask.

 Pierwsza rzecz, która mi przyszła do głowy to zegar. Poszperałem w sieci jak najprościej odczytać z windowsa godzinę, wyszperałem i taki prosty pierwszy przykład powstał.
http://goo.gl/xtFguA <- Link do pliku main (po wejściu można odczytać zawartość w przeglądarce)
Starczy dorzucić libsy od LCD: http://ms-iot.github.io/content/16x2LCD.htm

Dodatkowo, zaczynają się pojawiać kolejne przykłady na oficjalnej stronie: http://ms-iot.github.io/content/SampleApps.htm

Braki
Nie znalazłem ani słowa w dostarczonym od Microsoftu SDK o przerwaniach, prawdopodobnie jeszcze nie zostało to zaimplementowane do bibliotek. Zamiast tego mamy "przepiękne" delay'e na milisekundy i mikrosekundy.
Na standardowym Arduino przerwania są możliwe pinach 2,3. Być może, czy raczej na pewno dałoby się przeportować do Visuala biblioteki od przerwań z Arduino. Niemniej ja nie mam ochoty spędzać kolejne parę wieczorów nad czymś, czego nie jestem pewien że zrobię. Już wolę pobawić się na sprawnym sofcie w czystym Arduino.
Brak możliwości użycia 1wire trochę boli, niemniej jak internety mówią, jest to problem hardware'u a nie softu. Po prostu nie ogarnia tego.

A może jednak Linux?
Działczy
Jest dość szeroki poradnik na temat bawienia się w Galileo na Linuxie. Porzucając memorkę z Windowsem poza tym że ładowany jest emulator Arduino, rusza także zalążek Linuxa wbudowany w płytkę. Domyślnie nie ma z nim kontaktu ani przez ethernet, ani przez USB. Najprostszą drogą do połączenia się z Linuxem jest odpalenie telnetu komendami terminalowymi. Działa, można pokombinować też z Linuxem. Wszystko ładnie zostało opisane tutaj:
https://communities.intel.com/message/208564#208564 
Pobierając obraz linuxa ze tej strony (SD-Card Linux Image) i wrzucając go na kartę można poszerzyć linuxa o te parę dodatkowych komend, szmerów bajerów. Na tej stronie wspominają o możliwości wgrania debiana na Galileo, trzeba wykonać parę gwizdów, ale chyba w tym kierunku będę działał.

Peace

czwartek, 14 sierpnia 2014

Intel Galileo w ramach programu Internet of Things


Cześć i czołem!

Jakiś miesiąc temu z hakiem znajomy (dzięki Nit!) podesłał mi informację że Microsoft zbiera chętnych do stworzenia społeczności programistów-konstruktorów tworzących różne urządzenia na platformie Intel Galileo. Czy to express do kawy sterowany przez internet czy to jakiś system do domu inteligentnego, tyle pomysłów ile głów. Dla tych, którzy zostali uznani za wiarygodne osoby przesłali za darmo płytkę Intel Galileo. Miesiąc temu kiedy zbierali chętnych na te płytki, zapisałem się także i ja, a co tam myślę sobie, fajny sprzęt a ja i tak chciałem kupić podobny, konkurenta Raspberry Pi. Tydzień temu dostałem maila że gratulację, wysyłamy do Ciebie Galileo, a wczoraj zawitał do mnie kurier z paczką. Trochę się zdziwiłem że dali dla takiego świeżaka jak ja i nie odrzucili mojego zgłoszenia, jako że było ich mnóstwo, zwłaszcza z naszego kraju, gdzie wszystko co darmowe jest mocno pożądane. Studia na kierunku elektronika i telekomunikacja za pasem, a na mojej uczelni właśnie nie ma Galileo, więc jak najbardziej się przyda.

W formularzu był jeden podpunkt w którym trzeba było pokrótce opisać przykładowy projekt, jaki byśmy stworzyli na tej płytce. Zaproponowałem dom inteligentny, sterowanie wentylacją, podgląd temperatur przez internet, takie szmery bajery, kto wie, może kiedyś wykonam coś w tym guście, jak tylko ogarnę nieco bardziej te Galileo.

Per aspera ad astra

Tak wygląda zestaw z programu IoT
Jak to w Microsofcie bywa, błędy się pojawiają. Nie powinienem się dziwić - soft koniec końców jeszcze nie wydany, ale trochę podirytowała mnie ilość przeszkód na początku. Na wstępie pojawiły się problemy z SDK, Visual Studio Express 2013. Stworzyłem pierwszy przykładowy projekt "Hello world", kompilator swoje tłumaczył, przesyłał program na płytkę i zaszła pora na debugowanie. Po prostu nie działało, poświęciłem ze 3 wieczory na konfigurację remote debuggera, nie pomogło. No to wybrałem się po support do źródła.
Oficjalna strona projektu zaprowadziła mnie do 3 opcji pomocy łotutaj. IRC na którym nikt się słowem nie odzywa, Stack Overflow w którym na zapytania pod tagiem WindowsOnDevices niby się community ma pomagać, jednak po moim wołaniu o pomoc był jedynie czeski film - nikt nic nie wiedział. Trzecia opcja to raportowanie bugów na Microsoft Connect, tam także się udałem, konto założyłem do programu dołączyłem. Strona do zgłaszania bugów, z nieznanych przyczyn nazywa się Centrem Opinii, whatever, zwał jak zwał. Gdzie zaraportować? Klikając w opinie w tym "Centrum opinii" przesyła nas do nie działającej strony: 
https://connect.microsoft.com/windowsembeddedIoT/Feedback
Co do licha?
Ktoś z forum MSDN oświecił mnie że i tutaj siedzi bug bo link do listy bugów jest zbugowany i wygląda właściwie tak:
https://connect.microsoft.com/windowsembeddedIoT/feedbackdetail
Strona z formularzem do przesyłania bugów jest TUTAJ
Okej zgłosiłem, czekam na odpowiedź, cierpliwość mi się kończy, a Linux kusi żeby pogonić z mojego Galileo Windowsa i wprowadzić pingwina.

Niemniej poczekam, dam szansę, jak to przy wersjach testowych nie wszystko musi działać. Jak mówi obecna licencja SDK od Microsoftu, pre-release jest do końca września tego roku, obecnie widzę że coś na oficjalnej stronie majstrują. Jeśli nastaną jakieś postępy, dam znać. Posta
 
Update - nowa nadzieja

Postanowiłem wykonać krok ostateczny, wgrałem nową instalację Windy i IDE zaczęło chodzić tak jak powinno. Mogę już normalnie debugować, testować bajerować. Szkoda że po 5 wieczorach rozkminiania problemu, który koniec końców nie został rozwiązany. Niemniej działa i następny artykuł będzie o podstawach obsługi, jakimś początkowym kodzeniu dla tych, co także otrzymali Galileo od Microsoftu w ramach programu Internet of Things.

Lista linków na koniec:
http://dev.windows.com/en-us/featured/Windows-Developer-Program-for-IoT <- oficjalna strona programu Internet of Things
https://www.facebook.com/avr4fun <- fanpage mojego bloga na Facebooku. Zachęcam do lajkowania, często wrzucam na niego różne zajawki, tego co się w moim warsztaciku dzieje :)