Mündəricat:

MPU-6000 və hissəcik fotonundan istifadə edərək hərəkət izlənməsi: 4 addım
MPU-6000 və hissəcik fotonundan istifadə edərək hərəkət izlənməsi: 4 addım

Video: MPU-6000 və hissəcik fotonundan istifadə edərək hərəkət izlənməsi: 4 addım

Video: MPU-6000 və hissəcik fotonundan istifadə edərək hərəkət izlənməsi: 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 dərslikdə MPU-6000 sensor modulunun hissəcik fotonu ilə qarşılıqlı əlaqəsi təsvir edilmişdir. Sürətləndirmə və fırlanma bucağı dəyərlərini oxumaq üçün I2c adapteri olan hissəciklərdən istifadə etdik. Bu I2C adapteri sensor moduluna qoşulmağı asanlaşdırır və daha etibarlı edir.

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

Vəzifəmizi yerinə yetirmək üçün lazım olan materiallar aşağıda göstərilən hardware komponentlərini ehtiva edir:

1. MPU-6000

2. Foton hissəcikləri

3. I2C Kabeli

4. Partikül fotonu üçün I2C Shield

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

Avadanlıq Bağlantısı
Avadanlıq Bağlantısı
Avadanlıq Bağlama
Avadanlıq Bağlama

Avadanlıq bağlama bölməsi əsasən sensor və hissəcik fotonu 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 hissəcik kodundan başlayaq.

Sensor modulunu arduino ilə işləyərkən application.h və spark_wiring_i2c.h kitabxanasını daxil edirik. "application.h" və spark_wiring_i2c.h kitabxanası, sensor və hissəcik arasındakı i2c əlaqəsini asanlaşdıran funksiyaları ehtiva edir.

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

#daxil edin #daxil edin // MPU-6000 I2C ünvanı 0x68 (104) #Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Particle.variable dəyişənini təyin edin ("i2cdevice", "MPU-6000"); Particle.variable ("xAccl", xAccl); Particle.variable ("yAccl", yAccl); Particle.variable ("zAccl", zAccl); Particle.variable ("xGyro", xGyro); Particle.variable ("yGyro", yGyro); Particle.variable ("zGyro", zGyro); // Master Wire.begin () olaraq I2C ünsiyyətini başladın; // Serial rabitəni işə salın, baud sürətini təyin edin = 9600 Serial.begin (9600); // I2C ötürülməsinə başlayın Wire.beginTransmission (Addr); // Wire.write (0x1B) gyroscope konfiqurasiya qeydini seçin; // 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); // Wire.write (0x1C) accelerometer konfiqurasiya qeydini seçin; // Tam miqyaslı aralıq = +/- 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); // Wire.write (0x6B) güc idarəetmə qeydini seçin; // xGyro istinad Wire.write ilə PLL (0x01); // I2C ötürülməsini dayandırın Wire.endTransmission (); gecikmə (300); } void loop () {unsigned int data [6]; // I2C ötürülməsinə başlayın Wire.beginTransmission (Addr); // Wire.write məlumat qeydini seçin (0x3B); // I2C ötürülməsini dayandırın Wire.endTransmission (); // Wire.requestFromdan 6 bayt məlumat istəyin (Addr, 6); // 6 bayt məlumat oxuyun, əgər (Wire.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 (); } gecikmə (800); // Məlumatları çevirmək xAccl = ((data [1] * 256) + data [0]); əgər (xAccl> 32767) {xAccl -= 65536; } yAccl = ((data [3] * 256) + data [2]); əgər (yAccl> 32767) {yAccl -= 65536; } zAccl = ((məlumat [5] * 256) + məlumat [4]); əgər (zAccl> 32767) {zAccl -= 65536; } gecikmə (800); // I2C ötürülməsinə başlayın Wire.beginTransmission (Addr); // Wire.write məlumat qeydini seçin (0x43); // I2C ötürülməsini dayandırın Wire.endTransmission (); // Wire.requestFromdan 6 bayt məlumat istəyin (Addr, 6); // 6 bayt məlumat oxuyun, əgər (Wire.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 (); } // Verilənləri çevir xGyro = ((data [1] * 256) + data [0]); əgər (xGyro> 32767) {xGyro -= 65536; } yGyro = ((məlumat [3] * 256) + məlumat [2]); əgər (yGyro> 32767) {yGyro -= 65536; } zGyro = ((məlumat [5] * 256) + məlumat [4]); əgər (zGyro> 32767) {zGyro -= 65536; } // Tablet Particle.publish tablosuna məlumat çıxarın ("X Eksenində Sürətləndirmə:", String (xAccl)); gecikmə (1000); Particle.publish ("Y Eksenində Sürətləndirmə:", String (yAccl)); gecikmə (1000); Particle.publish ("Z Eksenində Sürətləndirmə:", String (zAccl)); gecikmə (1000); Particle.publish ("Dönmə X Ekseni:", String (xGyro)); gecikmə (1000); Particle.publish ("Fırlanma Y Ekseni:", String (yGyro)); gecikmə (1000); Particle.publish ("Z-Fırlanma Ekseni:", String (zGyro)); gecikmə (1000); }

Particle.variable () funksiyası sensorun çıxışını saxlamaq üçün dəyişənlər yaradır və Particle.publish () funksiyası saytın tablosuna çıxışı göstərir.

Sensor çıxışı istinad üçün 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ə: