poniedziałek, 17 stycznia 2011

Budujemy robota Open Source. Kurs w pigułce.

Autor: Adrian Nowak, 09:00, poniedziałek, 17 stycznia 2011


Złożony robot
Bardzo jesteście niecierpliwi. Dostałem sporo maili z pytaniami o to czy nie da się przyśpieszyć kursu i tak dalej. Jako, że chciałbym jednak nad każdym zagadnieniem skupić się dość szczegółowo, to dziś kurs w pigułce tworzenia prostego robota opartego o Adruino, a później powoli będziemy dogłębniej poznawać każdy z popularniejszych sensorów. Siłą rzeczy ta część będzie nieco oderwana od innych i mniej szczegółowa, jednak jeśli ktoś jest bardzo niecierpliwy, będzie to dobry punkt wyjścia do samodzielnych poszukiwań.

Robot będzie się poruszał w kierunku światła
Robot, którego zbudujemy właściwie nie wymaga aż tak zaawansowanej elektroniki jak Ardiuno. Jego jedynym zadaniem będzie podążanie za światłem, bądź też poruszanie się w oświetlonym obszarze.

Tak czy inaczej, pozostajemy przy naszej otwartoźródłowej platformie Arduino, która ułatwi nam zadanie. Jak okaże się za chwilę, cała procedura budowy urządzenia ma w sobie tylko kilka trudnych punktów.

Zacznijmy od rzeczy, które wypadałoby mieć, aby stworzyć nasz pojazd. Wiele z nich można zamienić na inne, gdyż bynajmniej nie trzeba się sztywno trzymać tej instrukcji. Bez kilku elementów się jednak nie obejdziemy:

Najważniejsze części robota
  • Arduino - właściwie dowolna wersja (na zdjęciach jest to edycja Boraduino)
  • 2 serwomechanizmy - najlepiej nie za mocne, by nie obciążały za bardzo płytki (niezbyt profesjonalnie podłączymy całość bez tranzystorów i przekaźników), ale też powinny "udźwignąć" robota, co szczególnie trudne nie będzie.
  • 2 fotorezystory - niezbyt wyszukany element dyskretny, łatwy do zdobycia i tani.
  • 2 rezystory - zależnie od specyfikacji fotorezystorów (najczęściej 10k omów)
  • Bateria - najlepiej jedna 9V, bądź kilka połączonych.
Serwomechanizmy podłączone do Arduino
Z koniecznych to by było na tyle. Najdroższe z zestawu jest oczywiście Arduino (ok. 100 zł) oraz serwomechanizmy (ok. 20-30 zł każdy). Fotorezystory i bateria to łącznie około 10 zł. Oczywiście nikt nam nie zabroni kupić zamiast baterii akumulatorka i dużo droższych serwomechanizmów. Górne limity cenowe są tutaj bardzo wysoko.

Ktoś może też słusznie zauważyć, że prawie 200 zł to dość spora suma jak na coś co tylko jeździ za światłem. Przypominam jednak, że jest to najprostszy robot oparty o Arduino jaki można sobie wyobrazić, a jego możliwości nie kończą się nawet po podłączeniu do telefonu z Androidem. O tym jednak przy innej okazji. Chciałem tylko zasygnalizować, że po części próbujemy strzelać do muchy z armaty, jednak jest to konieczne by dowiedzieć się jak w ogóle obsługiwać armatę.

Arduino na płytce przymocowanej do serwomechanizmów
Teraz wróćmy do części, których choć nie musimy kupować, są konieczne do działania naszej maszyny:

Widok na płytkę z drugiej strony
  • Koła - prozaiczna sprawa, a jednak sprawia wiele problemów. Najlepiej oczywiście kupić gotowe, które można przykręcić do serwomechanizmów. Nic się jednak nie stanie jeśli zamiast tego wytniemy je na przykład z tektury a na końcu owiniemy jakąś gumą - wiadomo, zimą mogą się ślizgać.
  • Płytka stykowa - niby nie konieczna, jednak skręcanie kabelków ręcznie, czy ich lutowanie nie jest najwygodniejsze dla początkujących. Z pewnością jest to dobra inwestycja dla osób, które dużo eksperymentują ze swoimi układami.
  • Kable, druciki i trochę śmieci - nie bójmy się tego przyznać. Nie mamy w domu laserowych wycinarek (przynajmniej ja nie mam), więc przy tworzeniu obudowy i łączeniu całości trzeba użyć nieco wrodzonej fantazji i poeksperymentować.
Mamy elementy. Od czego zaczynamy?

Rozmontowany serwomechanizm
Od rozbrojenia serwomechanizmów. Niestety (dla nas) domyślnie nie są one stworzone do ciągłego obracania się. Dzięki temu można je bardzo dokładnie ustawiać w różnych pozycjach (obrót o 360 stopni), jednak jeden pełen obrót koła to dla nas zdecydowanie za mało.

Nie ma co ukrywać, że proces przerabiania serwomechanizmu jest zdecydowanie najtrudniejszym ze wszystkich operacji jakie wykonujemy podczas budowy robota. Na szczęście w "czasie życia" serwomechanizmu, operacji takiej dokonujemy tylko raz, a przerobiony silniczek i jego sterownik możemy używać w wielu konstrukcjach.

Dolutowane do kabelków serwomechanizmu oporniki
W dużym skrócie, końcówka serwomechanizmu nie obraca się ciągle, gdyż jest przytwierdzona na potencjometrze. Musimy go rozmontować (uszkadzając go), jednak w taki sposób, by całość nadal obracała się po tej samej osi. Do tego trzeba jeszcze wlutować małe oporniczki przy wyjściu kabli z serwomechanizmu i gotowe.

Biorąc pod uwagę, że całą operację przeprowadzamy w elemencie, który ma około 2 centymetry, przydadzą się manualne sprawności. Nie ma też jednak co przesadzać - powoli zrobi to niemal każdy. W internecie sporo jest instrukcji na ten temat, można skorzystać na przykład z tej.

Łączymy elementy z Arduino

Widok na złożonego robota od dołu.
Gdy wszystkie "podzespoły" są już gotowe, pozostaje tylko zająć się podłączeniem ich do Arduino i napisaniem odpowiedniego kodu. Jako, że to ostatnie jest już gotowe, wystarczy dobrze popodpinać wszystkie kabelki.

Fotorezystory podłączamy do pinów analogowych 0 i 1 (szczegółowa procedura podłączania fotorezystora do Arduino), natomiast serwomechanizmy wczepiamy w piny 9 i 10.

Szczegółami serwomechanizmów zajmiemy się wkrótce, jednak ich podłączanie sprowadza się do wpięcia brązowego pinu (-) do "uziemienia", czerwonego (+) do +5V i pomarańczowego do wspomnianych wcześniej pinów 9 lub 10. Przy okazji warto pamiętać, że jeśli nasz serwomechanizm nie jest jednym z najmniejszych, warto sprawdzić jaki prąd pobiera z Arduino. Jeśli jest to więcej niż 40 mA (graniczne dla jednego wyjścia w Arduino), należy zastosować dodatkowy układ z tranzystorem, bądź w skrajnych wypadkach z przekaźnikiem.

Kod programu

Gotowy robot
No to teraz jedna z najtrudniejszych, a czasem najłatwiejszych części naszego zadania. Tym razem będzie to bułka z masłem, gdyż kod jest gotowy. O programowaniu mikrokontrolera nieco już wspominałem, więc wiele osób potrafiłoby pewnie samodzielnie stworzyć kod. Mało jednak prawdopodobne, że byłby on tak krótki jak poniższy, który ma zaledwie kilkanaście linijek:

#include "Servo.h"

Servo leftServo;
Servo rightServo;
int leftValue = 0;
int rightValue = 0;

void setup() {
leftServo.attach(10);
rightServo.attach(9);
}

void loop() {
// wartości z sensora między 50 - 900
leftValue = (analogRead(0) - 50) / 50;
rightValue = (analogRead(1) - 50) / 50;
leftServo.write(89 + rightValue);
rightServo.write(89 - leftValue);
delay(10);
}





Działa i co dalej?

Teraz już właściwie powinno pójść z górki. Cała podstawowa platforma jest już przecież gotowa. Na początek można poeksperymentować z kodem, później można się pobawić z dodatkowymi sensorami. Najciekawszy jest oczywiście czujnik odległości. Tymi ciekawostkami zajmiemy się w przyszłości.

fot: tinkerlog.com
blog comments powered by Disqus

Prześlij komentarz


Popularne posty

Etykiety