• Strona główna
  • Makler
  • Nauka
  • O autorze
  • To czytam
  • West Highland Way
Niebieski Pomarańczowy Zielony Różowy Purpurowy

Robot

Post z kategorii arduino. Napisał Newton, a był to Styczeń 11, 2012 roku.
sty 11

Arduino, płytka łącząca świat elektroniki z komputerami, którą bawiłem się w zeszłym roku, od pewnego czasu zbierała kurz w kącie. Chodził mi co prawda po głowie pewien pomysł, ale jakoś ciężko było mi się zebrać za jego realizację. Do czasu. Przyszedł styczniowy długi weekend (pierwszy w tym roku) i postanowiłem: buduję robota. Powstała całkiem fajna maszynka. Daje się sterować z komórki, a ponadto posiada kamerę, dzięki której wyświetla eksplorowane miejsca. Z czego się to ustrojstwo składa?

2 komórki z Androidem – klient, sterownik

W szafce, niedaleko Arduino, kurzyła się również stara komórka z Androidem: HTC Magic. Na codzień używam Motoroli Defy, również z Androidem. Postanowiłem wykorzystać oba urządzenia. Nowsza Motorola spełnia rolę klienta do obsługi robota. Wyświetla mi ona obraz z kamerki HTC i pozwala na sterowanie (do przodu, do tyłu, obrót w lewo i w prawo). Starszy HTC odbiera komendy i przesyła je (po kablu) do Arduino, które jest podłączone do silników.

Połączenie między komórkami leci po wi-fi, komunikacja odbywa się za pomocą dwóch programów: RobotController i RobotServer. HTC Magic podłączony jest do Arduino szeregowo, wg. przepisu z tej strony. Ostatecznie wymagane jest podłączenie dwóch kabli za pośrednictwem jednego scalaka (74LS04), wartego 80 groszy :) Pewnym problemem może być zdobycie wtyczki ExtUSB – ja kupiłem na Allegro zaawansowane urządzenie o nazwie HTC YC A100, po czym urżnąłem wtyczkę. Podobno można też wykorzystać tę od oryginalnych słuchawek HTC. Należy wykorzystać kabel żółty (TX0, u mnie nr 9, inaczej niż w opisie) i czerwony (nr 7, uziemienie). Jeśli są dwa żółte i dwa czerwone, to bierzemy te, które nie siedzą w metalowej folii. Po wykonaniu kabla, można przesyłać komendy do Arduino za pomocą Androidowego urządzenia /dev/ttyMSM2 (prędkość 9600). Aha – na Androida trzeba wgrać alternatywny soft, polecam CyanogenMod.

Konsola sterowania robotem

Osoby niezainteresowane programowanie tę sekcję mogą z czystym sumieniem pominąć :)

RobotServer spełnia rolę prostego przekaźnika – wszystko, co dostanie na port UDP 9999 kieruje do /dev/ttyMSM2. Tam z kolei czeka już sterownik Arduino, który przyjmuje komendy ASCII postaci APPVVV (ustaw wartość PWM pinu PP na VVV, np. A05255) i DPPS (ustaw cyfrową wartość pinu PP na S, gdzie S to 1 lub 0). W ten sposób można ustawić stan dowolnego pinu za pośrednictwem sieci. Logika związana ze sterowaniem odbywa się po stronie klienta – to on musi wiedzieć, że aby np. obrócić się w lewo, lewa gąsienica musi jechać do tyłu, a prawa do przodu. Odpowiada za to klasa Robot. Klasa ta pozwala również na bardziej subtelne sterowanie gąsienicami dzięki funkcji move(double x, double y). Oba parametry przyjmują wartości -1 do 1, pierwszy odpowiada za ruch do przodu i do tyłu, a drugi za obroty. Tak więc np. move(0.7, 0.1) sprawi, że robot będzie jechał do przodu, lekko skręcając w prawo.

Oprócz tego RobotServer nasłuchuje na porcie UDP 9998 na wiadomość register i jeśli ją otrzyma, to na port UDP 9990 nadawcy wysyłany jest ciąg JPG-ów z kamerki. Można to przerwać, wysyłając komunikat unregister.

Podwozie i napęd

