Satura rādītājs:

Ar žestiem vadāma bezvadu automašīna: 7 soļi
Ar žestiem vadāma bezvadu automašīna: 7 soļi

Video: Ar žestiem vadāma bezvadu automašīna: 7 soļi

Video: Ar žestiem vadāma bezvadu automašīna: 7 soļi
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Decembris
Anonim
Ar žestiem vadāma bezvadu automašīna
Ar žestiem vadāma bezvadu automašīna

Šajā apmācībā mēs uzzināsim, kā izveidot žestu vadītu automašīnu vai jebkuru robotu. Šim projektam ir divas daļas, viena daļa ir raidītāja bloks, bet otra - uztvērēja bloks. Raidītāja bloks faktiski ir uzstādīts uz rokas cimdiem, un uztvērējs atrodas automašīnā vai jebkurā robotā. Tagad ir pienācis laiks izveidot jauku automašīnu. Ejam!

1. solis: aprīkojums

Raidītāja vienība

1. Arduino Nano.

2. MPU6050 sensora modulis.

3. RF 433 MHz raidītājs.

4. Jebkura veida 3 šūnu, 11,1 voltu akumulators (šeit esmu izmantojis monētu elementu).

5. Vero-Board.

6. Roku cimdi.

Uztvērēja vienība

1. Arduino Nano vai Arduino Uno.

2. L298N motora vadītāja modulis.

3. 4 riteņu robotu rāmis, ieskaitot motorus.

4. RF 433 RF uztvērējs.

5. 3 šūnu, 11,1 voltu litija baterija.

6. Vero-dēlis.

Citi

1. Līmes nūjas un lielgabals.

2. Jumper vadi.

3. Skrūvgrieži

4. Lodēšanas komplekts.

utt.

2. darbība: shēmas diagrammas attēla fails

Ķēdes diagrammas attēla fails
Ķēdes diagrammas attēla fails

3. solis: ķēdes diagrammas fritzēšanas fails

4. solis: raidītāja kods

#iekļaut

#iekļaut

#iekļaut

MPU6050 mpu6050 (vads);

ilgs taimeris = 0;

char *kontrolieris;

anulēts iestatījums ()

{Sērijas sākums (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (patiess); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // datu pārsūtīšanas ātrums Kbps

}

tukša cilpa ()

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

mpu6050.update ();

ja (milis () - taimeris> 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 "); taimeris = milis (); }

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

ja (mpu6050.getAccAngleX () 30) {kontrolieris = "X2"; vw_send ((uint8_t *) kontrolieris, strlen (kontrolieris)); vw_wait_tx (); // Pagaidiet, līdz viss ziņojums būs pazudis Serial.println ("FORWARD"); } cits if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) kontrolieris, strlen (kontrolieris)); vw_wait_tx (); // Pagaidiet, līdz viss ziņojums ir pazudis Serial.println ("LEFT"); } cits if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) kontrolieris, strlen (kontrolieris)); vw_wait_tx (); // Pagaidiet, līdz viss ziņojums ir pazudis Serial.println ("RIGHT"); } cits if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) kontrolieris, strlen (kontrolieris)); vw_wait_tx (); // Pagaidiet, līdz viss ziņojums ir pazudis Serial.println ("STOP"); }}

5. solis: uztvērēja kods

#iekļaut

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (true); // Nepieciešams DR3100 vw_set_rx_pin (12); vw_setup (4000); // Biti sekundē pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Sāciet uztvērēja PLL, kurā darbojas Serial.println ("Viss OK");

}

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

if (vw_get_message (buf, & buflen)) // Netraucē

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); atpakaļ (); kavēšanās (100); // izslēgts (); } cits if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); uz priekšu (); kavēšanās (100); // izslēgts (); }

citādi, ja ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("LEFT"); pa kreisi (); kavēšanās (100); // izslēgts (); }

citādi, ja ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("RIGHT"); taisnība(); kavēšanās (100); // izslēgts (); } cits if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); izslēgts (); kavēšanās (100); }} else {Serial.println ("Nav saņemts signāls"); }}

anulēt uz priekšu ()

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

spēkā neesošs ()

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

tukšums pa kreisi ()

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

spēkā neesošas tiesības ()

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

anulēt ()

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

6. darbība: INO faili

7. darbība: bibliotēku saite

Virtuālā vadu bibliotēka:

MPU6050_tockn Libraby:

Vadu bibliotēka:

Ieteicams: