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

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ę »

×