Skocz do zawartości

Krzychu97

Użytkownicy
  • Zawartość

    3
  • Rejestracja

  • Ostatnio

Wszystko napisane przez Krzychu97

  1. 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. 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. 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: Schemat układu pilota: 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.
×
×
  • Utwórz nowe...