Przesyłka z Redmond - Intel Galileo
[img=PACZKA]
Na jednej z sesji technicznych odbywających się podczas ostatniej konferencji Microsoftu, Steve Teixeira zaprezentował klasę urządzeń, które już od pewnego czasu znajdują się na rynku, a z którymi Microsoft nie miał jednak zbyt wiele wspólnego. Mowa o systemach wbudowanych, a w szczególności małych płytkach deweloperskich takich jak Rapsberry Pi, jego klony, czy dużo słabsze, jednak bardziej nastawione na elektronikę, Arduino. Raspberry Pi i jego klony działają pod kontrolą Linuksa, Arduino w zasadzie bez systemu - programowanie odbywa się w C++, a nasz kod kompilowany jest do kodu maszynowego procesora. W dziedzinie systemów wbudowanych, jak do tej pory, Microsoft oferował jednie specjalną wersję Windowsa - Windows Embedded, dedykowaną do bankomatów, czy terminali kasowych. Windows Embedded to jednak pełny Windows, o podobnych wymaganiach, w ostatnich wersjach pozbawiony aplikacji interfejsu Modern UI i z nieco zmienionym instalatorem.
Na konferencji zaprezentowano wiele rozwiązań, w tym .NET Micro Framework, czyli specjalną, mocno okrojoną wersję środowiska .NET, którą możemy uruchomić na bardzo słabych urządzeniach (wymagane jest m.in. tylko 64 kB pamięci RAM) oraz to, o czym dzisiaj i w kolejnych wpisach chcę wspomnieć - okrojona wersja Windowsa - Windows for Internet of Things, przeznaczona do urządzeń klasy wspominanego już Raspberry Pi. Jak na razie Windows dla Internetu Rzeczy przystosowany został tylko do pracy na płytce Intel Galileo, a Steve w trakcie konferencji poinformował o planach rozdania specjalnych wersji płytki Galileo beta-testerom systemu. Microsoft w ten miły sposób chce zbudować społeczność.
Tutaj można obejrzeć nagranie całej sesji: http://channel9.msdn.com/Events/Build/2014/2-511
Każdy zgłaszający się na testy użytkownik musiał napisać do czego wykorzystałby płytkę oraz wypełnić krótką ankietę na temat wykorzystania podobnych urządzeń oraz języków programowania i środowisk deweloperskich. Napisałem więc, że mam bloga, opisywałem już inne produkty Micorosftu (wpisy o Windows Server 2012) i chętnie opiszę Galileo z Windowsem oraz że w ramach mojego projektu podłączył bym do Galileo modem GSM i przy pomocy C# wysyłał powiadomienia SMS z mojej wyszukiwarki programów TV i innych projektów.
W piątek, po około dwóch miesiącach od mojego zgłoszenia się do programu, otrzymałem z Redmond maila z informacją o wysyłce i linkiem do śledzenia paczki na stronie FedExu. Paczkę otrzymałem już środę. Mój projekt musi na razie poczekać. Nie mam przelotki MicroUSB -> USB, a modem musiałem oddać. Postaram się jednak opisać Galileo i Windowsa :-) Galileo dość dokładnie opisał już Cyryl, skupię się więc na Windowsie dla IoT.
Co w zestawie?
Przepraszam za jakość zdjęć, mój aparat stwierdził że woli być kamerą i po włączeniu, automatycznie przechodzi w tryb nagrywania.
[list] [item]Intel Galileo, przystosowany przez firmy Microsoft i Intel do uruchomienia Windowsa (znalazłem pliki EFI i przypuszczam, że jest tam też włączony Secure Boot). W zestawie bez pozytywki, pomocnika, ani dystansów. To ostatnie mogło by być jednak przydatne.[/item]
[item]Zasilacz dostarczający prąd o napięciu 5V i maksymalnym natężeniu 3A, przystosowany do napięcia sieciowego 100V-240V[/item]
[item]Karta microSD SanDisk 16GB 10. klasy wraz z adapterem MicroSD -> SD zawierająca pre-instalowanego Windowsa[/item]
[item]Adapter / karta sieciowa FastEthernet na USB firmy TRENDNET[/item]
[item]3-stopowej długości (dziwnie to brzmi :D) patchcord UTP[/item] [item]Karteczka z informacją gdzie mam się zarejestrować. W ten podstępny sposób zmusili mnie do akceptacji umowy EULA. Tym razem przeczytałem :-)[/item]
[item]Zielona dioda do "Hello Blinky"[/item]
[/list]
Co to za płytka?
Intel Galileo to pełnoprawny komputer mieszczący się w całości na płytce o wymiarach nieco tylko większych od karty kredytowej. Komputer bez dodatkowej elektroniki pobiera z sieci max. 4W energii, co czyni go bardzo energooszczędnym. Na płytce znajduje się 32-bitowy procesor x86 kompatybilny z Pentium, taktowany zegarem 400 MHz zintegrowany w układzie Intel Quark SoC X1000. Do dyspozycji mamy 256 MB pamięci RAM oraz 8 MB wbudowanej pamięci ROM, w której oryginalnie mieściła się minimalna dystrybucja Linuksa, a w przerobione przez Microsoft wersji - EFI.
Porty komunikacyjne
Galileo posiada wbudowaną kartę sieciową ze złączem RJ-45 w standardzie Fast Ethernet, dwa porty micro USB - jeden do podłączenia płytki do komputera i programowania przy pomocy Arduino IDE, drugi, będący hostem do podłączania innych urządzeń. Poza tym na płytce znajdują się jeszcze piny interfejsu szeregowego RS232, złącze magistrali PCI-E, gniazdo karty pamięci microSD, współpracujące z kartami do 32 GB, gniazdo zasilania oraz to, do czego właściwie powstała ta płytka, czyli piny GPIO.
Piny GPIO
Galileo jest w pełni kompatybilne z Arduino R3. Posiada identyczne wyprowadzenia GPIO - General Purpose Input/Output, których programowanie, zarówno z poziomu Windowsa, jak i Linuksa, odbywa się w ten sam sposób - z użyciem bibliotek Arduino. Przy pomocy zworki na płytce możliwa jest też zmiana napięcia pracy pinów GPIO - możemy wybrać 3,3V lub 5V.
Do dyspozycji mamy 14 cyfrowych pinów wejścia/wyjścia z których możemy odczytać doprowadzone przez użytkownika napięcie (stan wysoki lub niski), a także ustawić na nich wysokie lub niskie napięcie (5V/3,3V i 0V).
Część pinów cyfrowych obsługuję funkcję PWM - Pulse Width Mouldation - pozwalającą, w dużym uproszczeniu. na ustawienie dowolnego napięcia z zakresu od 0V do 5V/3,3V przy pomocy funkcji analogWrite() i wartości z zakresu od 0 do 255. Tak na prawdę PWM nie umożliwia zmiany napięcia. Ciągle mamy do czynienia z tym wybranym przy pomocy zworki. PWM nadaje bardzo szybko pulsy/przebiegi prostokątne, pozwalające zasymulować inne napięcie. Działa to z diodami, silniczkami i z moim Chińskim multimetrem.
Dwa pierwsze piny cyfrowe pełnią również funkcję interfejsu szeregowego i pozwalają na szybkie nadawanie i odbieranie sygnałów binarnych. Z kolei dwa ostatnie piny znajdujące się w tym samym rzędzie to piny magistrali I2C.
W dolnej części płytki znajduje się również 8 analogowych wejść pozwalających na odczyt napięcia w postaci wartości z zakresu od 0 do 4095 przy pomocy funkcji analogRead().
W kolejnym rzędzie obok pinów analogowych możemy znaleźć piny zasilania - 3,3V, 5V, 2x GND oraz pin resetu i służący do wykrywania napięcia.
Do płytki możliwe jest też podłączenie bateryjki zegara czasu rzeczywistego, jednak nie jest ona wymagana.
Z bardziej specjalistycznych interfejsów możemy znaleźć tutaj port szeregowy UART w postaci gniazda mini jack oraz 2 interfejsy do programowania mikrokontrolerów. tj. ICSP oraz JTAG.
Jak już wspomniałem, w kolejnych wpisach przedstawię nową wersję Windowsa znajdującą się na urządzeniu - Windows dla Internetu Rzeczy.
Ucieszy Was pewnie wiadomość, że rejestracja dla beta testerów jest znowu dostępna! Na stronie https://www.windowsondevices.com/signup.aspx możliwe jest opisanie planów wykorzystania Galileo i wypełnienie ankiety. Zgłaszającym się życzę cierpliwości.
***
Zapraszam do przeczytania drugiej części: http://www.dobreprogramy.pl/okokok/MinWin-Windows-dla-Internetu-Rzeczy...