Obsah:

Bezdrôtové auto ovládané gestami: 7 krokov
Bezdrôtové auto ovládané gestami: 7 krokov

Video: Bezdrôtové auto ovládané gestami: 7 krokov

Video: Bezdrôtové auto ovládané gestami: 7 krokov
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, November
Anonim
Bezdrôtové auto ovládané gestami
Bezdrôtové auto ovládané gestami

V tomto návode sa naučíme, ako vyrobiť auto alebo akéhokoľvek robota ovládaného gestami. Tento projekt má dve časti, jedna časť je vysielacia a druhá časť je prijímacia. Vysielacia jednotka je v skutočnosti namontovaná na ručných rukaviciach a prijímacia jednotka je umiestnená vo vnútri auta alebo akéhokoľvek robota. Teraz je čas urobiť pekné auto. Poďme!

Krok 1: Vybavenie

Vysielacia jednotka

1. Arduino Nano.

2. Snímací modul MPU6050.

3. Vysielač RF 433 MHz.

4. Akýkoľvek typ 3 -článkovej, 11,1 -voltovej batérie (tu som použil gombíkový článok).

5. Vero-Board.

6. Ručné rukavice.

Prijímacia jednotka

1. Arduino Nano alebo Arduino Uno.

2. Modul ovládača motora L298N.

3. Rám 4 -kolesového robota vrátane motorov.

4. RF 433 RF prijímač.

5. 3článková Li-po batéria 11,1 voltov.

6. Vero-board.

Iní

1. Lepiace tyčinky a pištoľ.

2. prepojovacie vodiče.

3. Skrutkovače

4. Súprava na spájkovanie.

atď.

Krok 2: Obrazový diagram schémy zapojenia

Obrázkový súbor schémy zapojenia
Obrázkový súbor schémy zapojenia

Krok 3: Fritzingový súbor schémy zapojenia

Krok 4: Kód vysielača

#zahrnúť

#zahrnúť

#zahrnúť

MPU6050 mpu6050 (drôt);

dlhý časovač = 0;

regulátor char *;

neplatné nastavenie ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (true); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // rýchlosť prenosu dát Kbps

}

prázdna slučka ()

{ ////////////////////////////////////////////////////////////////////////////////////////////////

mpu6050.update ();

ak (milis () - časovač> 1000)

{Serial.println ("==================================================== ============ "); Serial.print ("temp:"); Serial.println (mpu6050.getTemp ()); Serial.print ("accX:"); Serial.print (mpu6050.getAccX ()); Serial.print ("\ taccY:"); Serial.print (mpu6050.getAccY ()); Serial.print ("\ taccZ:"); Serial.println (mpu6050.getAccZ ()); Serial.print ("gyroX:"); Serial.print (mpu6050.getGyroX ()); Serial.print ("\ tgyroY:"); Serial.print (mpu6050.getGyroY ()); Serial.print ("\ tgyroZ:"); Serial.println (mpu6050.getGyroZ ()); Serial.print ("accAngleX:"); Serial.print (mpu6050.getAccAngleX ()); Serial.print ("\ taccAngleY:"); Serial.println (mpu6050.getAccAngleY ()); Serial.print ("gyroAngleX:"); Serial.print (mpu6050.getGyroAngleX ()); Serial.print ("\ tgyroAngleY:"); Serial.print (mpu6050.getGyroAngleY ()); Serial.print ("\ tgyroAngleZ:"); Serial.println (mpu6050.getGyroAngleZ ()); Serial.print ("angleX:"); Serial.print (mpu6050.getAngleX ()); Serial.print ("\ tangleY:"); Serial.print (mpu6050.getAngleY ()); Serial.print ("\ tangleZ:"); Serial.println (mpu6050.getAngleZ ()); Serial.println ("===================================================== =========== / n "); časovač = milis (); }

/////////////////////////////////////////////////////////////////////////////////////

if (mpu6050.getAccAngleX () 30) {radič = "X2"; vw_send ((uint8_t *) radič, strlen (ovládač)); vw_wait_tx (); // Počkajte, kým sa neodstráni celá správa Serial.println ("Vpred"); } else if (mpu6050.getAccAngleY ()> 40) {kontroler = "Y1"; vw_send ((uint8_t *) radič, strlen (ovládač)); vw_wait_tx (); // Počkajte, kým nezmizne celá správa Serial.println ("VLEVO"); } else if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) radič, strlen (ovládač)); vw_wait_tx (); // Počkajte, kým sa neodstráni celá správa Serial.println ("RIGHT"); } else if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {kontroler = "A1"; vw_send ((uint8_t *) radič, strlen (ovládač)); vw_wait_tx (); // Počkajte, kým sa neodstráni celá správa Serial.println ("STOP"); }}

Krok 5: Kód prijímača

#zahrnúť

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (true); // Vyžadované pre DR3100 vw_set_rx_pin (12); vw_setup (4000); // bitov za sekundu pinMode (13, VÝSTUP); pinMode (LA, VÝSTUP); pinMode (LB, VÝSTUP); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Spustite prijímač PLL so spustením Serial.println ("Všetko v poriadku");

}

prázdna slučka () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message (buf, & buflen)) // Neblokujúce

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); dozadu (); oneskorenie (100); // off (); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); dopredu (); oneskorenie (100); // off (); }

else if ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("VLEVO"); vľavo (); oneskorenie (100); // off (); }

else if ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("RIGHT"); správny(); oneskorenie (100); // off (); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); vypnuté (); oneskorenie (100); }} else {Serial.println ("Žiadny signál prijatý"); }}

neplatné dopredu ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }

neplatné dozadu ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }

prázdno vľavo ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 70); analogWrite (RB, 0); }

zrušiť právo ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 70); }

zrušiť ()

{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }

Krok 6: Súbory INO

Krok 7: Odkaz na knižnice

Virtuálna knižnica drôtov:

MPU6050_tockn Libraby:

Knižnica drôtov:

Odporúča: