SPiBot - projekt robota z wykorzystaniem Raspberry Pi
Od ponad roku posiadam Raspberry Pi, które było testowane i wykorzystywane do przeróżnych projektów m.in. serwera plików i streamingu TV, odtwarzacza multimedialnego z wykorzystaniem xbmc czy kamery sieciowej. Testowałem spora ilość systemów i nie jedną kartę SD uszkodziłem. Po tych wojażach postanowiłem zainteresować się zarządzaniem pinami GPIO na malinie. Zaczęło się od prostego podłączania diod, silniczków czy serw. Po zabawach z portami GPIO postanowiłem zbudować coś bardziej trwalszego niżeli proste układy diod. Wybór padł na robota jeżdżącego na gąsienicach.
Oglądałem spora ilość filmików na youtube z projektami robotów (tutaj prawie wszystko wykorzystywało Arduino) i zdecydowałem się na budowę pojazdu na gąsienicach, który wydał mi się dość prostym projektem na początek.
Koncepcja robota jest taka, że powinien być zdalnie sterowany oraz posiadać streaming obrazu na żywo aby można było jeździć robotem bez chodzenia za nim i nie było potrzeby widzieć go, coś podobnego do robotów oddziałów specjalnych czy saperów. Oprócz kamery robot posiadać będzie czujnik odległości oraz ramię do chwytania przedmiotów.
Do zdalnej komunikacji wykorzystane zostało Wifi. RPi ustawiony jest jako Access Point do którego podłączamy się telefonem, tabletem lub laptopem. Jako podwozie i napęd zostały wykorzystane części z czołgu firmy Heng Long nr 3808 dostępne w sklepach z modelami RC.
Do sterowania pinami GPIO wykorzystałem bibliotekę dla języka C PIGPIO z demonem, dzięki której w łatwy sposób możemy stworzyć dodatkowe softowe porty PWM (RPi posiada tylko jeden sprzętowy port PWM, który pozwala na sterowanie szybkością obrotów silnika czy położenia serw) oraz zarządzać samymi pinami. Przykładowo przy wykorzystaniu demona pigpiod można zarządzać pinami np. włączając stan 17 pinu na 1 pigs w 17 1 lub np. użyć pin 21 jako port PWM do sterowania obrotami silnika pigs p 21 150 (zakres od 0‑255), przykładowo sterowanie pozycją na pinie 21 serwa polega na użyciu polecenia pigs s 21 1500 (zakres od 500 do 2500). Oczywiście można użyć bibliotekę aby ustawiać porty ale wymaga to napisania programu. Na sam początek wybrałem demona, który domyślnie odbiera socket-y i nasłuchuje na na porcie 8888, oraz można wykonywać polecenie w terminalu systemu.
Do sterowania silnikami zazwyczaj potrzebne jest dodatkowe zasilanie, którego sama malina nie jest w stanie dostarczyć, do tego używa się sterowników silników, które oprócz samego osobnego zasilania posiada możliwość ustawienia kierunku obrotów silnika. Użyłem w tym celu dwukanałowego sterownika TB6612.
Aby zminimalizować wielkość układu i był porządek w kabelkach wykorzystałem płytkę prototypową ze złączem dla RPi
Do sterowania robotem napisałem prosty program w PHP za pomocą którego można sterować jazda robota. Obecnie nie działa to płynnie ale pracuje nad rozwiązaniem tego poprzez joystick ekranowy. W obecnej chwili testuję streaming obrazu z modułu kamery podłączonej do Raspberry Pi.
Obecny stan projektu to działająca elektronika oraz jeżdżący robot sterowany za pomocą prostej strony napisanej w php. [youtube=http://www.youtube.com/watch?v=u4Z1wC_0mTM]
W dalszym ciągu czeka mnie sporo pracy na robotem, a już mam kolejne pomysły na inne roboty. W najbliższych dniach będę prezentować robota już z streamingiem m.in. na forum druku 3D w Gdyni.
Jeśli macie jakieś pomysły co można by było jeszcze dodać do robota piszcie w komentarzach. Sam robot jest tylko prototypem. Zamierzam zbudować większego robota z wytrzymalszych materiałów na wzór zdjęcia z nagłówka.
Opis budowy robota oraz więcej informacji, postaram się na bieżąco opisywać zmiany i informować was o postępach pracy. Liczę też na to, że ktoś z czytelników DP również pochwali się jakimś ciekawym projektem czy to na RPi czy na Arduino. Dla pytających się czy zamierzam zrobić jakieś how to odpowiem, że tak postaram się takie przygotować aby każdy mógł spróbować zbudować podobnego robota.