Mündəricat:

MPU-6000 və Arduino Nano istifadə edərək hərəkət izləmə: 4 addım
MPU-6000 və Arduino Nano istifadə edərək hərəkət izləmə: 4 addım

Video: MPU-6000 və Arduino Nano istifadə edərək hərəkət izləmə: 4 addım

Video: MPU-6000 və Arduino Nano istifadə edərək hərəkət izləmə: 4 addım
Video: Как использовать акселерометр и гироскоп MPU-6050 с кодом Arduino 2024, Noyabr
Anonim
Image
Image

MPU-6000, 3 Eksenli akselerometr və 3 Eksenli giroskopu olan 6 Eksenli Hərəkət İzləmə Sensorudur. Bu sensor, obyektin 3ölçülü müstəvidə dəqiq mövqeyini və yerini səmərəli izləməyə qadirdir. Ən yüksək dəqiqlikdə mövqe təhlili tələb edən sistemlərdə istifadə edilə bilər.

Bu təlimatda MPU-6000 sensor modulunun arduino nano ilə qarşılıqlı əlaqəsi təsvir edilmişdir. Sürətlənmə və fırlanma bucağı dəyərlərini oxumaq üçün I2c adapteri olan arduino nanodan istifadə etdik. Bu I2C adapteri sensor moduluna qoşulmağı asanlaşdırır və daha etibarlıdır.

Addım 1: Lazım olan avadanlıq:

Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur

Məqsədimizə çatmaq üçün ehtiyacımız olan materiallar aşağıdakı aparat komponentlərindən ibarətdir:

1. MPU-6000

2. Arduino Nano

3. I2C Kabeli

4. Arduino nano üçün I2C Shield

Addım 2: Hardware Bağlantısı:

Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama

Donanım bağlama bölməsi əsasən sensor və arduino nano arasında lazım olan naqillərin əlaqələrini izah edir. İstənilən çıxış üçün hər hansı bir sistem üzərində işləyərkən düzgün əlaqələrin təmin edilməsi əsas zərurətdir. Beləliklə, zəruri əlaqələr aşağıdakılardır:

MPU-6000 I2C üzərində işləyəcək. Sensorun hər bir interfeysini necə bağlayacağınızı göstərən nümunə naqillər diaqramı.

Qutudan kənarda, lövhə I2C interfeysi üçün konfiqurasiya olunmuşdur, buna görə də başqa cür agnostiksinizsə bu əlaqəni istifadə etməyi məsləhət görürük.

Lazım olan tək şey dörd teldir! Vcc, Gnd, SCL və SDA pinləri üçün yalnız dörd əlaqə lazımdır və bunlar I2C kabelinin köməyi ilə bağlanır.

Bu əlaqələr yuxarıdakı şəkillərdə göstərilmişdir.

Addım 3: Hərəkət İzləmə Kodu:

Hərəkət İzləmə Kodu
Hərəkət İzləmə Kodu

İndi arduino kodundan başlayaq.

Sensor modulunu arduino ilə işləyərkən Wire.h kitabxanasını daxil edirik. "Tel" kitabxanası, sensor və arduino lövhəsi arasındakı i2c əlaqəsini asanlaşdıran funksiyaları ehtiva edir.

İstifadəçinin rahatlığı üçün bütün arduino kodu aşağıda verilmişdir:

#daxil edin

// MPU-6000 I2C ünvanı 0x68 (104)

#define Addr 0x68

boş quraşdırma ()

{

// I2C ünsiyyətini Master olaraq başladın

Wire.begin ();

// Serial rabitəni işə salın, baud dərəcəsini = 9600 olaraq təyin edin

Serial.begin (9600);

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Giroskop konfiqurasiya qeydini seçin

Wire.write (0x1B);

// Tam miqyas aralığı = 2000 dps

Wire.write (0x18);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Accelerometer konfiqurasiya qeydini seçin

Wire.write (0x1C);

// Tam miqyas aralığı = +/- 16g

Wire.write (0x18);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Güc idarəetmə qeydini seçin

Wire.write (0x6B);

// xGyro istinadlı PLL

Wire.write (0x01);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

gecikmə (300);

}

boşluq döngəsi ()

{

imzasız int məlumatları [6];

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Məlumat qeydini seçin

Wire.write (0x3B);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// 6 bayt məlumat tələb edin

Wire.requestFrom (Addr, 6);

// 6 bayt məlumat oxuyun

əgər (Tel.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

// Məlumatları çevirin

int xAccl = data [0] * 256 + data [1];

int yAccl = data [2] * 256 + data [3];

int zAccl = data [4] * 256 + data [5];

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Məlumat qeydini seçin

Wire.write (0x43);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// 6 bayt məlumat tələb edin

Wire.requestFrom (Addr, 6);

// 6 bayt məlumat oxuyun

əgər (Tel.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

// Məlumatları çevirin

int xGyro = data [0] * 256 + data [1];

int yGyro = data [2] * 256 + data [3];

int zGyro = data [4] * 256 + data [5];

// Məlumatların serial monitora çıxarılması

Serial.print ("X-Eksenində Sürətləndirmə:");

Serial.println (xAccl);

Serial.print ("Y Eksenində Sürətləndirmə:");

Serial.println (yAccl);

Serial.print ("Z Eksenində Sürətləndirmə:");

Serial.println (zAccl);

Serial.print ("Fırlanma X Ekseni:");

Serial.println (xGyro);

Serial.print ("Fırlanma Y Ekseni:");

Serial.println (yGyro);

Serial.print ("Z-Fırlanma Ekseni:");

Serial.println (zGyro);

gecikmə (500);

}

Tel kitabxanasında Wire.write () və Wire.read () əmrləri yazmaq və sensor çıxışını oxumaq üçün istifadə olunur.

Sensorun çıxışını Arduino IDE -nin serial monitorunda göstərmək üçün Serial.print () və Serial.println () istifadə olunur.

Sensorun çıxışı yuxarıdakı şəkildə göstərilmişdir.

Addım 4: Tətbiqlər:

Tətbiqlər
Tətbiqlər

MPU-6000, tətbiqini smartfon və planşetlərin hərəkət interfeysində tapan bir hərəkət izləmə sensoru. Smartfonlarda bu sensorlar tətbiqetmələr və telefon idarəçiliyi üçün jest əmrləri, inkişaf etmiş oyun, genişlənmiş reallıq, panoramik fotoşəkil çəkmə və görüntü, piyada və avtomobil naviqasiyası kimi tətbiqlərdə istifadə edilə bilər. MotionTracking texnologiyası, telefonları və planşetləri sağlamlıq və fitness monitorinqindən tutmuş məkan xidmətlərinə qədər tətbiqlərdə istifadə edilə bilən güclü 3D ağıllı cihazlara çevirə bilər.

Tövsiyə: