Mündəricat:

Jestlə İdarə olunan Simsiz Avtomobil: 7 addım
Jestlə İdarə olunan Simsiz Avtomobil: 7 addım

Video: Jestlə İdarə olunan Simsiz Avtomobil: 7 addım

Video: Jestlə İdarə olunan Simsiz Avtomobil: 7 addım
Video: #1 Bədən dilində əl hərəkətləri və mənası/ Hand gestures in body language and their meaning 2024, Noyabr
Anonim
Jestlə idarə olunan Simsiz Avtomobil
Jestlə idarə olunan Simsiz Avtomobil

Bu təlimatda, jestlə idarə olunan bir avtomobil və ya hər hansı bir robot necə edəcəyimizi öyrənəcəyik. Bu layihə iki hissədən ibarətdir, bir hissəsi ötürücü, digər hissəsi alıcı vahiddir. Transmitter vahidi əslində əlcəklərə quraşdırılır və alıcı vahid avtomobilin və ya hər hansı bir robotun içərisinə yerləşdirilir. İndi gözəl bir maşın hazırlamağın vaxtı gəldi. Gedək!

Addım 1: Avadanlıqlar

Verici vahidi

1. Arduino Nano.

2. MPU6050 Sensor Modulu.

3. RF 433 MHz ötürücü.

4. Hər növ 3 hüceyrəli, 11.1 voltluq Batareya (Burada sikkə hüceyrəsindən istifadə etdim).

5. Vero-Board.

6. Əl Əlcəkləri.

Alıcı vahidi

1. Arduino Nano və ya Arduino Uno.

2. L298N Motor Sürücü Modulu.

3. Mühərriklər daxil olmaqla 4 təkərli robot çərçivəsi.

4. RF 433 RF Alıcı.

5. 3 hüceyrəli, 11.1 volt Li-po Batareya.

6. Vero-board.

Digərləri

1. Yapışqan çubuqlar və silah.

2. Jumper telləri.

3. Vida Sürücüləri

4. Lehim dəsti.

və s.

Addım 2: Circuit Diagram Image File

Dövrə Şəkil Şəkil Fayl
Dövrə Şəkil Şəkil Fayl

Addım 3: Dövrə Diaqramının Dondurucu Dosyası

Addım 4: Verici Kodu

#daxil edin

#daxil edin

#daxil edin

MPU6050 mpu6050 (Tel);

uzun taymer = 0;

char *nəzarətçi;

boş quraşdırma ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (doğru); vw_set_ptt_inverted (doğru); // vw_set_tx_pin (10); vw_setup (4000); // məlumat ötürmə sürəti Kbps

}

boşluq döngəsi ()

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

mpu6050. yeniləmə ();

əgər (millis () - taymer> 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 "); taymer = milis (); }

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

əgər (mpu6050.getAccAngleX () 30) {nəzarətçi = "X2"; vw_send ((uint8_t *) nəzarətçi, strlen (nəzarətçi)); vw_wait_tx (); // Bütün mesaj yox olana qədər gözləyin Serial.println ("İLƏ"); } başqa if (mpu6050.getAccAngleY ()> 40) {nəzarətçi = "Y1"; vw_send ((uint8_t *) nəzarətçi, strlen (nəzarətçi)); vw_wait_tx (); // Bütün mesaj yox olana qədər gözləyin Serial.println ("SOL"); } başqa if (mpu6050.getAccAngleY () <-40) {nəzarətçi = "Y2"; vw_send ((uint8_t *) nəzarətçi, strlen (nəzarətçi)); vw_wait_tx (); // Bütün mesaj yox olana qədər gözləyin Serial.println ("SAĞ"); } başqa halda (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {nəzarətçi = "A1"; vw_send ((uint8_t *) nəzarətçi, strlen (nəzarətçi)); vw_wait_tx (); // Bütün mesaj yox olana qədər gözləyin Serial.println ("STOP"); }}

Addım 5: Alıcı Kodu

#daxil edin

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (doğru); // DR3100 vw_set_rx_pin (12) üçün tələb olunur; vw_setup (4000); // Saniyədə bitlər pinMode (13, Çıxış); pinMode (LA, Çıxış); pinMode (LB, Çıxış); pinMode (RA, Çıxış); pinMode (RB, Çıxış); vw_rx_start (); // Serial.println işləyən PLL qəbuledicisini işə salın ("Hamısı OK");

}

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

if (vw_get_message (buf, & buflen)) // Bloklanmır

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); geriyə (); gecikmə (100); // söndür (); } başqa halda ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("İLƏ"); irəli (); gecikmə (100); // söndür (); }

başqa halda ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("SOL"); sol (); gecikmə (100); // söndür (); }

başqa halda ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("SAĞ"); sağ (); gecikmə (100); // söndür (); } başqa halda ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); söndür (); gecikmə (100); }} başqa {Serial.println ("Siqnal Alınmadı"); }}

irəli boş ()

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

geriyə boşluq ()

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

sol boşluq ()

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

sağ boş ()

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

boşaldır ()

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

Addım 6: INO Faylları

Addım 7: Kitabxanaların əlaqəsi

Virtual Tel Kitabxanası:

MPU6050_tockn Libraby:

Tel Kitabxanası:

Tövsiyə: