Skocz do zawartości

[Kurs] Arduino - kurs wykorzystania w robotyce


mactro

Pomocna odpowiedź

Część 1

Budowa robota

W poprzednim artykule o modułowej budowie robotów przedstawiłem zalety tego typu podejścia w robotyce. Czas przyjrzeć się praktycznej realizacji przedstawionych wcześniej założeń na przykładzie robota RP5.

Robot został zbudowany na podwoziu gąsienicowym. Sterownikiem jest DFRduino328 (w pełni kompatybilne z Arduino Duemillanove), oraz MotorShield oparty na układzie L293. Później wykorzystamy jeszcze I/O Shield pozwalający na wygodniejsze podłączanie czujników do Arduino. Montaż zestawu jest bardzo prosty i nie zajmuje dużo czasu. Nie wymaga również lutowania. Gotowy robot wygląda tak:

W tej chwili nie ma jeszcze czujników, ale tym zajmiemy się później. Teraz trzeba przetestować jak jeździ. W tym celu napiszemy prosty program dla sterownika Arduino:

//określamy, które piny sterują silnikami
//piny sterujące prędkością silników
int EN1 = 6;  
int EN2 = 5; 

//piny sterujące kierunkiem jazdy 
int IN1 = 7;
int IN2 = 4; 

int R = 0; //jazda do przodu
int F = 1; //jazda do tyłu

Linijki poprzedzone przez „//” są komentarzami, czyli nie są wykonywane przez program. Powyższy fragment stanowi deklarację zmiennych, których będziemy używać w dalszej części programu. Oznacza on, że np. kiedy napiszemy gdziekolwiek EN1, program podstawi w to miejsce liczbę 6.

//funkcje sterujące silnikami – pwm określa prędkość, reverse kierunek
void Motor1(int pwm, boolean reverse)
{
 analogWrite(EN1,pwm); //ustawia wypełnienie PWM: 0 - silnik zatrzymany, 255 - pełna prędkość
 if(reverse)
 { 
   digitalWrite(IN1,HIGH);    
 }
 else
 {
   digitalWrite(IN1,LOW);    
 }
}  

//dla drugiego silnika identycznie, tylko IN1 i EN1 zamienione są na IN2 i EN2


void setup()
{
 int i;
 for(i=4;i<=7;i++) { //Dla Arduino Motor Shield
   pinMode(i, OUTPUT);  //ustaw piny 4,5,6,7 jako wyjścia
 }
}

void loop() {
 //jedź do przodu przez sekundę
 Motor1(255,F);
 Motor2(255,F);
 delay(1000);
 //skręcaj przez sekundę
 Motor1(255,R);
 Motor2(255,F);
 delay(1000);
}

Robot ożył! 🙂 Na razie nie robi nic imponującego, jeździ tylko po pokoju i to tylko do momentu, kiedy natrafi na ścianę. Nie ma jeszcze możliwości wykrywania przeszkód, ale zmiana tego stanu rzeczy będzie naszym następnym celem.

Zamocujemy do robota czujnik zbliżeniowy. Dzięki niemu, kiedy robot zbliży się na określoną odległość do przeszkody, będzie mógł odpowiednio zareagować, np. zatrzymać się, czy skręcić i pojechać w inną stronę. Zasięg czujnika reguluje się wbudowanym w niego potencjometrem:

Aby skorzystać z możliwości jakie daje nam ten czujnik musimy nieco zmodyfikować nasz program. W funkcji setup() należy dodać linijkę, która określi do którego pinu sterownika jest podłączony czujnik:

pinMode(SEN1,INPUT); //pin pod który podłączono czujnik jako wejście

Większe zmiany pojawią się w funkcji loop():

void loop() 
{ 
 boolean in_range;
 in_range = !digitalRead(SEN1); //aktywnym stanem czujnika IR jest 0 
 //(znak „!” oznacza negację)
 if(in_range) {//jeśli wykryto przeszkodę
   Motor1(255,R);//jedź do tyłu
   Motor2(255,R);
   delay(1000); //przez sekundę
   Motor1(255,R); //skręcaj
   Motor2(255,F);
   delay(1000);//przez sekundę
 }
 else {//jeśli nie widać przeszkody
   Motor1(255,F); //jedź prosto
   Motor2(255,F);
 }
}

Teraz, na wejściu Arduino podłączonym do czujnika pojawi się stan niski, oznaczający wykrycie przeszkody, robot cofnie się i skręci. Jeśli droga będzie wolna, robot będzie jechał na wprost.

W ten sposób w około 2 godziny, bez używania lutownicy stworzyliśmy w pełni działającego robota. Co więcej jego możliwości nie kończą się wcale na unikaniu zderzenia ze ścianą! Wręcz, przeciwnie, do tej pory wykorzystaliśmy zaledwie ułamek możliwości sterownika, który jest w zestawie. Teraz można dodać kolejne czujniki, serwa, czy cokolwiek zapragniesz wykorzystać.

Wszystkie części wykorzystane do budowy robota można kupić w sklepie internetowym Trobot

W kolejnej części artykułu skupię się bardziej na samym programie pisanym pod Arduino.

Część 1

Link do komentarza
Share on other sites

Czy są jakieś szanse na dalsze części kursu?

Jak na razie "polizałeś" jedynie temat i zareklamowałeś fajny produkt.

Przydało by się dalej pójść tą drogą i rozwinąć kurs.

Pozwolił by to przedstawić możliwości projektu, a co za tym idzie rozreklamować konstrukcję i pokazać jej plusy.

Nie ukrywam iż sama pogłębił bym wiedzę na temat programowania arduino i być może zaczął wykorzystywać w praktyce.

Link do komentarza
Share on other sites

Nie mogę obiecać jakiejś konkretnej daty, ale na pewno jeszcze wyprodukuję jakieś materiały dot. Arduino. Być może nie będzie to kurs, a opis wykorzystania konkretnych czujników / modułów...

Link do komentarza
Share on other sites

No i to jest bardzo dobra wiadomość 🙂 Od zawsze wiadomo że najlepiej uczy się czegoś na konkretnych przykładach 🙂

Czekam z niecierpliwością i coraz bardziej się uśmiecham na na słowo Arduino

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Niedawno skończyłem małego robota właśnie na arduino i mogę powiedzieć że ten kurs jest w ogóle nie zrozumiały dla kogoś kto zaczyna zabawę z programowaniem i nie każdego stać aby wszystko budować z gotowych modułów. Kupiłem arduino a resztę wykonałem sam. W www.trobot.pl shield do sterowania silników kosztuje 55zł a ja to samo robię w 10 min za 10 zł i gdzie tu ekonomia?

I jeszcze jedno ten kurs jest dla osób które nie mają pojęcia o niczym i mają góre kasy ale przy budowie robota według tego kursu niczego sięnie nauczą.

Link do komentarza
Share on other sites

mat1321, jeśli jesteś w stanie wykonać sterownik silników w 10 minut, to gratuluję 🙂 Chodzi o to, że gotowe moduły są przeznaczone przede wszystkim dla osób, które takiej sztuki nie potrafią, a mimo to chciałyby zrobić swojego robota. Dla nich samodzielne stworzenie płytki może być problemem.

Co do zarzutu, że osoby zaczynające z Arduino niczego nie nauczą się z tego kursu - cóż, nie jest to materiał, który jest już zamkniętą całością. Właściwie dwie części, które dotąd powstały miały jedynie zaprezentować temat i przedstawić główne zalety wykorzystania Arduino w robotyce, a nie dogłębnie wyjaśniać poszczególne zagadnienia (to miało pojawić się później).

Link do komentarza
Share on other sites

mat1321 No wiesz... Jeden umie rzeźbić, dla drugiego napisanie systemu operacyjnego na kompa nie jest trudne. A jeszcze ktoś inny tylko korzysta z systemu i podziwie sztukę - choć sam nie umie stworzyć ani jednego ani drugiego.

Jeden lubi babkę, drugi wnuczkę. Każdemu wedle potrzeb i gustu.

Ja osobiście nie miałem problemu z ogarnięciem podanego kodu, ba wręcz wydaje mi się on banalnie prosty. Dlatego zainteresowałem się całością.

A odnośnie sprzętu, cen, zakupu i tworzenia samemu dodatków, no cóż to też kwestia indywidualna... Jeden zrobi sam, drugi kupi w sklepie to co potrzebuje, a trzeci jeszcze połączy 2-3 moduły i stworzy swój na własne potrzeby lub wymyśli coś innego. Po raz enty - rzecz indywidualna...

Link do komentarza
Share on other sites

W woli ścisłości jest jeszcze:

PICDUINO czyli to samo ale na procesorach PIC, AVT1625;

Cortexino na procesorze ARM LPC1114, AVT1620.

Tylko że zestawy te nie są programowane w tym środowisku.

Co do ARDUINO to w EP jest kompletny kurs programowania tego.

Link do komentarza
Share on other sites

Dziękuje za wskazanie alternatywy. Ale czy ktoś by mógł potwierdzić czy ta lista jest kompletna i prawidłowa. Nie chciał bym kupić złych elementów. A nie jestem pewny czy dobrze wskazałem to http://trobot.pl/index.php?page=shop.product_details&flypage=flypage_new.tpl&product_id=42&category_id=19&vmcchk=1&option=com_virtuemart&Itemid=136.

Dodatkowo mam pytanie o możliwości rozbudowy tego robota.

Co można było by mu jeszcze podłączyć i oprogramować jeśli podstawą są te 3 elementy opisane w tym kursie.

1) Sterownikiem jest DFRduino328 (w pełni kompatybilne z Arduino Duemillanove),
2) MotorShield oparty na układzie L293.

3) I/O Shield --> ??? ->> http://trobot.pl/index.php?page=shop.product_details&flypage=flypage_new.tpl&product_id=42&category_id=19&vmcchk=1&option=com_virtuemart&Itemid=136.

I ostatnie może najgłupsze pytanie 🙂

Czy DFRduino328 (w pełni kompatybilne z Arduino Duemillanove) jest programowany w środowisku Arduino. I dla czego nie sprzedawany jest Arduino Duemillanove w tym zestawie?

Link do komentarza
Share on other sites

Do listy elementów, którą podałeś można dodać jeszcze odbiornik podczerwieni, który pozwoli Ci sterować robotem z pilota od tv. Nie jest oczywiście niezbędny, bo do działającego robota potrzebujesz jedynie zestawu RP5+Arduino+motor shield. I/O shield pozwala na wygodne łączenie czujników.

BlackJack gwoli ścisłości, to produktów z -duino w nazwie jest ogrom - przynajmniej część jest opisana na stronie arduino.cc

Link do komentarza
Share on other sites

Witam.

Czy macie jakieś pomysły na rozbudowę tego robota ?

Ja myślałem o dodaniu do niego czujnika ruchu zamontowanego na serwie by robot mógł podążać za ruchomym celem.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.