Sisukord:

Žestidega juhitav traadita auto: 7 sammu
Žestidega juhitav traadita auto: 7 sammu

Video: Žestidega juhitav traadita auto: 7 sammu

Video: Žestidega juhitav traadita auto: 7 sammu
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, November
Anonim
Žestidega juhitav traadita auto
Žestidega juhitav traadita auto

Selles õpetuses õpime, kuidas teha žestiga juhitavat autot või robotit. Sellel projektil on kaks osa, üks osa on saatja ja teine osa vastuvõtja. Saatja on tegelikult paigaldatud käsikindadele ja vastuvõtuseade on paigutatud autosse või robotisse. Nüüd on aeg teha kena auto. Lähme!

Samm: seadmed

Saatja üksus

1. Arduino Nano.

2. MPU6050 andurimoodul.

3. RF 433 MHz saatja.

4. Igat tüüpi 3 -elemendiline, 11,1 -voldine aku (siin olen kasutanud mündielementi).

5. Vero-Board.

6. Käekindad.

Vastuvõtja

1. Arduino Nano või Arduino Uno.

2. L298N mootorijuhi moodul.

3. neljarattaline robotraam, sealhulgas mootorid.

4. RF 433 RF vastuvõtja.

5. 3-cell, 11,1 volti Li-po aku.

6. Vero-pardal.

Teised

1. Liimipulgad ja püstol.

2. Jumper juhtmed.

3. Kruvikeerajad

4. Jootekomplekt.

jne.

2. samm: vooluahela pildifail

Vooluahela pildifail
Vooluahela pildifail

3. etapp: vooluahela diagrammi fail

4. samm: saatja kood

#kaasake

#kaasake

#kaasake

MPU6050 mpu6050 (traat);

pikk taimer = 0;

char *kontroller;

tühine seadistus ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (tõene); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // andmeedastuskiirus Kbps

}

tühine tsükkel ()

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

mpu6050.update ();

kui (millis () - taimer> 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 "); taimer = millis (); }

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

if (mpu6050.getAccAngleX () 30) {kontroller = "X2"; vw_send ((uint8_t *) kontroller, strlen (kontroller)); vw_wait_tx (); // Oota, kuni kogu sõnum on kadunud Serial.println ("FORWARD"); } else if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) kontroller, strlen (kontroller)); vw_wait_tx (); // Oota, kuni kogu sõnum on kadunud Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) kontroller, strlen (kontroller)); vw_wait_tx (); // Oota, kuni kogu sõnum on kadunud Serial.println ("RIGHT"); } else if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {kontroller = "A1"; vw_send ((uint8_t *) kontroller, strlen (kontroller)); vw_wait_tx (); // Oota, kuni kogu sõnum on kadunud Serial.println ("STOP"); }}

Samm: vastuvõtja kood

#kaasake

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (true); // Nõutav DR3100 jaoks vw_set_rx_pin (12); vw_setup (4000); // bitti sekundis pinMode (13, OUTPUT); pinMode (LA, VÄLJUND); pinMode (LB, OUTPUT); pinMode (RA, VÄLJUND); pinMode (RB, OUTPUT); vw_rx_start (); // Käivitage vastuvõtja PLL, käivitades Serial.println ("Kõik OK");

}

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

if (vw_get_message (buf & buflen)) // Mitteblokeeriv

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); tagurpidi (); viivitus (100); //väljas(); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); edasi (); viivitus (100); //väljas(); }

muidu kui ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("LEFT"); vasak (); viivitus (100); //väljas(); }

muidu kui ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("ÕIGE"); paremal (); viivitus (100); //väljas(); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); väljas(); viivitus (100); }} else {Serial.println ("Signaali ei saadud"); }}

tühine edasi ()

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

tühine tagurpidi ()

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

tühi jäänud ()

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

tühine õigus ()

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

tühine ()

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

Samm: INO -failid

7. samm: raamatukogude link

Virtuaalse traadi raamatukogu:

MPU6050_tockn Libraby:

Juhtmeraamatukogu:

Soovitan: