Sisällysluettelo:

Eleohjattu langaton auto: 7 vaihetta
Eleohjattu langaton auto: 7 vaihetta

Video: Eleohjattu langaton auto: 7 vaihetta

Video: Eleohjattu langaton auto: 7 vaihetta
Video: Android Auto Apple Carplay БЕСПРОВОДНОЙ В ЛЮБОЙ АВТОМОБИЛЬ!!! 2024, Marraskuu
Anonim
Eleohjattu langaton auto
Eleohjattu langaton auto

Tässä opetusohjelmassa aiomme oppia tekemään eleohjatun auton tai minkä tahansa robotin. Tässä projektissa on kaksi osaa, yksi osa on lähetinyksikkö ja toinen osa vastaanotinyksikkö. Lähetinyksikkö on itse asiassa asennettu käsineisiin ja vastaanotinyksikkö on sijoitettu autoon tai robottiin. Nyt on aika tehdä hieno auto. Mennään!

Vaihe 1: Laitteet

Lähetinyksikkö

1. Arduino Nano.

2. MPU6050 -anturimoduuli.

3. RF 433 MHz -lähetin.

4. Mikä tahansa 3 -kennoinen, 11,1 voltin akku (tässä olen käyttänyt nappiparistoa).

5. Vero-Board.

6. Käsineet.

Vastaanotinyksikkö

1. Arduino Nano tai Arduino Uno.

2. L298N -moottorin ohjainmoduuli.

3. 4 -pyöräinen robotirunko, mukaan lukien moottorit.

4. RF 433 RF -vastaanotin.

5. 3-kennoinen, 11,1 voltin Li-po-akku.

6. Vero-board.

Muut

1. Liimapuikot ja ase.

2. Hyppyjohdot.

3. Ruuvitaltat

4. Juotosarja.

jne.

Vaihe 2: Piirikaavion kuvatiedosto

Piirikaavion kuvatiedosto
Piirikaavion kuvatiedosto

Vaihe 3: Piirikaavion hajotus

Vaihe 4: Lähettimen koodi

#sisältää

#sisältää

#sisältää

MPU6050 mpu6050 (lanka);

pitkä ajastin = 0;

char *-ohjain;

mitätön asennus ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (tosi); vw_set_ptt_inverted (tosi); // vw_set_tx_pin (10); vw_setup (4000); // tiedonsiirtonopeus Kbps

}

tyhjä silmukka ()

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

mpu6050.update ();

jos (millis () - ajastin> 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 "); ajastin = millis (); }

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

if (mpu6050.getAccAngleX () 30) {controller = "X2"; vw_send ((uint8_t *) ohjain, strlen (ohjain)); vw_wait_tx (); // Odota, kunnes koko viesti on poissa Serial.println ("FORWARD"); } else if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) ohjain, strlen (ohjain)); vw_wait_tx (); // Odota, kunnes koko viesti on poissa Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) ohjain, strlen (ohjain)); vw_wait_tx (); // Odota, kunnes koko viesti on poissa Serial.println ("OIKEA"); } else if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) ohjain, strlen (ohjain)); vw_wait_tx (); // Odota, kunnes koko viesti on poissa Serial.println ("STOP"); }}

Vaihe 5: Vastaanottimen koodi

#sisältää

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (tosi); // Vaaditaan DR3100: lle vw_set_rx_pin (12); vw_setup (4000); // Bittiä sekunnissa pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Käynnistä vastaanottimen PLL käynnissä Serial.println ("Kaikki OK");

}

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

if (vw_get_message (buf & buflen)) // Ei-esto

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); taaksepäin(); viive (100); //vinossa(); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); eteenpäin(); viive (100); //vinossa(); }

muuten jos ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("LEFT"); vasen (); viive (100); //vinossa(); }

muuten jos ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("OIKEA"); oikea (); viive (100); //vinossa(); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); vinossa(); viive (100); }} else {Serial.println ("Ei signaalia vastaanotettu"); }}

mitätön eteenpäin ()

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

mitätön taaksepäin ()

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

tyhjä tyhjä ()

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

mitätön oikeus ()

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

mitätön ()

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

Vaihe 6: INO -tiedostot

Vaihe 7: Linkki kirjastoihin

Virtual Wire Library:

MPU6050_tockn Libraby:

Lankakirjasto:

Suositeltava: