Innholdsfortegnelse:

Bevegelseskontrollert trådløs bil: 7 trinn
Bevegelseskontrollert trådløs bil: 7 trinn

Video: Bevegelseskontrollert trådløs bil: 7 trinn

Video: Bevegelseskontrollert trådløs bil: 7 trinn
Video: CS50 2014 – 9-я неделя 2024, November
Anonim
Bevegelseskontrollert trådløs bil
Bevegelseskontrollert trådløs bil

I denne opplæringen skal vi lære hvordan du lager en geststyrt bil eller hvilken som helst robot. Dette prosjektet har to deler, en del er senderenhet og den andre delen er mottakerenhet. Senderenheten er faktisk montert på en hånd hansker og mottakerenheten er plassert inne i en bil eller en hvilken som helst robot. Nå er det på tide å lage en fin bil. La oss gå!

Trinn 1: Utstyr

Senderenhet

1. Arduino Nano.

2. MPU6050 sensormodul.

3. RF 433 MHz sender.

4. Alle typer 3 -cellers, 11,1 volt batteri (her har jeg brukt myntcelle).

5. Vero-Board.

6. Håndhansker.

Mottakerenhet

1. Arduino Nano eller Arduino Uno.

2. L298N -motorførermodul.

3. 4 -hjulet robotramme inkludert motorer.

4. RF 433 RF -mottaker.

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

6. Vero-board.

Andre

1. Lim pinner og pistol.

2. Hoppetråder.

3. Skrutrekkere

4. Loddesett.

etc.

Trinn 2: Bildefil for kretsdiagram

Kretsdiagram bildefil
Kretsdiagram bildefil

Trinn 3: Fritzing File of Circuit Diagram

Trinn 4: Senderkode

#inkludere

#inkludere

#inkludere

MPU6050 mpu6050 (Wire);

lang timer = 0;

røye *kontroller;

ugyldig oppsett ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (true); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // hastigheten på dataoverføring Kbps

}

hulrom ()

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

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 (); }

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

if (mpu6050.getAccAngleX () 30) {kontroller = "X2"; vw_send ((uint8_t *) kontroller, strlen (kontroller)); vw_wait_tx (); // Vent til hele meldingen er borte Serial.println ("FORWARD"); } annet hvis (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) kontroller, strlen (kontroller)); vw_wait_tx (); // Vent til hele meldingen er borte Serial.println ("LEFT"); } annet hvis (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) kontroller, strlen (kontroller)); vw_wait_tx (); // Vent til hele meldingen er borte Serial.println ("HØYRE"); } annet hvis (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) kontroller, strlen (kontroller)); vw_wait_tx (); // Vent til hele meldingen er borte Serial.println ("STOP"); }}

Trinn 5: Mottakerkode

#inkludere

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; ugyldig oppsett () {Serial.begin (9600); vw_set_ptt_inverted (true); // Påkrevd 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 mottakeren 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-blokkerende

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); bakover (); forsinkelse (100); //av(); } annet hvis ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); framover(); forsinkelse (100); //av(); }

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

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

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

{Serial.println ("HØYRE"); Ikke sant(); forsinkelse (100); //av(); } annet hvis ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); av(); forsinkelse (100); }} else {Serial.println ("Ingen signal mottatt"); }}

ugyldig fremover ()

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

ugyldig bakover ()

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

tomt igjen ()

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

ugyldig rett ()

{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); }

Trinn 6: INO -filer

Trinn 7: Link of Libraries

Virtual Wire Library:

MPU6050_tockn Libraby:

Wire Library:

Anbefalt: