Sadržaj:

Bežični automobil kontroliran pokretima: 7 koraka
Bežični automobil kontroliran pokretima: 7 koraka

Video: Bežični automobil kontroliran pokretima: 7 koraka

Video: Bežični automobil kontroliran pokretima: 7 koraka
Video: Hören & Verstehen - Prüfungsvorbereitung B2/C1 2024, Studeni
Anonim
Bežični automobil kontroliran pokretima
Bežični automobil kontroliran pokretima

U ovom ćemo vodiču naučiti kako izraditi automobil s gestama ili bilo kojeg robota. Ovaj projekt ima dva dijela, jedan dio je odašiljačka jedinica, a drugi dio je prijemna jedinica. Odašiljač je zapravo montiran na rukavice, a prijemnik je smješten unutar automobila ili bilo kojeg robota. Sada je vrijeme da napravite lijep automobil. Idemo!

Korak 1: Oprema

Jedinica odašiljača

1. Arduino Nano.

2. Senzorski modul MPU6050.

3. RF predajnik 433 MHz.

4. Bilo koja vrsta 3 ćelije, baterija od 11,1 volta (ovdje sam koristio ćeliju za dugmad).

5. Vero-Board.

6. Rukavice za ruke.

Prijemna jedinica

1. Arduino Nano ili Arduino Uno.

2. L298N Modul pokretača motora.

3. Okvir robota s 4 kotača uključujući motore.

4. RF 433 RF prijemnik.

5. Li-po baterija s 3 ćelije, 11,1 volti.

6. Vero-ploča.

Drugi

1. Ljepljivi štapići i pištolj.

2. Kratkospojne žice.

3. Odvijači

4. Komplet za lemljenje.

itd.

Korak 2: Datoteka slike dijagrama kruga

Datoteka slike dijagrama kruga
Datoteka slike dijagrama kruga

Korak 3: Filtriranje datoteke kruga dijagrama

Korak 4: Kôd odašiljača

#uključi

#uključi

#uključi

MPU6050 mpu6050 (žica);

long timer = 0;

char *kontroler;

void setup ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (true); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // brzina prijenosa podataka Kbps

}

void loop ()

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

mpu6050.update ();

if (millis () - mjerač vremena> 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) {kontroler = "X2"; vw_send ((uint8_t *) kontroler, strlen (kontroler)); vw_wait_tx (); // Pričekajte dok cijela poruka ne nestane Serial.println ("NAPRIJED"); } else if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) kontroler, strlen (kontroler)); vw_wait_tx (); // Pričekajte dok cijela poruka ne nestane Serial.println ("LIJEVO"); } else if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) kontroler, strlen (kontroler)); vw_wait_tx (); // Pričekajte dok cijela poruka ne nestane Serial.println ("RIGHT"); } else if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) kontroler, strlen (kontroler)); vw_wait_tx (); // Pričekajte dok cijela poruka ne nestane Serial.println ("STOP"); }}

Korak 5: Kôd prijemnika

#uključi

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (true); // Potrebno za DR3100 vw_set_rx_pin (12); vw_setup (4000); // bitovi u sekundi pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Pokretanje PLL prijemnika pomoću Serial.println ("Sve u redu");

}

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

if (vw_get_message (buf, & buflen)) // Ne blokira

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("NAZAD"); unazad(); kašnjenje (100); // isključeno (); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("NAPRIJED"); naprijed(); kašnjenje (100); // isključeno (); }

inače if ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("LIJEVO"); lijevo(); kašnjenje (100); // isključeno (); }

inače if ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("DESNO"); pravo(); kašnjenje (100); // isključeno (); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); off (); kašnjenje (100); }} else {Serial.println ("Nema primljenog signala"); }}

void forward ()

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

void backward ()

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

praznina lijevo ()

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

void right ()

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

void off ()

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

Korak 6: INO datoteke

Korak 7: Povezivanje knjižnica

Virtualna knjižnica žica:

MPU6050_tockn Libraby:

Knjižnica Wire:

Preporučeni: