Inhoudsopgave:

Gebaargestuurde draadloze auto - Ajarnpa
Gebaargestuurde draadloze auto - Ajarnpa

Video: Gebaargestuurde draadloze auto - Ajarnpa

Video: Gebaargestuurde draadloze auto - Ajarnpa
Video: Innovatie in B&O met Hololens en Droneboot 2024, December
Anonim
Gebaargestuurde draadloze auto
Gebaargestuurde draadloze auto

In deze tutorial gaan we leren hoe je een gebarengestuurde auto of een robot kunt maken. Dit project bestaat uit twee delen, een deel is een zendereenheid en een ander deel is een ontvangereenheid. De zendereenheid is eigenlijk op een handhandschoen gemonteerd en de ontvangereenheid wordt in een auto of een robot geplaatst. Nu is het tijd om een mooie auto te maken. Laten we gaan!

Stap 1: Uitrustingen

Zendereenheid

1. Arduino-nano.

2. MPU6050-sensormodule.

3. RF 433 MHz-zender.

4. Elk type 3-cel, 11,1 volt batterij (hier heb ik een knoopcel gebruikt).

5. Vero-bord.

6. Handhandschoenen.

Ontvangereenheid:

1. Arduino Nano of Arduino Uno.

2. L298N-motorbesturingsmodule.

3. 4-wiel robotframe inclusief motoren.

4. RF 433 RF-ontvanger.

5. 3-cel, 11,1 volt Li-po-batterij.

6. Verobord.

anderen

1. Lijmstiften en pistool.

2. Overbruggingsdraden.

3. Schroevendraaiers

4. Soldeerset.

enzovoort.

Stap 2: Circuitdiagram afbeeldingsbestand

Circuitdiagram afbeeldingsbestand
Circuitdiagram afbeeldingsbestand

Stap 3: Fritzing-bestand van schakelschema

Stap 4: Zendercode

#erbij betrekken

#erbij betrekken

#erbij betrekken

MPU6050 mpu6050 (draad);

lange timer = 0;

char *controller;

ongeldige setup()

{ Serieel.begin (9600); Draad.begin(); mpu6050.begin(); mpu6050.calcGyroOffsets(true); vw_set_ptt_inverted (waar); // vw_set_tx_pin (10); vw_setup (4000);// snelheid van gegevensoverdracht Kbps

}

lege lus()

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

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(); // Wacht tot het hele bericht is verdwenen Serial.println ("FORWARD"); } else if (mpu6050.getAccAngleY()>40) { controller="Y1"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); // Wacht tot het hele bericht is verdwenen Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY()<-40) { controller="Y2"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); // Wacht tot het hele bericht is verdwenen Serial.println ("RIGHT"); } else if (mpu6050.getAccAngleX()-10 && mpu6050.getAccAngleY()-10) { controller="A1"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); // Wacht tot het hele bericht is verdwenen Serial.println ("STOP"); } }

Stap 5: Ontvangercode

#erbij betrekken

int LA = 3;

int LB = 11; intRA = 5; int RB = 6; void setup() { Serial.begin(9600); vw_set_ptt_inverted (waar); // Vereist voor DR3100 vw_set_rx_pin (12); vw_setup(4000); // Bits per sec pinMode (13, OUTPUT); pinMode (LA, UITGANG); pinMode (LB, UITGANG); pinMode (RA, UITGANG); pinMode (RB, UITGANG); vw_rx_start(); // Start de ontvanger-PLL met Serial.println ("Alles OK");

}

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

if (vw_get_message(buf, &buflen)) // Niet-blokkerend

{ if((buf[0]=='X')&&(buf[1]=='1')) { Serial.println("ACHTERWAARTS"); achteruit(); vertraging (100); //uit(); } else if((buf[0]=='X')&&(buf[1]=='2')) { Serial.println("FORWARD"); naar voren(); vertraging (100); //uit(); }

anders if((buf[0]=='Y')&&(buf[1]=='1'))

{ Serial.println("LINKS"); links(); vertraging (100); //uit(); }

anders if((buf[0]=='Y')&&(buf[1]=='2'))

{ Serial.println ("RECHTS"); Rechtsaf(); vertraging (100); //uit(); } else if((buf[0]=='A')&&(buf[1]=='1')) { Serial.println("STOP"); uit(); vertraging (100); } } else { Serial.println ("Geen signaal ontvangen"); } }

ongeldig vooruit()

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

ongeldig achteruit()

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

leegte links()

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

ongeldig rechts()

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

nietig maken()

{analogeWrite(LA, 0); analoogWrite(LB, 0); analoogWrite(RA, 0); analoogWrite(RB, 0); }

Stap 6: INO-bestanden

Stap 7: Link naar bibliotheken

Virtuele draadbibliotheek:

MPU6050_tockn Libraby:

Draadbibliotheek:

Aanbevolen: