Żadna to nowość w sieci – dwukołowy robot sterowany platformą Arduino i to jeszcze zbudowany w oparciu o gotową "ramę". A jednak jest szansa, że w każdym takim pojekcie i artykule na blogu znajdzie się coś ciekawego, może nawet unikatowego.
Historia tego robocika zaczęła się od marzenia, którym podzielił się ze mną pewnego wieczoru syn. Otóż powiedział, że chciałby mieć droida. Wiedziałem, o co chodzi, bo mój dziewięcioletni syn jest wielkim fanem Gwiezdnych Wojen (i aktualnie Harry'ego Pottera, choć na bal przebierańców idzie póki co jako Imperator Palpatine). Zadziałał efekt kolejki elektrycznej – zaproponowałem, że zbudujemy robota, który potrafi jeździć. Syn się zgodził.
Poszło więc zamówienie, dotarła paczka i poskładaliśmy robota, którego syn nazwał "Gnomonek", prawdopodobnie bazując na nazwie elementu zegara słonecznego.
Do dziś powstały cztery jego wersje, w zależności głównie od oprogramowania i zastosowanego dodatkowego sprzętu:
Ponieważ wszelkiego rodzaju line followery i beam followery zostały przedstawione na wielu blogach i w różnych odmianach – między innymi właśnie ten, który wykorzystuje komponenty sprzętowe identyczne z zainstalowanymi "Gnomonku" – tutaj skupiłem się na ostatniej jego wersji, czyli zdalnie sterowanym robocie mobilnym z prostym wykrywaniem przeszkód.
Do budowy tego robota wykorzystałem:
Dodatkowo użyłem prostego kodu obsługi czujnika ultradźwiękowego HC-SR04 – kodu zainspirowanego rozwiązaniem znalezionym w serwisie Instructables oraz opisem w dokumentacji technicznej modułu.
Poniżej zamieściłem listing programu – myślę, że nie powinno być problemów ze zrozumieniem poszczególnych jego elementów, starałem się wszak dość szczegółowo i wnikliwie go komentować. Schematu nie załączam - przedstawiony w listingu opis przeznaczenia poszczególnych pinów dla każdego arduinowca będzie prawdopodobnie wyczerpującą informacją na temat połączeń elementów elektronicznych w tym urządzeniu.
Program z oczywistych powodów nie jest doskonały ani optymalny, tym bardziej, że powstawał metodą przyrostową, na podstawie eksperymentów i obserwacji.
Co dalej z robotem? Otóż sterowanie zdalne za pomocą pilota TV jest szalenie niewygodne. Można by pomyśleć o zaadaptowaniu do sterowania nadajnika od biedronkowego śmigłowca – też działa na podczerwień. Byłoby to rozwiązanie optymalne, choć nie dostarczałoby tylu ciekawych opcji, co prezentowane wyżej. Próbowałem nawet "zdjąć" kody emitowane przez taki nadajnik, niestety, jak na razie nie byłem w stanie ogarnąć zastosowanego tam systemu... Co do planów na najbliższe tygodnie (o ile czas pozwoli), to właśnie przygotowałem układ enkodera dla silników – chodzi o to, że motorki zastosowane w robocie, mimo, że takie same pod względem specyfikacji, są szalenie nierówne. Innymi słowy przy takim samym wypełnieniu (czyli zadanej prędkości) robot zaczyna "ściągać" w lewo. Rzecz polega na tym, żeby robot starał się w miarę możliwości jechać równo.
Po rozwiązaniu tego problemu planuję zamontowanie ruchomej, sterowanej serwomechanizmem wieżyczki z czujnikiem HC-SR04 w celu zbudowania robota potrafiącego wykrywać i omijać przeszkody.
Równolegle trwają też prace nad robotem balansującym (nazwa robocza "Black") – moduł sterujący (Arduino Pro Mini, mostek H do sterowania silnikami i akcelerometr z żyroskopem GY-521 plus kilka elementów dyskretnych) oraz szkielet wraz z silnikami już przygotowane, teraz tylko trzeba znaleźć czas na montaż i testy.
Do zobaczenia zatem przy kolejnych wersjach moich (naszych :-)) robotów.
Historia tego robocika zaczęła się od marzenia, którym podzielił się ze mną pewnego wieczoru syn. Otóż powiedział, że chciałby mieć droida. Wiedziałem, o co chodzi, bo mój dziewięcioletni syn jest wielkim fanem Gwiezdnych Wojen (i aktualnie Harry'ego Pottera, choć na bal przebierańców idzie póki co jako Imperator Palpatine). Zadziałał efekt kolejki elektrycznej – zaproponowałem, że zbudujemy robota, który potrafi jeździć. Syn się zgodził.
Poszło więc zamówienie, dotarła paczka i poskładaliśmy robota, którego syn nazwał "Gnomonek", prawdopodobnie bazując na nazwie elementu zegara słonecznego.
Do dziś powstały cztery jego wersje, w zależności głównie od oprogramowania i zastosowanego dodatkowego sprzętu:
- beam follower (czyli ścigający latarkę);
- line follower (czyli jeżdżący po linii; w domu była to biała linia na brązowym tle, w pracy zaś, podczas prezentacji, czarna linia na jasnym tle – kwestia przestawienia paru znaków w programie);
- robot zdalnie sterowany (za pomocą pilota od starego telewizora);
- robot zdalnie sterowany (jak wyżej) z prostym systemem wykrywania przeszkód.
Ponieważ wszelkiego rodzaju line followery i beam followery zostały przedstawione na wielu blogach i w różnych odmianach – między innymi właśnie ten, który wykorzystuje komponenty sprzętowe identyczne z zainstalowanymi "Gnomonku" – tutaj skupiłem się na ostatniej jego wersji, czyli zdalnie sterowanym robocie mobilnym z prostym wykrywaniem przeszkód.
Do budowy tego robota wykorzystałem:
- Magician Chassis z silnikami, kołami i koszykami na baterie (dostępną np. na Nettigo);
- Arduino Leonardo i Arduino Motor Shield (zamiast drogiej płytki Motor Shield można zastosować układ L293D – do użytych przeze mnie silników w zupełności wystarczy, a jakby nie dawał rady, to możemy połączyć kilka takich układów w systemie "na barana", czyli piggy-back);
- RoboBoard 1.0 – jeśli zależy nam na funkcjonalności line followera i beam followera (opis obu rozwiązań z płytką RoboBoard i Arduino znajdziemy tutaj);
- małą płytkę stykową;
- czujnik zbliżeniowy HC-SR04;
- TSOP2236 (lub odpowiednik) jako odbiornik podczerwieni;
- buzzer z generatorem;
- dwie LED-y w różnych kolorach;
- dwa rezystory 220 Ohm;
- paczkę kabelków do płytki stykowej.
- możliwość poruszania się w przód i w tył z jedną z predefiniowanych prędkości ("biegów");
- możliwość płynnej regulacji prędkości;
- płynny skręt po łuku;
- skręt w miejscu (zwrot);
- sygnalizacja dźwiękowa przeszkody w odległości mniejszej niż 20 cm od czoła robota (po wykryciu przeszkody robot cofa się kilka centymetrów i zatrzymuje).
Dodatkowo użyłem prostego kodu obsługi czujnika ultradźwiękowego HC-SR04 – kodu zainspirowanego rozwiązaniem znalezionym w serwisie Instructables oraz opisem w dokumentacji technicznej modułu.
Poniżej zamieściłem listing programu – myślę, że nie powinno być problemów ze zrozumieniem poszczególnych jego elementów, starałem się wszak dość szczegółowo i wnikliwie go komentować. Schematu nie załączam - przedstawiony w listingu opis przeznaczenia poszczególnych pinów dla każdego arduinowca będzie prawdopodobnie wyczerpującą informacją na temat połączeń elementów elektronicznych w tym urządzeniu.
Program z oczywistych powodów nie jest doskonały ani optymalny, tym bardziej, że powstawał metodą przyrostową, na podstawie eksperymentów i obserwacji.
Co dalej z robotem? Otóż sterowanie zdalne za pomocą pilota TV jest szalenie niewygodne. Można by pomyśleć o zaadaptowaniu do sterowania nadajnika od biedronkowego śmigłowca – też działa na podczerwień. Byłoby to rozwiązanie optymalne, choć nie dostarczałoby tylu ciekawych opcji, co prezentowane wyżej. Próbowałem nawet "zdjąć" kody emitowane przez taki nadajnik, niestety, jak na razie nie byłem w stanie ogarnąć zastosowanego tam systemu... Co do planów na najbliższe tygodnie (o ile czas pozwoli), to właśnie przygotowałem układ enkodera dla silników – chodzi o to, że motorki zastosowane w robocie, mimo, że takie same pod względem specyfikacji, są szalenie nierówne. Innymi słowy przy takim samym wypełnieniu (czyli zadanej prędkości) robot zaczyna "ściągać" w lewo. Rzecz polega na tym, żeby robot starał się w miarę możliwości jechać równo.
Po rozwiązaniu tego problemu planuję zamontowanie ruchomej, sterowanej serwomechanizmem wieżyczki z czujnikiem HC-SR04 w celu zbudowania robota potrafiącego wykrywać i omijać przeszkody.
Równolegle trwają też prace nad robotem balansującym (nazwa robocza "Black") – moduł sterujący (Arduino Pro Mini, mostek H do sterowania silnikami i akcelerometr z żyroskopem GY-521 plus kilka elementów dyskretnych) oraz szkielet wraz z silnikami już przygotowane, teraz tylko trzeba znaleźć czas na montaż i testy.
Do zobaczenia zatem przy kolejnych wersjach moich (naszych :-)) robotów.
Komentarze
Prześlij komentarz