Skocz do zawartości

Pojazd i pilot komunikujące się z użyciem IR


Krzychu97

Pomocna odpowiedź

WSTĘP

Mój projekt składa się z dwóch współpracujących układów działających dzięki mikrokontrolerowi Arduino Uno: pojazdu oraz pilota do sterowania. Pojazd posiada silnik DC napędzający wał z tylnymi  kołami oraz serwomechanizm odpowiadający za skręcanie. Urządzenie jest wyposażone w akumulator li-pol zasilający mikrokontroler i silniki. Pilot powstał z użyciem modułu joysticka, który umożliwia analogowe sterowanie prędkością i kierunkiem jazdy pojazdu. Urządzenia komunikują się z wykorzystaniem podczerwieni, pilot wyposażony jest w nadajnik IR, a pojazd w odbiornik IR.

image.thumb.png.acb9b194e0048df56a08fd0db37f3803.png

image.thumb.png.fff36304cfb3cf80ed3ee953fcd01099.png

MECHANIKA

Mechaniczna konstrukcja pojazdu została wykonana z plastikowej butelki. Skrętne koło zostało wymontowane z starego krzesła obrotowego. Układ pilota znajduje się w obudowie z odpowiednio wyciętego kartonowego pudełka.

image.thumb.png.d8fdb0aac476400a9f153b51df9273d3.png

image.thumb.png.7ec529dd36cb95cf22c9b5b237cde21d.png

image.thumb.png.8c1de63bd38d134265a4eefd6d07dfec.png

image.thumb.png.64f444d0cda8e1410849b1e61da8c632.png

ELEKTRONIKA

Oba układy są zlutowane na uniwersalnych płytkach. Płytki zostały wyposażone w listwę goldpinów, które wtyka się w Arduino. Dzięki temu rozwiązaniu możemy wyciągnąć Arduino i użyć go w innym projekcie bez potrzeby niszczenia trwałych połączeń. Pojazd jest wyposażony w jednokanałowy sterownik silnika.

Schemat układu pojazdu:

image.thumb.png.997646b2287486b53855248c11140801.png

Schemat układu pilota:

image.thumb.png.eb4a4d2b71d8d196544a8256d552f77a.png

Schematy połączeń stworzono z użyciem programu do projektowania i symulowania obwodów elektronicznych EasyEDA.

OPROGRAMOWANIE

Najważniejsze fragmenty kodu pilota:

  valueX = analogRead(joyX) / 100;           
  valueY = analogRead(joyY) / 100;   
  isPress = !digitalRead(button);

  data0 = String(isPress, HEX);
  data1 = String(valueX, HEX);
  data2 = String(valueY, HEX);

  if (isPress == 0)
    dataSend += "1";
  else
    dataSend += "2";
  
  dataSend += data1 + data2;
  
  for (int i = 0; i < 3; i++) 
  {
  	 irsend.sendSony(StrToHex(dataSend.c_str()), 12);
	 delay(40);
  }

Program odczytuje pozycję X oraz Y joysticka oraz czy jest on wciśnięty. Następnie pilot wysyła komunikaty zapisane w systemie szesnastkowym. Są to trzy cyfry: pierwsza stan przycisku (0x1 nie wciśnięty, 0x2 wciśnięty), druga kąt ustawienia serwomechanizmu (od 0x0 do 0xA, 0x0 to ustawienie serwomechanizmu maksymalnie w lewo, 0x5 ustawienie serwomechanizmu prosto, 0xA ustawienie serwomechanizmu maksymalnie w prawo) i trzecia prędkość obrotów silnika (od 0x0 do 0xA, 0x0 to maksymalne obroty do tyłu, 0x5 silnik nie pracuje, 0xA maksymalne obroty do przodu). Przykładowy sygnał 0x171 oznacza serwomechanizm ustawiony delikatnie w prawo oraz prawie maksymalna prędkość w tył. Wszystkie dłuższe sygnały są ignorowane, dzięki czemu ograniczony zostaje wpływ zakłóceń na układ. Stan przycisku nie jest używany przez pojazd ale nic nie stoi na przeszkodzie, aby rozbudować projekt o nową funkcjonalność, jak na przykład zapalanie świateł czy sygnał dźwiękowy. 

Najważniejsze fragmenty kodu pojazdu:

  if (irrecv.decode(&results)) 
  {
    IRcommand = String(results.value, HEX);
    
    if (IRcommand.length() == 3)
    {      
      tmp = IRcommand.charAt(1);  
      setTurn(hexChar2Int(tmp));
      tmp = IRcommand.charAt(2);
      setSpeed(hexChar2Int(tmp));
    }
    
    irrecv.resume();
  }

Program używa drugiego i trzeciego znaku do ustawienia kolejno odpowiedniej prędkości oraz kąta obrotu serwomechanizmu.

Oba programy wykorzystują bibliotekę <IRremote.h> do komunikacji z użyciem podczerwieni. Dodatkowo program pojazdu korzysta z biblioteki <Servo.h>.

Program użyty do napisania programowania mikrokontrolerów to Arduino Software.

 

 

 

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

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

@Krzychu97, właśnie zaakceptowałem Twój opis, możesz go teraz zgłosić do akcji rabatowej umieszczając link w temacie zbiorczym. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum  🙂

Aż ciężko uwierzyć, że to ma jeździć, a jak widać po filmikach radzi sobie całkiem dobrze. Dość oryginalny projekt i nie ukrywam, że trochę na granicy akceptacji do naszej zabawy, ale doceniam kreatywność i akceptuję 😉

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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.