Mündəricat:

Raspberry Pi ilə BMG160 3 Eksenli Giroskop Sensorunun Arası: 5 Addım
Raspberry Pi ilə BMG160 3 Eksenli Giroskop Sensorunun Arası: 5 Addım

Video: Raspberry Pi ilə BMG160 3 Eksenli Giroskop Sensorunun Arası: 5 Addım

Video: Raspberry Pi ilə BMG160 3 Eksenli Giroskop Sensorunun Arası: 5 Addım
Video: Arduino Nano and GY-521 MPU6050 3-осевой гироскоп, 3-осевой акселерометр и DMP 2024, Noyabr
Anonim
Image
Image

Müasir dünyada, gənclərin və uşaqların yarıdan çoxu oyuna həvəs göstərir və oyunun texniki cəhətlərinə heyran olanların hamısı bu sahədə hərəkət algılamanın əhəmiyyətini bilir. Eyni şey bizi heyrətləndirdi və lövhələrə qoymaq üçün hər hansı bir cismin bucaq sürətini ölçə bilən bir giroskop sensoru üzərində işləməyi düşündük. Beləliklə, vəzifəni həll etmək üçün götürdüyümüz sensor BMG160 -dır. BMG160, 16 bitlik, rəqəmsal, üç eksenli, giroskoplu bir sensordur ki, bucaq dərəcəsini üç perpendikulyar otaq ölçülərində ölçə bilər.

Bu təlimatda, proqramlaşdırma dili olaraq Java istifadə edərək BMG160 -ın Raspberry pi ilə işini nümayiş etdirəcəyik.

Bu məqsədlə ehtiyac duyacağınız avadanlıq aşağıdakılardır:

1. BMG160

2. Moruq Pi

3. I2C Kabeli

4. Raspberry Pi üçün I2C Shield

5. Ethernet Kabeli

Addım 1: BMG160 Baxış:

Nə Lazımdır.. !!
Nə Lazımdır.. !!

Əvvəlcə BMG160 sensor modulunun əsas xüsusiyyətləri və işlədiyi ünsiyyət protokolu ilə tanış olmaq istərdik.

BMG160, əsasən açısal dərəcələri ölçə bilən 16 bitlik, rəqəmsal, üç eksenli, giroskop sensordur. Üç dik otaq ölçülərində, x-, y- və z-oxunda bucaq dərəcələrini hesablaya və müvafiq çıxış siqnallarını təmin edə bilir. I2C rabitə protokolundan istifadə edərək moruq pi lövhəsi ilə əlaqə qura bilər. Bu xüsusi modul, istehlakçı tətbiqləri və sənaye məqsədləri üçün tələblərə cavab vermək üçün hazırlanmışdır.

Sensorun işlədiyi rabitə protokolu I2C -dir. I2C, inteqrasiya edilmiş dövrəni ifadə edir. SDA (serial məlumat) və SCL (serial saat) xətləri vasitəsi ilə ünsiyyətin qurulduğu bir ünsiyyət protokoludur. Eyni anda birdən çox cihazı birləşdirməyə imkan verir. Ən sadə və ən təsirli ünsiyyət protokollarından biridir.

Addım 2: Nə Lazımdır..

Nə Lazımdır.. !!
Nə Lazımdır.. !!
Nə Lazımdır.. !!
Nə Lazımdır.. !!
Nə Lazımdır.. !!
Nə Lazımdır.. !!

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

1. BMG160

2. Moruq Pi

3. I2C Kabeli

4. Raspberry Pi üçün I2C Shield

5. Ethernet Kabeli

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

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

Avadanlıq bağlama bölməsi əsasən sensor və moruq pi arasında lazım olan tel ə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:

BMG160 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 4: Java Kodundan istifadə edərək 3 Eksenli Giroskop Ölçmə:

Java Kodundan istifadə edərək 3 Eksenli Giroskop Ölçmə
Java Kodundan istifadə edərək 3 Eksenli Giroskop Ölçmə
Java Kodundan istifadə edərək 3 Eksenli Giroskop Ölçmə
Java Kodundan istifadə edərək 3 Eksenli Giroskop Ölçmə

Moruq pi istifadə etmənin üstünlüyü, sensoru onunla əlaqələndirmək üçün lövhəni proqramlaşdırmaq istədiyiniz proqramlaşdırma dilinin rahatlığını təmin edir. Bu lövhənin bu üstünlüyündən istifadə edərək burada Java proqramlaşdırmasını nümayiş etdiririk. BMG160 üçün Java kodunu Dcube Mağazalar Birliyi olan github cəmiyyətimizdən yükləyə bilərsiniz.

İstifadəçilərin rahatlığı üçün kodu burada da izah edirik: Kodlaşdırmanın ilk addımı olaraq java vəziyyətində pi4j kitabxanasını yükləməlisiniz, çünki bu kitabxana kodda istifadə olunan funksiyaları dəstəkləyir. Beləliklə, kitabxananı yükləmək üçün aşağıdakı linkə daxil ola bilərsiniz:

pi4j.com/install.html

Bu sensor üçün işləyən java kodunu buradan da kopyalaya bilərsiniz:

com.pi4j.io.i2c. I2CBus idxal edin;

com.pi4j.io.i2c. I2CDevice idxal edin;

com.pi4j.io.i2c. I2CFactory idxal edin;

java.io. IOException idxal edin;

ictimai sinif BMG160

{

public static void main (String args ) İstisna atır

{

// I2C avtobusu yaradın

I2CBus avtobusu = I2CFactory.getInstance (I2CBus. BUS_1);

// I2C cihazı alın, BMG160 I2C ünvanı 0x68 (104)

I2CDevice cihazı = bus.getDevice (0x68);

// Aralıq qeydini seçin

// Tam miqyaslı aralığı konfiqurasiya edin, 2000 dps

device.write (0x0F, (bayt) 0x80);

// Bant genişliyi qeydini seçin

// Bant genişliyi 200 Hz

device.write (0x10, (bayt) 0x04);

Thread.sleep (500);

// 6 bayt məlumat oxuyun

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

bayt məlumat = yeni bayt [6];

device.read (0x02, data, 0, 6);

// Məlumatları çevirin

int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF));

əgər (xGyro> 32767)

{

xGyro -= 65536;

}

int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF));

əgər (yGyro> 32767)

{

yGyro -= 65536;

}

int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF));

əgər (zGyro> 32767)

{

zGyro -= 65536;

}

// Ekrana məlumat çıxarın

System.out.printf ("Dönmə X Ekseni: %d %n", xGyro);

System.out.printf ("Y-Fırlanma Ekseni: %d %n", yGyro);

System.out.printf ("Z-Fırlanma oxu: %d %n", zGyro);

}

}

Sensor və lövhə arasında i2c əlaqəsini asanlaşdıran kitabxana pi4j -dir, onun müxtəlif paketləri I2CBus, I2CDevice və I2CFactory əlaqəni qurmağa kömək edir.

com.pi4j.io.i2c. I2CBus; idxal com.pi4j.io.i2c. I2CDevice; com.pi4j.io.i2c. I2CFactory idxal edin; java.io. IOException idxal edin;

Kodun bu hissəsi, sensorun yazma () funksiyasından istifadə edərək müvafiq əmrləri yazaraq bucaq dərəcəsini ölçməsini təmin edir və sonra oxumaq () funksiyasından istifadə edərək məlumatları oxuyur.

// Aralıq qeydini seçin // Tam miqyaslı aralığı konfiqurasiya edin, 2000 dps device.write (0x0F, (bayt) 0x80); // Bant genişliyi qeydini seçin // Bant genişliyi 200 Hz cihaz. Yaz (0x10, (bayt) 0x04); Thread.sleep (500);

// 6 bayt məlumat oxuyun

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb bayt data = yeni bayt [6]; device.read (0x02, data, 0, 6);

Sensordan alınan məlumatlar aşağıdakılardan istifadə edərək uyğun formata çevrilir:

int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF)); əgər (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF)); əgər (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF)); əgər (zGyro> 32767) {zGyro -= 65536; }

Çıxış System.out.println () funksiyasından istifadə edərək aşağıdakı formatda çap olunur.

System.out.println ("Fırlanma X-Ekseni: %d %n", xGyro); System.out.println ("Y-Fırlanma Ekseni: %d %n", yGyro); System.out.println ("Z-Fırlanma oxu: %d %n", zGyro);

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

Addım 5: Tətbiqlər:

Tətbiqlər
Tətbiqlər

BMG160, cib telefonları, insan maşın interfeysi cihazları kimi cihazlarda çox sayda tətbiqə malikdir. Bu sensor modulu, görüntü sabitləşdirmə (DSC və kamera-telefon), oyun və işarə cihazları kimi istehlakçı tətbiqləri üçün tələbləri ödəmək üçün hazırlanmışdır. Jest tanıma tələb edən sistemlərdə və daxili naviqasiyada istifadə olunan sistemlərdə də istifadə olunur.

Tövsiyə: