Indholdsfortegnelse:

Gesture -kontrolleret trådløs bil: 7 trin
Gesture -kontrolleret trådløs bil: 7 trin

Video: Gesture -kontrolleret trådløs bil: 7 trin

Video: Gesture -kontrolleret trådløs bil: 7 trin
Video: Йога на все тело ЖИРОСЖИГАЮЩИЙ комплекс. Ускоряем метаболизм и улучшаем работу эндокринной системы 2024, December
Anonim
Gestusstyret trådløs bil
Gestusstyret trådløs bil

I denne vejledning lærer vi, hvordan man laver en gestusstyret bil eller en hvilken som helst robot. Dette projekt har to dele, den ene del er senderenhed og den anden del er modtagerenhed. Senderenheden er faktisk monteret på en håndhandsker, og modtagerenheden er placeret inde i en bil eller en hvilken som helst robot. Nu er det tid til at lave en lækker bil. Lad os gå!

Trin 1: Udstyr

Senderenhed

1. Arduino Nano.

2. MPU6050 sensormodul.

3. RF 433 MHz sender.

4. Enhver type 3 -cellers, 11,1 volt batteri (her har jeg brugt møntcelle).

5. Vero-Board.

6. Håndhandsker.

Modtager enhed

1. Arduino Nano eller Arduino Uno.

2. L298N -motordrivermodul.

3. 4 -hjulet robotramme inklusive motorer.

4. RF 433 RF -modtager.

5. 3 celle, 11,1 volt Li-po batteri.

6. Vero-board.

Andre

1. Lim stifter og pistol.

2. Jumper -ledninger.

3. Skruetrækkere

4. Loddesæt.

etc.

Trin 2: Kredsløbsdiagram -billedfil

Kredsløbsdiagram billedfil
Kredsløbsdiagram billedfil

Trin 3: Fritzing File of Circuit Diagram

Trin 4: Senderkode

#omfatte

#omfatte

#omfatte

MPU6050 mpu6050 (Wire);

lang timer = 0;

char *controller;

ugyldig opsætning ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (true); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // hastighed for dataoverførsel Kbps

}

hulrum ()

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

mpu6050.update ();

hvis (millis () - timer> 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 "); timer = millis (); }

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

hvis (mpu6050.getAccAngleX () 30) {controller = "X2"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Vent til hele meddelelsen er væk Serial.println ("FREM"); } ellers hvis (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Vent til hele meddelelsen er væk Serial.println ("LEFT"); } ellers hvis (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Vent til hele meddelelsen er væk Serial.println ("HØJRE"); } ellers hvis (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Vent til hele meddelelsen er væk Serial.println ("STOP"); }}

Trin 5: Modtagerkode

#omfatte

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; ugyldig opsætning () {Serial.begin (9600); vw_set_ptt_inverted (true); // Påkrævet for DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bits per sec pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Start modtageren PLL med Serial.println ("Alt OK");

}

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

if (vw_get_message (buf, & buflen)) // Ikke-blokerende

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); baglæns(); forsinkelse (100); //af(); } ellers hvis ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FREM"); frem(); forsinkelse (100); //af(); }

ellers hvis ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("LEFT"); venstre(); forsinkelse (100); //af(); }

ellers hvis ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("HØJRE"); ret(); forsinkelse (100); //af(); } ellers hvis ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); af(); forsinkelse (100); }} else {Serial.println ("Intet signal modtaget"); }}

tomrum frem ()

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

tomrum baglæns ()

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

tomrum tilbage ()

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

ugyldig ret ()

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

annullere ()

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

Trin 6: INO -filer

Trin 7: Link af biblioteker

Virtual Wire Library:

MPU6050_tockn Libraby:

Wire Library:

Anbefalede: