Sprawdź jak (tanio) zbudować robota z systemem Linux!

Sprawdź jak (tanio) zbudować robota z systemem Linux!

Od jakiegoś czasu na forum pojawiają się artykuły omawiające praktyczne wykorzystanie większych mikrokontrolerów w robotyce.

Przez większe, rozumiem procesory Cortex-Ax, ARM9 lub ARM11. Niewątpliwą zaletą takich układów jest możliwość wykorzystania systemu operacyjnego z komputerów PC (np.: Linuxa).

Następny artykuł z serii »

Większość osób mówiąc Linux myśli od razu o projekcie RasperryPi. Nie ukrywam, że próbowałem polubić te komputery jednopłytkowe, ale jakoś nie bardzo mi to wyszło. Raspberry Pi ma dwie duże zalety: cenę oraz dokumentację.

Cena wydaje się nie do pobicia, na obecną chwilę, płytka kosztuje poniżej 200zł. Dostępność dokumentacji oraz gotowych kodów jest nie do przecenienia. Można kupić płytkę, podłączyć i natychmiast zacząć zabawę z Linuxem.

RaspberryPi

RaspberryPi

Muszę jednak przyznać, że dość szybko rozczarowałem się RPI modelem B. Zastosowany procesor jest dość powolny. To leciwy układ ARM11 pracujący z częstotliwością 700MHz. Po uruchomieniu X serwera płytka “ledwo zipie”. Kolejną rzeczą, za która nie przepadam, jest dość nietypowy bootstrap oraz brak dostępności dokumentacji procesora.

Kolejne rozczarowanie, to peryferia. Płytka udostępnia tylko garstkę pinów, a na niej znajdziemy raptem kilka układów. Można podłączyć zewnętrzny monitor, klawiaturę i myszkę po USB, ale dostaniemy wtedy coś co przypomina bardziej mini-PC, niż komputer wbudowany.

Do RPI można dokupić różne, nawet ciekawe dodatki – wyświetlacz, kamera itd. Ale ceny tych rozszerzeń, są delikatnie mówiąc absurdalne. Jeszcze niedawno do płytki za 159zł, wyświetlacz kosztował 190 zł (przekątna 2.8”).

Alternatywy dla RaspberryPi?

Jeśli interesuje nas bardziej współczesny procesor, ciekawie prezentują się płytki z serii BeagleBoard. Podstawowy model BagleBone to koszt rzędu 250zł.

BeagleBone Black

BeagleBone Black

Za tą cenę dostajemy dużo nowocześniejszy procesor (Cortex-A8) oraz dostęp do większości wyprowadzeń procesora. Podobnie jak w przypadku RPI dostępne są gotowe programy oraz dokumentacja. Ogromnym plusem jest dostęp do dokumentacji procesora – można czytać i czytać (podstawowa nota katalogowa ma ponad 3 tysiące stron). Wadami w tym przypadku jest wyższa cena oraz - tak jak w przypadku RPI - mała ilość peryferiów.

Jest jeszcze możliwość zakupu “prawdziwej” płytki ewaluacyjnej pod linuxa, jak chociażby z serii DevKit (będącej klonem BeagleBoard). Jeśli wydamy 1567,93zł, dostaniemy całkiem dobrze wyposażony zestaw (z wyświetlaczem LCD 7”). Jeśli cena nas nie odstrasza, pewnie jest to idealne rozwiązanie.

embedded

DevKit

W tytule artykułu jednak nie bez powodu pojawił się wyraz “tanio”. Blisko 1600 zł chyba nie pasuje do takiego określenia. Czy jednak nie ma możliwości uzyskania podobnego efektu za znacznie mniejsze pieniądze?

Tania alternatywa?

Ostatnimi czasy, ogromną popularność zyskują urządzenia wyposażone w system Android. Niezliczona ilość tanich telefonów, tabletów czy mini-laptopów z tym systemem jest dostępna w każdym sklepie. Jak wiadomo Android bazuje na Linuxie. Gdyby tak “wyrzucić” Androida i wykorzystać sprzęt jako tanią płytkę ewaluacyjną? W tym artykule postaram się pokazać, że jest to możliwe!

Na początek wybór sprzętu. Jako platformę wybrałem bardzo tani netbook produkcji Chińskiej, który nawet nie ma nazwy. Można go kupić na ebay-u, allegro albo sprowadzić bezpośrednio. Netbook kosztuje 219zł. Na ebay-u, zapłaciłem za niego 45 funtów, więc bardzo podobną kwotę.

Wykorzystany netbook.

Wykorzystany netbook.

Parametry podawane przez sprzedawcę są następujące:

  • Procesor: WM8850 – 1.5GHz (Cortex-A9)
  • Pamięć RAM: 512 MB
  • Pamięć NAND Flash: 4GB
  • Wyświetlacz: 7”, rozdzielczość 800x480
  • Sieć: ethernet (RJ-45) oraz Wi-Fi
  • Kamera: 640x480 (0.3 mpx)
  • Dźwięk: głośniki zintegrowane, mikrofon, wejście mikrofonowe, wyjście słuchawkowe
  • Klawiatura: 80 klawiszy, QWERTY
  • Bateria: 3.7V, Li-ion 1800mAh
  • Porty USB: 2x host
  • Wyjście video: HDMI
  • Gniazdo kart SD

Ogólnie dostajemy to wszystko, co na płytce 1600zł, a wydajemy 7 razy mniej. Zamówiony netbook przyszedł po 2 dniach, pudełko niezbyt urodziwe, brak informacji o producencie. Etykieta też niewiele mówi. Ale chociaż wiadomo jaki procesor jest w środku.

Jakość wykonania... no cóż, nie można oczekiwać cudów za taką cenę. W moim przypadku zaczęło się od rozczarowania – nie działa wyświetlacz. Nie miałem czasu na reklamacje, więc śrubokręt w dłoń i postanowiłem sam napraić.

Okazało się, że tasiemka była źle wpięta (swoją drogą, ciekawe czy jest jakaś kontrola jakości podczas produkcji takigo sprzętu). Po podłączeniu tasiemki, netbook ożył. Android startuje, muzyka gra, wyświetlacz działa nadspodziewanie ładnie.

Czas obejrzeć, co jest w środku. Kilka śrubek później można zobaczyć nasze skarby:

Płyta główna – trochę duża, ale całkiem solidna. Wszystkie gniazda dostępne, co ciekawe procesor jest na oddzielnej mini-płytce (można by go odłączyć). Widoczny jest moduł Wi-Fi i kodek dźwięku. LCD ma przekątną 7” i po wyjęciu z obudowy wydaje się naprawdę duży. Do tego mikro głośniczki (stereo), nawet grają, ale w obudowie brzmią lepiej, kamerka nie HD, ale jest, pod Androidem działa bez zarzutu.

Akumulator w moim egzemplarzu ma 3700mAh, można wykorzystać do konstrukcji robota. Netbook ma wbudowaną ładowarkę, więc nie musimy nic dodatkowo inwestować. Do tego mamy oczywiście zasilacz. Klawiatura jest całkiem niezłej jakości, trochę małe klawisze, ale działa bez zarzutu. Jest jeszcze panel dotykowy (moja rada – lepiej go zostawić w obudowie, inaczej ciężko używać, mój błąd). Piękny zestaw, ale dopóki mamy na nim Androida, właściwie można byłoby wykorzystać zwykły telefon.

Uruchomiony netbook.

Uruchomiony netbook.

Pierwszym krokiem przy pracy z zestawem ewaluacyjnym byłoby podłączenie konsoli przez RS-232. Niestety Netbook takiego złącza nie ma. Oglądamy dokładnie płytkę – a może producent zostawił takie złącze dla siebie?

W rogu widoczne jest miejsce na gniazdo, 4 nieużywane piny. Podłączam oscyloskop i bingo – to wyprowadzony UART (GND, RX, TX i 3V3). Lutownica, 5 min roboty i można podłączyć konwerter UART <-> USB (lub RS232 jak kto woli).

netbook9

Wyjście UART.

Podłączmy konwerter do PC i na ekranie obserwujemy komunikaty startującego Androida:

Startujący Android

Startujący Android

No właśnie, ciągle ten Android... Na szczęście, konfiguracja płytki jest bardzo standardowa. Naciskamy enter zaraz po resecie płytki i przerywamy bootowanie. Jestśmy w najzwyklejszym u-boocie (standardowy bootloader dla linuxa).

Mamy więc praktycznie gotową płytkę ewaluacyjną. Co jeszcze jest nam potrzebne? W sumie linux... Na szczęście producent udostępnił kod źródłowy (plusy licencji GPL). Trzeba pobrać, skompilować i wgrać na kartę SD.

Uruchamiamy jeszcze raz, wpisujemy odpowiednie polecenia u-boot-a i własny linux zaczyna się ładować. Jeszcze nie działa, musimy mieć do tego rootfs, czyli wszystkie pliki. Na szczęście to już nie problem. Pobieramy buildroot-a, wybieramy pakiety, kompilujemy i...

Start...

Start...

Można pograć w Doom-a. Dźwięk działa, obraz piękny, klawiaturka chodzi. Tylko rysik ciężko wykorzystać (jak go przytrzymać nie dotykając). Chwilowo podłączam myszkę po USB.

Mała przerwa...

Mała przerwa...

Ktoś zapyta, a jaki to ma związek z robotyką? Szybka odpowiedź – biblioteka OpenCV już jest na płytce, wystarczyło ją wybrać kompilując buildroota. Na te chwilę jeszcze nie uruchomiłem WiFi oraz kamerki. Pozostałe moduły działają. Jeśli będzie zainteresowanie tematem, w kolejnych artykułach opiszę szczegóły instalacji oraz (mam nadzieję) brakujące peryferia. A gdy wszystko ruszy, pozostanie tylko zbudować robota...

Następny artykuł z serii »

Pierwsza publikacja artykułu na forum: 28.07.2014

android, embedded, linux, netbook

Trwa ładowanie komentarzy...