Obsah:

Bezdrátové auto ovládané gesty: 7 kroků
Bezdrátové auto ovládané gesty: 7 kroků

Video: Bezdrátové auto ovládané gesty: 7 kroků

Video: Bezdrátové auto ovládané gesty: 7 kroků
Video: TOP 10 Tajné funkce mobilu o kterých 90% lidí neví 2024, Listopad
Anonim
Bezdrátové auto ovládané gesty
Bezdrátové auto ovládané gesty

V tomto tutoriálu se naučíme, jak vyrobit auto nebo robota ovládaného gesty. Tento projekt má dvě části, jedna část je vysílací jednotka a druhá část je přijímací jednotka. Vysílací jednotka je ve skutečnosti namontována na ručních rukavicích a přijímací jednotka je umístěna uvnitř automobilu nebo jakéhokoli robota. Nyní je čas udělat pěkné auto. Pojďme!

Krok 1: Vybavení

Vysílací jednotka

1. Arduino Nano.

2. Senzorový modul MPU6050.

3. Vysílač RF 433 MHz.

4. Jakýkoli typ 3článkové 11,1voltové baterie (zde jsem použil knoflíkový článek).

5. Vero-Board.

6. Ruční rukavice.

Přijímací jednotka

1. Arduino Nano nebo Arduino Uno.

2. Modul ovladače motoru L298N.

3. Rám 4kolového robota včetně motorů.

4. RF 433 RF přijímač.

5. 3článková Li-po baterie 11,1 voltů.

6. Vero-board.

Ostatní

1. Lepicí tyčinky a pistole.

2. Propojovací vodiče.

3. Šroubováky

4. Pájecí sada.

atd.

Krok 2: Soubor obrázku schématu zapojení

Soubor obrázku diagramu obvodu
Soubor obrázku diagramu obvodu

Krok 3: Fritzování souboru schématu zapojení

Krok 4: Kód vysílače

#zahrnout

#zahrnout

#zahrnout

MPU6050 mpu6050 (drát);

dlouhý časovač = 0;

char *řadič;

neplatné nastavení ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (true); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // rychlost přenosu dat Kbps

}

prázdná smyčka ()

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

mpu6050.update ();

if (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) {řadič = "X2"; vw_send ((uint8_t *) řadič, strlen (řadič)); vw_wait_tx (); // Počkejte, až celá zpráva zmizí Serial.println ("FORWARD"); } else if (mpu6050.getAccAngleY ()> 40) {řadič = "Y1"; vw_send ((uint8_t *) řadič, strlen (řadič)); vw_wait_tx (); // Počkejte, až celá zpráva zmizí Serial.println ("VLEVO"); } else if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) řadič, strlen (řadič)); vw_wait_tx (); // Počkejte, až celá zpráva zmizí Serial.println ("RIGHT"); } else if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {řadič = "A1"; vw_send ((uint8_t *) řadič, strlen (řadič)); vw_wait_tx (); // Počkejte, až celá zpráva zmizí Serial.println ("STOP"); }}

Krok 5: Kód přijímače

#zahrnout

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; neplatné nastavení () {Serial.begin (9600); vw_set_ptt_inverted (true); // Povinné pro DR3100 vw_set_rx_pin (12); vw_setup (4000); // bitů za sekundu pinMode (13, VÝSTUP); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Spusťte přijímač PLL se spuštěním Serial.println ("Vše v pořádku");

}

void loop () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message (buf, & buflen)) // Neblokující

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); dozadu (); zpoždění (100); //vypnuto(); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); vpřed(); zpoždění (100); //vypnuto(); }

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

{Serial.println ("VLEVO"); vlevo, odjet(); zpoždění (100); //vypnuto(); }

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

{Serial.println ("RIGHT"); že jo(); zpoždění (100); //vypnuto(); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); vypnuto(); zpoždění (100); }} else {Serial.println ("Nebyl přijat žádný signál"); }}

neplatné dopředu ()

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

neplatné zpět ()

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

prázdno vlevo ()

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

neplatné právo ()

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

zrušit ()

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

Krok 6: Soubory INO

Krok 7: Propojení knihoven

Virtuální drátěná knihovna:

MPU6050_tockn Libraby:

Knihovna drátů:

Doporučuje: