- Płytka Intel Galileo.
- 2× silniczki LEGO 8882 Power function XL.
- Płytka DFRduino L298P motor shield.
- Przetwornica obniżająca z układem LM2596.
- Płytka z akcelerometrem i żyroskopem SparkFun IMU Fusion board.
- Akumulator 8,4 V.
- Przewody i wtyczki.
- Klocki Lego Technics oraz śrubki do montażu.
- Opcjonalna karta sieciowa Wi-Fi lub modem Bluetooth na mini PCI Express.
Omawiany projekt został wykorzystany z użyciem komponentów Lego, które ułatwiają montaż elementów. Ustawienie samojezdnego robota monitorowane jest za pomocą żyroskopu i akcelerometru – obu monitorujących ruch w trzech wymiarach. Całość pracuje pod kontrolą systemu operacyjnego Windows.
Komponenty
Sercem urządzenia jest płytka Intel Galileo. Model ten wyposażony jest w procesor Intel Quark X1000, taktowany zegarem 400 MHz i w 256 MB pamięci RAM. Galileo jest podłączone do płytki DFRduino L298P motor shield, będącej elementem napędzającym silniki kół robota. DFRduino jest płytką kompatybilną z Arduino i pozwala dostarczać do 2 A prądu do dwóch silników. Maksymalny pobór mocy płytki to 25 W, a jej wymiary to 55×55 mm. Jako napędy kółek autor zastosował dwa stałoprądowe silniczki LEGO 8882 Power function XL, zasilane napięciem 9 V. Użycie innych silniczków nie powinno stanowić problemu, a modele z LEGO są o tyle wygodne w użyciu, że dobrze pasują do reszty elementów konstrukcyjnych.
Zamiast samodzielnie lutować miniaturowe czujniki, dostępne w obudowach SMD i LGA oraz układy ich zasilania, autor skorzystał z gotowej płytki SparkFun IMU Fusion Board, na której zainstalowane są właśnie 3-osiowy akcelerometr ADXL345 firmy Analog Devices i 3-osiowy żyroskop IMU 3000 firmy Invensense. Sygnały z płytki SparkFun IMU Fusion Board są wyprowadzone na goldpiny, które łatwo podłączyć do innych elementów konstrukcji poprzez interfejs I²C.
Ponieważ robot jest mobilny, konieczne było wyposażenie go w źródło energii. Wybór padł na akumulator 8,4 V, złożony z 6 ogniw, które łącznie mają pojemność 3700 mAh. Źródło to ma na tyle dużą rezystancję wewnętrzną, że jego napięcie wyjściowe istotnie się zmienia, w zależności od poboru prądu. W związku z tym autor użył płytkę z obniżającą przetwornicą napięcia, uzyskując w ten sposób stabilne 5 V do zasilania całego zestawu. Przetwornica bazuje na układzie LM2596 firmy Texas Instruments.
Pozostałe elementy, potrzebne do wykonania projektu to przewody, wtyczki (m.in. do zasilania płytki Galileo) oraz klocki LEGO Technics.
Montaż i połączenia
Realizując projekt, wykonawca staje przed wyborem lokalizacji poszczególnych elementów, z których wszystkie – ze względu na stosowanie modułów – zajmują pewną niemałą przestrzeń i trochę ważą. A ponieważ urządzenie w istotnej mierze opiera się na mechanice, czynniki te mają znaczenie. Najcięższym elementem jest akumulator i mogłoby się wydawać, że by utrzymać jak największą stabilność robota, powinien być on umieszczona jak najniżej – zaraz przy kołach, by obniżyć środek ciężkości. Jednakże w praktyce, jeśli robot z założenia ma być niestabilny i dopiero zastosowanie odpowiednich algorytmów ma powodować utrzymanie pionowej pozycji maszyny, okazuje się, że korzystniej jest umieścić „baterię” wyżej – o ile tylko użyte silniczki będą mieć odpowiednio duży moment obrotowy. Taka konstrukcja sprawia, że układ zachowuje się bardziej tak, jak odwrotne wahadło, które całkiem łatwo można kontrolować algorytmem PID. Wątpliwości może budzić też kwestia lokalizacji sensorów. W wielu projektach tego typu są one montowane na dole robota, blisko kół. Jednakże i w tym przypadku okazuje się, że lepiej jest je umieścić wyżej, gdyż przy niższej pozycji, ruch w poziomie zbytnio zakłóca odczyty, powodując niemożność poprawnego reagowania na przechylenie robota. W praktyce umieszczenie czujników mniej więcej na wysokości 60% konstrukcji od kół, czyli w środku masy urządzenia, dało znacznie lepsze rezultaty.
Płytkę Galileo podłączono do DFRduino L298P Shield z użyciem pinów 4, 5 dla silniczka pierwszego oraz 6 i 7 dla drugiego silniczka. Piny 4 i 7 zostały wykorzystane do przesyłania informacji o kierunku obrotu, a piny 5 i 6 o prędkości (z użyciem sygnału PWM). Płytkę DFRduino podłączono do silniczków za pomocą konektorów śrubowych oraz do dodatkowego zasilania (terminal PWRIN). Płytkę z czujnikami podłączono do wyprowadzeń A4 i A5 Galileo, przez które (interfejsem I²C) przesyłane są odczyty z sensorów (piny SCL i SDA płytki firmy SparkFun). W nowszej wersji oprogramowania Windows, zamiast wyprowadzeń A4 i A5 można użyć pinów SCL i SDA, dostępnych na Galileo, do podłączenia ich do analogicznie oznaczonych wyprowadzeń modułu IMU Fusion Board. Zasilanie modułu z czujnikami zostało pociągnięte bezpośrednio z Galileo.
Wyprowadzenie akumulatora podłączone zostało na wejście płytki stabilizatora, a ustabilizowane napięcie 5 V podłączono do gniazda zasilania Galileo oraz – jak wcześniej wspomniano – do terminalu PWRIN płytki DFRduino.