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: The Third Industrial Revolution: A Radical New Sharing Economy 2024, Novembar
Anonim
Bežični automobil kontroliran pokretima
Bežični automobil kontroliran pokretima

U ovom ćemo vodiču naučiti kako napraviti automobil s kontrolom pokreta ili bilo kojeg robota. Ovaj projekt ima dva dijela, jedan dio je predajna jedinica, a drugi prijemna jedinica. Odašiljač se zapravo montira na rukavice, a prijemnik se nalazi u automobilu ili bilo kojem robotu. Sada je vrijeme da napravite lijep automobil. Idemo!

Korak 1: Oprema

Jedinica predajnika

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 dugmastog oblika).

5. Vero-Board.

6. Rukavice.

Prijemna jedinica

1. Arduino Nano ili Arduino Uno.

2. L298N Modul pokretača motora.

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

4. RF 433 RF prijemnik.

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

6. Vero-board.

Drugi

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

2. Žice za kratkospojnike.

3. Odvijači

4. Komplet za lemljenje.

itd.

Korak 2: Datoteka slike dijagrama kola

Datoteka slike dijagrama kola
Datoteka slike dijagrama kola

Korak 3: Dopuna datoteke dijagrama kruga

Korak 4: Kod predajnika

#include

#include

#include

MPU6050 mpu6050 (žica);

tajmer = 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 ("LEFT"); } 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

#include

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"); backward (); kašnjenje (100); //isključeno(); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); forward (); 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"); desno (); kašnjenje (100); //isključeno(); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); isključeno(); kašnjenje (100); }} else {Serial.println ("Nije primljen signal"); }}

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: Veza biblioteka

Virtualna biblioteka žica:

MPU6050_tockn Libraby:

Wire Library:

Preporučuje se: