Skocz do zawartości
Krzychu97

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

Pomocna odpowiedź

Napisano (edytowany)

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

Udostępnij ten post


Link to post
Share on other sites

@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

Udostępnij ten post


Link to post
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!

Gość
Napisz odpowiedź...

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