Innehållsförteckning:

Geststyrd trådlös bil: 7 steg
Geststyrd trådlös bil: 7 steg

Video: Geststyrd trådlös bil: 7 steg

Video: Geststyrd trådlös bil: 7 steg
Video: MAGNETISK TRÅDLÖS BIL LADDARE FÖR iPHONE 12/13/14 SERIEN / MAGSAFE CASE, QC 3.0 ADAPTER INGÅR 2024, December
Anonim
Geststyrd trådlös bil
Geststyrd trådlös bil

I denna handledning kommer vi att lära oss hur man gör en geststyrd bil eller vilken robot som helst. Detta projekt har två delar, en del är sändarenhet och en annan del är mottagarenhet. Sändarenheten är faktiskt monterad på en handske och mottagarenheten placeras inuti en bil eller någon robot. Nu är det dags att göra en fin bil. Nu går vi!

Steg 1: Utrustning

Sändarenhet

1. Arduino Nano.

2. Sensormodul MPU6050.

3. RF 433 MHz sändare.

4. Varje typ av 3 -cell, 11,1 volt batteri (här har jag använt myntcell).

5. Vero-Board.

6. Handskar.

Mottagarenhet

1. Arduino Nano eller Arduino Uno.

2. L298N -motorförarmodul.

3. 4 -hjulig robotram inklusive motorer.

4. RF 433 RF -mottagare.

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

6. Vero-board.

Andra

1. Limma pinnar och pistol.

2. Bygeltrådar.

3. Skruvmejslar

4. Lödkit.

etc.

Steg 2: Circuit Diagram Image File

Kretsdiagram bildfil
Kretsdiagram bildfil

Steg 3: Fritzing File of Circuit Diagram

Steg 4: Sändarkod

#omfatta

#omfatta

#omfatta

MPU6050 mpu6050 (tråd);

lång timer = 0;

char *controller;

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); // hastigheten för dataöverföring Kbps

}

void loop ()

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

mpu6050.update ();

if (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) {controller = "X2"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Vänta tills hela meddelandet är borta Serial.println ("FRAMÅT"); } annars if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Vänta tills hela meddelandet är borta Serial.println ("VÄNSTER"); } annars if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Vänta tills hela meddelandet är borta Serial.println ("RIGHT"); } annars if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Vänta tills hela meddelandet är borta Serial.println ("STOP"); }}

Steg 5: Mottagarkod

#omfatta

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (true); // Krävs för DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bit per sekund pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Starta mottagarens PLL med Serial.println ("Allt OK");

}

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

if (vw_get_message (buf, & buflen)) // Icke-blockerande

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); bakåt(); fördröjning (100); //av(); } annars if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FRAMÅT"); fram(); fördröjning (100); //av(); }

annars om ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("VÄNSTER"); vänster(); fördröjning (100); //av(); }

annars om ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("HÖGER"); höger(); fördröjning (100); //av(); } annars if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); av(); fördröjning (100); }} else {Serial.println ("Ingen signal mottagen"); }}

ogiltigt framåt ()

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

tomrum bakåt ()

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

tomrum kvar ()

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

ogiltig rätt ()

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

ogiltig av ()

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

Steg 6: INO -filer

Steg 7: Länk till bibliotek

Virtual Wire Library:

MPU6050_tockn Libraby:

Wire Library:

Rekommenderad: