İçindekiler:
- Adım 1: Donanım Gerekli:
- Adım 2: Donanım Bağlantısı:
- 3. Adım: Hareket İzleme Kodu:
- Adım 4: Uygulamalar:
Video: MPU-6000 ve Parçacık Fotonu Kullanarak Hareket İzleme: 4 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
MPU-6000, içinde 3 Eksen ivmeölçer ve 3 Eksen jiroskop bulunan 6 Eksenli Hareket İzleme Sensörüdür. Bu sensör, 3 boyutlu düzlemde bir nesnenin tam konumunu ve konumunu verimli bir şekilde takip etme yeteneğine sahiptir. En yüksek hassasiyette pozisyon analizi gerektiren sistemlerde kullanılabilir.
Bu eğitimde, MPU-6000 sensör modülünün parçacık fotonu ile arayüzlenmesi gösterilmiştir. İvme ve dönme açısı değerlerini okumak için I2c adaptörlü parçacık kullandık. Bu I2C adaptör sensör modülüne bağlantıyı daha kolay ve daha güvenilir hale getiriyor.
Adım 1: Donanım Gerekli:
Görevimizi gerçekleştirmek için gerekli malzemeler aşağıda belirtilen donanım bileşenlerini içerir:
1. MPU-6000
2. Parçacık Fotonu
3. I2C Kablosu
4. Parçacık fotonu için I2C Shield
Adım 2: Donanım Bağlantısı:
Donanım bağlantısı bölümü temel olarak sensör ve parçacık fotonu arasında gerekli olan kablo bağlantılarını açıklar. İstenilen çıktı için herhangi bir sistem üzerinde çalışırken doğru bağlantıların sağlanması temel zorunluluktur. Yani, gerekli bağlantılar aşağıdaki gibidir:
MPU-6000, I2C üzerinden çalışacaktır. Sensörün her bir arayüzünün nasıl bağlanacağını gösteren örnek kablo şeması buradadır.
Kutudan çıktığı gibi, kart bir I2C arayüzü için yapılandırılmıştır, bu nedenle, aksi takdirde agnostik iseniz bu bağlantıyı kullanmanızı öneririz. Tek ihtiyacınız olan dört tel!
Vcc, Gnd, SCL ve SDA pinlerinden sadece dört bağlantı gereklidir ve bunlar I2C kablosu yardımıyla bağlanır.
Bu bağlantılar yukarıdaki resimlerde gösterilmiştir.
3. Adım: Hareket İzleme Kodu:
Şimdi parçacık koduyla başlayalım.
Sensör modülünü arduino ile kullanırken application.h ve spark_wiring_i2c.h kütüphanesini dahil ediyoruz. "application.h" ve spark_wiring_i2c.h kitaplığı, sensör ve parçacık arasındaki i2c iletişimini kolaylaştıran işlevleri içerir.
Parçacık kodunun tamamı, kullanıcının rahatlığı için aşağıda verilmiştir:
#include#include // MPU-6000 I2C adresi 0x68(104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup() { // Particle.variable değişkenini ayarla("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); // I2C iletişimini Master Wire.begin() olarak başlat; // Seri iletişimi başlat, baud hızını ayarla = 9600 Serial.begin(9600); // I2C iletimini başlat Wire.beginTransmission(Addr); // Jiroskop konfigürasyon kaydını seçin Wire.write(0x1B); // Tam ölçek aralığı = 2000 dps Wire.write(0x18); // I2C iletimini durdur Wire.endTransmission(); // I2C iletimini başlat Wire.beginTransmission(Addr); // İvmeölçer konfigürasyon kaydını seçin Wire.write(0x1C); // Tam ölçek aralığı = +/-16g Wire.write(0x18); // I2C iletimini durdur Wire.endTransmission(); // I2C iletimini başlat Wire.beginTransmission(Addr); // Güç yönetimi kaydını seçin Wire.write(0x6B); // xGyro referanslı PLL Wire.write(0x01); // I2C iletimini durdur Wire.endTransmission(); gecikme(300); } void loop() { unsigned int data[6]; // I2C iletimini başlat Wire.beginTransmission(Addr); // Veri kaydı seçin Wire.write(0x3B); // I2C iletimini durdur Wire.endTransmission(); // 6 bayt veri iste Wire.requestFrom(Addr, 6); // 6 bayt veri oku if (Wire.available() == 6) { data[0] = Wire.read(); data[1] = Wire.read(); data[2] = Wire.read(); veri[3] = Wire.read(); veri[4] = Wire.read(); veri[5] = Wire.read(); } gecikme(800); // Verileri dönüştür xAccl = ((data[1] * 256) + data[0]); if (xAccl > 32767) { xAccl -= 65536; } yAccl = ((veri[3] * 256) + veri[2]); if (yAccl > 32767) { yAccl -= 65536; } zAccl = ((veri[5] * 256) + veri[4]); if (zAccl > 32767) {zAccl -= 65536; } gecikme(800); // I2C iletimini başlat Wire.beginTransmission(Addr); // Veri kaydı seçin Wire.write(0x43); // I2C iletimini durdur Wire.endTransmission(); // 6 bayt veri iste Wire.requestFrom(Addr, 6); // 6 bayt veri oku if (Wire.available() == 6) { data[0] = Wire.read(); data[1] = Wire.read(); data[2] = Wire.read(); veri[3] = Wire.read(); veri[4] = Wire.read(); veri[5] = Wire.read(); } // Veriyi dönüştür xGyro = ((data[1] * 256) + data[0]); if (xGyro > 32767) { xGyro -= 65536; } yGyro = ((veri[3] * 256) + veri[2]); if (yGyro > 32767) { yGyro -= 65536; } zGyro = ((veri[5] * 256) + veri[4]); if (zGyro > 32767) { zGyro -= 65536; } // Verileri panoya çıkar Particle.publish("X Ekseninde Hızlanma: ", String(xAccl)); gecikme(1000); Particle.publish("Y Ekseninde İvme: ", String(yAccl)); gecikme(1000); Particle.publish("Z-Ekseninde İvme: ", String(zAccl)); gecikme(1000); Particle.publish("X-Ekseni Dönme: ", String(xGyro)); gecikme(1000); Particle.publish("Y-Ekseni Döndürme: ", String(yGyro)); gecikme(1000); Particle.publish("Z-Dönme Ekseni: ", String(zGyro)); gecikme(1000); }
Particle.variable() işlevi, sensörün çıktısını depolamak için değişkenleri oluşturur ve Particle.publish() işlevi, çıktıyı sitenin panosunda görüntüler.
Sensör çıkışı, referansınız için yukarıdaki resimde gösterilmektedir.
Adım 4: Uygulamalar:
MPU-6000, uygulamasını akıllı telefonların ve tabletlerin hareket arayüzünde bulan bir hareket izleme sensörüdür. Akıllı telefonlarda bu sensörler, uygulamalar ve telefon kontrolü için hareket komutları, gelişmiş oyun, artırılmış gerçeklik, panoramik fotoğraf çekme ve görüntüleme, yaya ve araç navigasyonu gibi uygulamalarda kullanılabilir. MotionTracking teknolojisi, el cihazlarını ve tabletleri, sağlık ve fitness izlemeden konum tabanlı hizmetlere kadar çeşitli uygulamalarda kullanılabilen güçlü 3D akıllı cihazlara dönüştürebilir.
Önerilen:
ADXL345 ve Parçacık Fotonu Kullanarak İvme Ölçümü: 4 Adım
ADXL345 ve Parçacık Fotonu Kullanarak Hızlanma Ölçümü: ADXL345, ±16 g'a kadar yüksek çözünürlüklü (13 bit) ölçüme sahip küçük, ince, ultra düşük güçlü, 3 eksenli bir ivmeölçerdir. Dijital çıkış verileri, 16 bitlik ikili tamamlayıcı olarak biçimlendirilir ve I2 C dijital arabirimi aracılığıyla erişilebilir. Bunu ölçer
HMC5883 ve Parçacık Fotonu Kullanarak Manyetik Alan Ölçümü: 4 Adım
HMC5883 ve Parçacık Fotonu Kullanarak Manyetik Alan Ölçümü: HMC5883, düşük alanlı manyetik algılama için tasarlanmış bir dijital pusuladır. Bu cihaz, +/-8 Oe geniş bir manyetik alan aralığına ve 160 Hz çıkış hızına sahiptir. HMC5883 sensörü, otomatik manyetiklik giderme kayış sürücüleri, ofset iptali ve bir
HYT939 ve Parçacık Fotonu Kullanarak Nem Ölçümü: 4 Adım
HYT939 ve Particle Photon Kullanılarak Nem Ölçümü: HYT939, I2C haberleşme protokolü ile çalışan dijital bir nem sensörüdür. Tıbbi sistemler ve laboratuvarlar söz konusu olduğunda nem çok önemli bir parametredir, bu nedenle bu hedeflere ulaşmak için HYT939'u ahududu pi ile arayüzlemeye çalıştık. BEN
Parçacık Fotonu Kullanarak Güneş Paneli İzleme: 7 Adım
Partikül Fotonu Kullanarak Güneş Paneli İzleme: Projenin amacı güneş panellerinin verimliliğini artırmaktır. Proje, güneş enerjisi santralinin performansını, izlenmesini ve bakımını geliştirmek için güneş fotovoltaik enerji üretimini denetlemek üzere tasarlanmıştır. Bu projede parçacık ph
SHT25 ve Parçacık Fotonu Kullanarak Sıcaklık ve Nem İzleme: 5 Adım
SHT25 ve Particle Photon Kullanarak Sıcaklık ve Nem İzleme: Son zamanlarda sıcaklık ve nem izleme gerektiren çeşitli projeler üzerinde çalıştık ve daha sonra bu iki parametrenin bir sistemin çalışma verimliliğini tahmin etmede gerçekten çok önemli bir rol oynadığını fark ettik. Hem sanayide