INHOUDSOPGAWE:

Gebaarbeheerde draadlose motor: 7 stappe
Gebaarbeheerde draadlose motor: 7 stappe

Video: Gebaarbeheerde draadlose motor: 7 stappe

Video: Gebaarbeheerde draadlose motor: 7 stappe
Video: Part 5 - Walden Audiobook by Henry David Thoreau (Chs 12-15) 2024, Desember
Anonim
Gebaarbeheerde draadlose motor
Gebaarbeheerde draadlose motor

In hierdie handleiding gaan ons leer hoe om 'n motor met 'n gebaar of 'n robot te maak. Hierdie projek het twee dele, een deel is 'n sender -eenheid en 'n ander deel is 'n ontvanger -eenheid. Die sender -eenheid is eintlik op 'n handskoene gemonteer en die ontvanger -eenheid word in 'n motor of 'n robot geplaas. Nou is dit tyd om 'n mooi motor te maak. Kom ons gaan!

Stap 1: toerusting

Sender -eenheid

1. Arduino Nano.

2. MPU6050 Sensormodule.

3. RF 433 MHz -sender.

4. Enige tipe 3 -sel, 11.1 volt battery (hier het ek muntstuk gebruik).

5. Vero-Board.

6. Handhandskoene.

Ontvanger Eenheid

1. Arduino Nano of Arduino Uno.

2. L298N Motorbestuurder Module.

3. 4 -wiel robotraam insluitend motors.

4. RF 433 RF Ontvanger.

5. 3-sel, 11.1 volt Li-po-battery.

6. Vero-bord.

Ander

1. Plak stokke en geweer vas.

2. Springdrade.

3. Skroewedraaiers

4. Soldeerstel.

ens.

Stap 2: Kringdiagram -prentlêer

Kringdiagram prentlêer
Kringdiagram prentlêer

Stap 3: Fritzing File of Circuit Diagram

Stap 4: Senderkode

#insluit

#insluit

#insluit

MPU6050 mpu6050 (draad);

lang timer = 0;

char *kontroleerder;

leemte opstelling ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (waar); vw_set_ptt_inverted (waar); // vw_set_tx_pin (10); vw_setup (4000); // spoed van data -oordrag Kbps

}

leemte lus ()

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

mpu6050.update ();

as (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) {kontroleerder = "X2"; vw_send ((uint8_t *) kontroleerder, strlen (kontroleerder)); vw_wait_tx (); // Wag totdat die hele boodskap weg is Serial.println ("vorentoe"); } anders as (mpu6050.getAccAngleY ()> 40) {kontroleerder = "Y1"; vw_send ((uint8_t *) kontroleerder, strlen (kontroleerder)); vw_wait_tx (); // Wag totdat die hele boodskap weg is Serial.println ("LEFT"); } anders as (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) kontroleerder, strlen (kontroleerder)); vw_wait_tx (); // Wag totdat die hele boodskap weg is Serial.println ("REGS"); } anders as (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) kontroleerder, strlen (kontroleerder)); vw_wait_tx (); // Wag totdat die hele boodskap weg is Serial.println ("STOP"); }}

Stap 5: Ontvangerkode

#insluit

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; ongeldige opstelling () {Serial.begin (9600); vw_set_ptt_inverted (waar); // Vereis vir DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bits per sekonde pinMode (13, OUTPUT); pinMode (LA, UITGANG); pinMode (LB, OUTPUT); pinMode (RA, UITGANG); pinMode (RB, OUTPUT); vw_rx_start (); // Begin die ontvanger PLL met Serial.println ("Alles OK");

}

leemte -lus () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

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

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("TERUG"); agteruit (); vertraging (100); // af (); } anders as ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("VOORUIT"); vorentoe (); vertraging (100); // af (); }

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

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

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

{Serial.println ("REGS"); regs (); vertraging (100); // af (); } anders as ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); af (); vertraging (100); }} anders {Serial.println ("Geen sein ontvang nie"); }}

leegte vorentoe ()

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

agteruit leeg ()

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

leegte links ()

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

nietig reg ()

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

ongeldig ()

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

Stap 6: INO -lêers

Stap 7: Skakel van biblioteke

Virtual Wire Library:

MPU6050_tockn Weegskaal:

Wire Library:

Aanbeveel: