Skocz do zawartości

Superszybki robot na podczerwień - rozwiązanie


mateusz797

Pomocna odpowiedź

Czesc, 

Ten wątek zostaje stworzony dla tych którzy po raz 1. budują robota na podczerwień. Po wielu testach i poszukiwaniach spr. ze biblioteka RC5 działą tylko przez pewien czas wraz z nowa zakupionym pilotem Philips, który obsluguje standard RC5. Skutecznym rozwiazaniem okazalo się zastosowanie starego pilota jak na ponizszym zdj.

Predkosci silnikow sa ustawione na 230/255, wiec robot jedzie bardzo szybko.

Nie polecam rozwiazania ze str. kursu forbot ze standardem RC5 gdyz jest ono nieskuteczne i nie działa. 

Ponizej przedstawiam rozwiazanie ze starym pilotem oraz kody na:

a) Odczyt kodów pilota na podczerwień

#include <IRremote.h>

#define irPin 10

IRrecv irrecv(irPin);
decode_results results;

void setup() {
 Serial.begin(9600);
 irrecv.enableIRIn();
}

void loop() {
  
if (irrecv.decode(&results)) {
  
  Serial.print("0x");
  Serial.println(results.value, HEX);
  delay(500);
  irrecv.resume();
}
}

b) Poprawny program na robota.

 

#include <IRremote.h>


int receiverpin = 10;         // def.PIN odbiornika
IRrecv irrecv (receiverpin);  // nazwa odb
decode_results results;       // odwolanie do odbiornika


const int IN1 = 7;
const int IN2 = 6;
const int IN3 = 4;
const int IN4 = 5;
const int ENA = 11;
const int ENB = 3;            // Piny silników


void setup() {

irrecv.enableIRIn();         // uruchamia odbiornik podczerwieni
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
pinMode (ENA, OUTPUT);
pinMode (ENB, OUTPUT);      // ust.silnikow jako wyjscia



}

void przod() {

digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
analogWrite  (ENA, 230);
analogWrite  (ENB, 230);



}

void lewo() {

digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
analogWrite  (ENA, 230);
analogWrite  (ENB, 230);




}

void prawo() {

digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
analogWrite  (ENA, 230);
analogWrite  (ENB, 230);



}

void tyl() {

digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
analogWrite  (ENA, 230);
analogWrite  (ENB, 230);

}

void stop() {

digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
analogWrite  (ENA, 0);
analogWrite  (ENB, 0);

}

void IRtranslate(){

switch(results.value){
 
   
   case 0x1C6807F:
   
   
   przod();  
   
   break;     // 2 - Jazda do przodu


   
   case 0x1C6C03F:

   lewo();
    
    break;     // 4 - Skret w lewo

   
   case 0x1C6A05F:


    prawo();
    
      break;     // 6 - Skret w prawo


  
   case 0x1C6E01F:

    tyl();
    
      break;     // 8 - Jazda do tylu
      
 
  case 0x1C6906F:
  stop();
 
}


}


void loop() {

if (irrecv.decode(&results))

{

  IRtranslate();
  for (int z = 0 ; z < 2 ; z++) // ignoracja powt.kodu
  {
    irrecv.resume();// odbior nast wartosci
  }
}

}
 

Gwarantuje wszystkim ze rozwiazanie to na 100% zadziała. Został zatosowany odbiornik podczerwieni oraz biblioteka ir Remote. Życze sukcesow wszystkim tym ktorzy buduja zdalnie sterowany pojazdy oraz przesylam swoje rozwiazanie.

image.png

IMG_20210218_183556.jpgIMG_20210218_183548.jpgIMG_20210218_183544.jpg

IMG_20210218_183538.jpg

IMG_20210218_183518.jpg

16136710566822984755455695258331.jpg

16136710739061858249980669315025.jpg

16136710881988989219070436909599.jpg16136710997546995357707208170058.jpg

1613671119281265109214994753064.jpg16136711764112219242189353073537.jpg

Edytowano przez Gieneq
  • Lubię! 2
Link do komentarza
Share on other sites

Mi osobiście najbardziej podoba się zdanie:

1 godzinę temu, mateusz797 napisał:

Predkosci silnikow sa ustawione na 230/255, wiec robot jedzie bardzo szybko.

oraz słowo "ignoracja" 🙂

A plusik za nieustępliwość i odkopanie "starego pilota". Nie ma to jak doświadczona kadra.

Link do komentarza
Share on other sites

Ciesze sie ze sie podoba. I teraz moje pytanie. Do tej pory budowalem takie roboty jak

1. Światłolub

2. Linefollower prowizoryczna wersja 2 czujniki

3. Linefollower ulepszona wersja z 4 czujnikami

4. Omijający przeszkody - (bez serwomechanizmu, sztywno zamontowany czujnik odległości) 

5. Omijający przeszkody z lcd serwomechanizmem (obrotowy czujnik odległości) dioda buzzerem, 

6. Zdalnie sterowany - tylko 2 silniki

7. Teraz juz wiem jak zaprogramować i zbudować z 4 silników czyli z napedem na 4 kola. 

Oceniając moje doswiadczenie to wg Was w jakie tematy arduino po tych konstrukcjach mozna sie zagłębiać ta podstawie doświadczenia? Chodzi o robotyke lub moga byc inne uklady jakieś . 

Kurs cały przerobiłem forbota i tw powyzsze konstrukcje juz budowalem. W gimnazjum liceum i na studiach przerabiałem kursy elektroniki czyli łączenie alarmów kondensatorów tranzystorów diod fotodiod, diod schotkiego fotorezystorów, lcd orac siedmiosegmentowy wyświetlacz tez miałem w rękach. Co dalej byście proponowali? 

Link do komentarza
Share on other sites

(edytowany)

Cześć, 

 

Zamieszczam filmik z działania mojej konstrukcji. Kody z programów znajduja sie ponizej:

1. Odczyt kodow z pilota

#include <IRremote.h>

#define irPin 10

IRrecv irrecv(irPin);
decode_results results;

void setup() {
 Serial.begin(9600);
 irrecv.enableIRIn();
}

void loop() {
  
if (irrecv.decode(&results)) {
  
  Serial.print("0x");
  Serial.println(results.value, HEX);
  delay(500);
  irrecv.resume();
}
}

2. Program na robota IR

 

#include <IRremote.h>


int receiverpin = 10;         // def.PIN odbiornika
IRrecv irrecv (receiverpin);  // nazwa odb
decode_results results;       // odwolanie do odbiornika


const int IN1 = 7;
const int IN2 = 6;
const int IN3 = 4;
const int IN4 = 5;
const int ENA = 11;
const int ENB = 3;            // Piny silników


void setup() {

irrecv.enableIRIn();         // uruchamia odbiornik podczerwieni
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
pinMode (ENA, OUTPUT);
pinMode (ENB, OUTPUT);      // ust.silnikow jako wyjscia



}

void przod() {

digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
analogWrite  (ENA, 230);
analogWrite  (ENB, 230);



}

void lewo() {

digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
analogWrite  (ENA, 230);
analogWrite  (ENB, 230);




}

void prawo() {

digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
analogWrite  (ENA, 230);
analogWrite  (ENB, 230);



}

void tyl() {

digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
analogWrite  (ENA, 230);
analogWrite  (ENB, 230);

}

void stop() {

digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
analogWrite  (ENA, 0);
analogWrite  (ENB, 0);

}

void IRtranslate(){

switch(results.value){
 
   
   case 0x1C6807F:
   
   
   przod();  
   
   break;     // 2 - Jazda do przodu


   
   case 0x1C6C03F:

   lewo();
    
    break;     // 4 - Skret w lewo

   
   case 0x1C6A05F:


    prawo();
    
      break;     // 6 - Skret w prawo


  
   case 0x1C6E01F:

    tyl();
    
      break;     // 8 - Jazda do tylu
      
 
  case 0x1C6906F:
  stop();
 
}


}


void loop() {

if (irrecv.decode(&results))

{

  IRtranslate();
  for (int z = 0 ; z < 2 ; z++) // ignoracja powt.kodu
  {
    irrecv.resume();// odbior nast wartosci
  }
}

}
 

IMG_20210219_091816.jpg

16137278987021038073118465374950.jpg

16137279137276285552760728699132.jpg

16137279227293058184206818958468.jpg

1613727949449978471393217368539.jpg

16137279608523531957190702935590.jpg

16137279710345836043035108839008.jpg

16137279804137298056170890056705.jpg

16137279910693759870900123265839.jpg

Edytowano przez mateusz797
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

Może sam zadaj sobie pytanie "Co mnie bawi?". Jeśli jeżdżące roboty, to możesz budować coraz szybsze lub coraz sprawniejsze. Może popatrz na filmy z zawodów robotycznych? Jest tego trochę, a Polska jest niezła w te klocki. Może któraś konkurencja wyjątkowo przypadnie Ci do gustu? Oprócz znanych i trochę "oklepanych" LFów czy sumo, są także "Ratowania Misia" - autonomiczne i RC, zbieranie puszek w "Ketchup House", autonomiczna jazda/wyścigi po zamkniętym torze, myszy w labiryncie ("Micromouse") czy nawet "Wyścig humanoidów" (nazwa sporo na wyrost, ale same zawody pokracznych bipedów prześmieszne) itd. Mając już jako takie doświadczenie chyba nie warto rozdrabniać się na wąskotematyczne kursy typu "Jak podłączyć LCD" lub "Termometr na Arduino". Dalekosiężny cel w rodzaju "Zbuduję pojazd rysujący na podłodze/kartonie tarczę strzelniczą z podobizną tu_wstaw_nazwisko_ulubionego_polityka" jest dużo ciekawszy, a na pewno po drodze będziesz musiał rozwiązać wiele praktycznych problemów zupełnie niewidocznych na początku. Po takich projektach, a już w szczególności po zmierzeniu się z konstrukcjami innych ludzi doświadczenie, ocena własnego warsztatu i chęci na kolejne podejście rosną wykładniczo 🙂 

  • Lubię! 2
Link do komentarza
Share on other sites

Ciesze sie ze sie podoba. I teraz moje pytanie. Do tej pory budowalem takie roboty jak

1. Światłolub

2. Linefollower prowizoryczna wersja 2 czujniki

3. Linefollower ulepszona wersja z 4 czujnikami

4. Omijający przeszkody - (bez serwomechanizmu, sztywno zamontowany czujnik odległości) 

5. Omijający przeszkody z lcd serwomechanizmem (obrotowy czujnik odległości) dioda buzzerem, 

6. Zdalnie sterowany - tylko 2 silniki

7. Teraz juz wiem jak zaprogramować i zbudować z 4 silników czyli z napedem na 4 kola. 

Oceniając moje doswiadczenie to wg Was w jakie tematy arduino po tych konstrukcjach mozna sie zagłębiać ta podstawie doświadczenia? Chodzi o robotyke lub moga byc inne uklady jakieś . 

Kurs cały przerobiłem forbota i tw powyzsze konstrukcje juz budowalem. W gimnazjum liceum i na studiach przerabiałem kursy elektroniki czyli łączenie alarmów kondensatorów tranzystorów diod fotodiod, diod schotkiego fotorezystorów, lcd orac siedmiosegmentowy wyświetlacz tez miałem w rękach. Co dalej byście proponowali? 

 

1. Napewno chciałbym zbudować jakas konstrukcje z ramieniem i jezdzaca na 4 kolach żeby podnosiła przedmioty. Wykorzystam sterownik sere arduino mega silniki 4dc podwozie robota sterownik L298N serwomechanizmy x4 i np. Pad. To bedzie dlugi projekt wiec poczytam przez rok najpierw o tym rozne materiały za nim zrobie ramię. 

A. 1. Cel. Robot ma jeździć do przodu tylu w lewo w prawo bez ramienia. 

 

B. To co w poprzednim pkcie plus ramie podnoszace przedmioty skladajace się z 4serv tower pro mg 996. Sterowanie padem

 

2.fajnie byloby zbudować system automatycznego podlewania. 

 

Znacie moze jakies materiały dobre zeby przez rok poczytac duzo o tych dwóch projektach? 🙂

Link do komentarza
Share on other sites

To ja pozwolę sobie zasugerować dalszy kierunek rozwoju:

- Z programowania to pisanie własnych bibliotek na podstawie data sheet układu który masz zamiar zastosować.
- Z robotyki z ambitnych tematów to może micromouse.

Pozdr,
Marek

 

Link do komentarza
Share on other sites

Dnia 19.02.2021 o 12:44, mateusz797 napisał:

To bedzie dlugi projekt wiec poczytam przez rok najpierw o tym rozne materiały za nim zrobie ramię. 

ROK?! Przez rok mógłbyś poczytać i zbudować co najmniej jakiegoś potężnego mecha, a nie samochodzik z ramieniem na małych serwach po 10 złotych każde 😉(oczywiście jeżeli robot ma być w pełni autonomiczny to trochę więcej czasu, ale nie rok). Co do materiałów, możesz znaleźć w internecie informacje na każdy temat. Ja bym na początku zaplanował sobie samą budowę. Jeżeli nie wiedziałbym, jak mam rozwiązać jakiś problem, zapytałbym wujka "gugiela". Moim zdaniem siedzenie przez rok na tyłku i czytanie artykułów o "samochodziku z ramieniem na serwach" nie ma najmniejszego sensu

Link do komentarza
Share on other sites

(edytowany)

Ok mam nastepujacy plan. Wydrukowa to wszystko i czytac sobie w wolnym czasie.

1. Zapoznac sie czym wogole jest pad dla arduino, jak odbywa sie sterowanie, zrozumienie biblioteki, podlaczen

Opis tutaj GamePad - bezprzewodowy kontroler z odbiornikiem Botland - Sklep dla robotyków str. Botland

2. Budowa konstrukcji na czterech kolach ktora bedzie odiberac sygnaly z game pada - jazda prosto, w prawo, w lewo, do tylu. Tutaj jest pokazane jak sterowac silnikami w robocie. 

Arduino Robot With PS2 Controller (PlayStation 2 Joystick) : 10 Steps (with Pictures) - Instructables

3. Najtrudniejsze zadanie - dobudowa ramienia i sterowanie nim. I tutaj jest zagadka do rozwiazania. Serwomechanizmy maja swoje funkcje ale teraz pyt.

a) Czy sterowanie serwomechanizmami w manipulatorach odbywa sie na takiej zasadzie ze - im wiecej odchylimy drążek tym o wiekszy kąt obroci sie serwo,a im mniej to mniej

b) Czy nadajemy w nich sztywne wartosci. Czyli np. wychylenie drazka i tak obroci nam serwo o sztywna wartosc - np. 120st.

Szukam jakich fajnych materialow zeby o tym poczytac

Z takich elementow bd sie skladac robot:

a) Sterownik serw oraz silnikow L298N

b) Silniki DC x 4 (12V lub 6V)

c) Akumulator 11,1V Lipol

d) Arduino Mega

e) podwozie jakies z Chin sie zamówi

Edytowano przez mateusz797
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.