Robot musi się jakoś poruszać. Potrzebne są co najmniej dwa silniki (jeden z lewej, drugi z prawej strony) i jakieś podwozie, do którego silniki będą przymocowane. Postanowiłem iść na łatwiznę i kupić gotowe podwozie, korzystając z oferty sklepu Trobot. Kupiłem eleganckie, żółte podwozie z dwiema gąsienicami. Do podwozia dodawany jest pojemnik na baterie (bagatela, 6 paluszków AA), więc problem zasilania mamy również z głowy.

Sterowanie silnikami

Silnikami powinna oczywiście sterował płytka Arduino, jednak posiada ona jedynie zestaw wyjść cyfrowych, nieprzystosowanych do obsługi silników elektrycznych. Potrzeba więc kolejnego modułu, który na podstawie sygnałów pochodzących z Arduino będzie dostarczać silnikom odpowiednie napięcie. Popularny moduł nazywa się motor shield i był to niestety kolejny wydatek (na szczęście już ostatni). Motor shield nakłada się bezpośrednio na płytkę z Arduino, która w ten sposób wzbogaca się o 4 eleganckie zaciski do kabli silników (i 2 zaciski do kabli zasilania). Motor shield konfiguruje się za pomocą zworek, wszystko jest opisane na wiki. Zasilanie podłączyłem do wejść Arduino Vin i Ground.

Diodka

Jako wisienkę na torcie umieściłem na nim 3-kolorową diodę LED, którą również można zaświecić zdalnie. Podłączyłem ją do PIN-ów 9, 10 i 11.

I gotowe :)

Po zmontowaniu wszystkiego razem, za pomocą odpowiedniej ilości gumek recepturek, robot działa. Można nim jeździć, omijać przeszkody (gąsienice radzą sobie całkiem nieźle) i obserwować teren. Pracę podzieliłem na kilka etapów: 1) robot jeździ, 2) daje się sterować zdalnie z komputera, 3) daje się sterować zdalnie z drugiej komórki, 4) przesyła obraz. W sumie poszło gładko, a zakończenie każdego etapu dawało motywację do rozpoczęcia kolejnego :) Całość zajęła 3 dni. Nie pamiętam, kiedy ostatni raz tak dobrze się bawiłem :)

Wszystkie powstałe sterowniki wrzuciłem na swojego githuba. Nie daję na nie żadnej gwarancji, u mnie mniej-więcej działają, więc może przydadzą się komuś jeszcze.

1 komentarz

  1. Jarek on Styczeń 12th, 2012

    wypasik. też mam w planach taką konstrukcję – tyle, że opartą na starym tablecie Nokia N800 (leży gdzieś w szafie :) dodatkowo zamiast kodować część serwerową w Javie, machnę ją w Pythonie!



Zostaw odpowiedź

Blog Newtona

Nazywam się Newton. Teraz będę kłamał.

  • Kategorie
    • arduino
    • emo
    • filmy
    • inne
    • książki
    • muzyka
    • nauka
    • podróże
    • technikalia
    • wiara
  • Archiwa
    • Styczeń 2012
    • Grudzień 2011
    • Wrzesień 2011
    • Sierpień 2011
    • Maj 2011
    • Marzec 2011
    • Luty 2011
    • Styczeń 2011
    • Grudzień 2010
    • Listopad 2010
    • Październik 2010
    • Sierpień 2010
    • Lipiec 2010
    • Maj 2010
    • Kwiecień 2010
    • Luty 2010
    • Grudzień 2009
    • Listopad 2009
    • Październik 2009
    • Wrzesień 2009
    • Sierpień 2009
    • Lipiec 2009
    • Czerwiec 2009
    • Maj 2009
    • Kwiecień 2009
    • Marzec 2009
    • Luty 2009
    • Styczeń 2009
    • Grudzień 2008
    • Listopad 2008
    • Październik 2008
    • Wrzesień 2008
    • Sierpień 2008
    • Lipiec 2008
    • Czerwiec 2008
    • Maj 2008
    • Kwiecień 2008
    • Marzec 2008
    • Luty 2008
    • Styczeń 2008
    • Grudzień 2007
    • Listopad 2007
    • Październik 2007
    • Wrzesień 2007
    • Sierpień 2007
    • Maj 2007
    • Kwiecień 2007
    • Marzec 2007
    • Luty 2007
  • Wyszukiwanie






  • Strona główna
  • Makler
  • Nauka
  • O autorze
  • To czytam
  • West Highland Way

© Copyright Blog Newtona. All rights reserved.
Designed by FTL Wordpress Themes brought to you by Smashing Magazine

Do góry!