İçindekiler:
- Adım 1: BMG160'a Genel Bakış:
- Adım 2: İhtiyacınız Olan Şey..!
- Adım 3: Donanım Bağlantısı:
- Adım 4: Java Kodunu Kullanarak 3 Eksenli Jiroskop Ölçümü:
- Adım 5: Uygulamalar:
Video: 3 Eksenli Jiroskop Sensörü BMG160'ın Raspberry Pi ile Arayüz Oluşturulması: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Günümüz dünyasında gençlerin ve çocukların yarısından fazlası oyun oynamayı seviyor ve oyun oynamanın teknik yönlerine hayran olan herkes bu alanda hareket algılamanın önemini biliyor. Biz de aynı şeye hayran kaldık ve sadece tahtalara getirmek için herhangi bir nesnenin açısal hızını ölçebilen bir jiroskop sensörü üzerinde çalışmayı düşündük. Yani, görevle başa çıkmak için aldığımız sensör BMG160. BMG160, açısal hızı üç dikey oda boyutunda ölçebilen 16 bit, dijital, üç eksenli bir jiroskop sensörüdür.
Bu derste, programlama dili olarak Java kullanarak BMG160'ın Raspberry pi ile çalışmasını göstereceğiz.
Bu amaçla ihtiyaç duyacağınız donanımlar aşağıdaki gibidir:
1. BMG160
2. Ahududu Pi
3. I2C Kablosu
4. Raspberry Pi için I2C Kalkanı
5. Ethernet Kablosu
Adım 1: BMG160'a Genel Bakış:
Öncelikle BMG160 sensör modülünün temel özelliklerini ve üzerinde çalıştığı iletişim protokolünü tanımak isteriz.
BMG160 temel olarak açısal hızları ölçebilen 16 bitlik, dijital, üç eksenli bir jiroskop sensörüdür. Üç dik oda boyutunda, x-, y- ve z ekseninde açısal oranları hesaplayabilir ve karşılık gelen çıkış sinyallerini sağlayabilir. I2C iletişim protokolünü kullanarak ahududu pi kartı ile iletişim kurabilir. Bu özel modül, tüketici uygulamalarının yanı sıra endüstriyel amaçlar için gereksinimleri karşılamak üzere tasarlanmıştır.
Sensörün üzerinde çalıştığı iletişim protokolü I2C'dir. I2C, inter-entegre devre anlamına gelir. Haberleşmenin SDA(seri data) ve SCL(seri saat) hatları üzerinden gerçekleştiği bir haberleşme protokolüdür. Aynı anda birden fazla cihazın bağlanmasına izin verir. En basit ve en verimli iletişim protokollerinden biridir.
Adım 2: İhtiyacınız Olan Şey..!
Hedefimizi gerçekleştirmek için ihtiyaç duyduğumuz malzemeler aşağıdaki donanım bileşenlerini içerir:
1. BMG160
2. Ahududu Pi
3. I2C Kablosu
4. Raspberry Pi için I2C Kalkanı
5. Ethernet Kablosu
Adım 3: Donanım Bağlantısı:
Donanım bağlantısı bölümü temel olarak sensör ve ahududu pi 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:
BMG160, 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.
Adım 4: Java Kodunu Kullanarak 3 Eksenli Jiroskop Ölçümü:
Raspberry pi kullanmanın avantajı, kartı programlamak istediğiniz programlama dilinin, sensör ile arayüz oluşturmak için size esneklik sağlamasıdır. Bu kartın bu avantajından yararlanarak, burada Java'daki programlamasını gösteriyoruz. BMG160 için Java kodu, Dcube Mağaza Topluluğu olan github topluluğumuzdan indirilebilir.
Kullanıcıların kolaylığının yanı sıra kodu burada da açıklıyoruz: Kodlamanın ilk adımı olarak java durumunda pi4j kitaplığını indirmeniz gerekiyor, çünkü bu kitaplık kodda kullanılan fonksiyonları destekliyor. Bu nedenle, kütüphaneyi indirmek için aşağıdaki bağlantıyı ziyaret edebilirsiniz:
pi4j.com/install.html
Bu sensör için çalışan Java kodunu buradan da kopyalayabilirsiniz:
com.pi4j.io.i2c. I2CBus'u içe aktarın;
com.pi4j.io.i2c. I2CDevice'ı içe aktarın;
com.pi4j.io.i2c. I2CFFactory'yi içe aktarın;
java.io. IOException'ı içe aktarın;
genel sınıf BMG160
{
public static void main(String args) İstisna atar
{
// I2C veri yolu oluştur
I2CBus veri yolu = I2CFactory.getInstance(I2CBus. BUS_1);
// I2C cihazını al, BMG160 I2C adresi 0x68(104)
I2CDevice cihazı = bus.getDevice(0x68);
// Aralık kaydı seç
// Tam ölçek aralığını yapılandır, 2000 dps
device.write(0x0F, (bayt)0x80);
// Bant genişliği kaydını seç
// Bant genişliği 200 Hz
device.write(0x10, (bayt)0x04);
thread.sleep(500);
// 6 bayt veri oku
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
bayt veri = yeni bayt[6];
device.read(0x02, veri, 0, 6);
// Verileri dönüştür
int xGyro = ((veri[1] ve 0xFF) * 256 + (veri[0] ve 0xFF));
if(xGyro > 32767)
{
xGyro -= 65536;
}
int yGyro = ((veri[3] ve 0xFF) * 256 + (veri[2] ve 0xFF));
if(yGyro > 32767)
{
yGyro -= 65536;
}
int zGyro = ((veri[5] & 0xFF) * 256 + (veri[4] & 0xFF));
if(zGyro > 32767)
{
zGyro -= 65536;
}
// Ekrana veri çıktısı
System.out.printf("X Dönme Ekseni: %d %n", xGyro);
System.out.printf("Y ekseni Dönme: %d %n", yGyro);
System.out.printf("Z ekseni Dönme: %d %n", zGyro);
}
}
Sensör ve kart arasındaki i2c iletişimini kolaylaştıran kütüphane pi4j'dir, çeşitli paketleri I2CBus, I2CDevice ve I2CFctory bağlantının kurulmasına yardımcı olur.
com.pi4j.io.i2c. I2CBus'u içe aktar; com.pi4j.io.i2c. I2CDevice'ı içe aktar; com.pi4j.io.i2c. I2CFFactory'yi içe aktarın; java.io. IOException'ı içe aktarın;
Kodun bu kısmı, write() işlevini kullanarak ilgili komutları yazarak sensörün açısal hızı ölçmesini sağlar ve ardından veriler read() işlevi kullanılarak okunur.
// Aralık kaydını seç // Tam ölçek aralığını yapılandır, 2000 dps device.write(0x0F, (byte)0x80); // Bant genişliği kaydını seçin // Bant genişliği 200 Hz device.write(0x10, (byte)0x04); thread.sleep(500);
// 6 bayt veri oku
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb bayt veri = yeni bayt[6]; device.read(0x02, veri, 0, 6);
Sensörden alınan veriler, aşağıdakiler kullanılarak uygun formata dönüştürülür:
int xGyro = ((veri[1] ve 0xFF) * 256 + (veri[0] ve 0xFF)); if(xGyro > 32767) { xGyro -= 65536; } int yGyro = ((veri[3] ve 0xFF) * 256 + (veri[2] ve 0xFF)); if(yGyro > 32767) { yGyro -= 65536; } int zGyro = ((veri[5] & 0xFF) * 256 + (veri[4] & 0xFF)); if(zGyro > 32767) { zGyro -= 65536; }
Çıktı, System.out.println() işlevi kullanılarak aşağıdaki biçimde yazdırılır.
System.out.println("X-Dönme Ekseni: %d %n", xGyro); System.out.println("Y ekseni Dönme: %d %n", yGyro); System.out.println("Z ekseni Dönme: %d %n", zGyro);
Sensörün çıkışı yukarıdaki resimde gösterilmektedir.
Adım 5: Uygulamalar:
BMG160, cep telefonları, insan makine arayüz cihazları gibi cihazlarda çok çeşitli uygulamalara sahiptir. Bu sensör modülü, görüntü sabitleme (DSC ve kameralı telefon), oyun ve işaretleme cihazları gibi tüketici uygulamalarının gereksinimlerini karşılamak üzere tasarlanmıştır. Ayrıca jest tanıma gerektiren sistemlerde ve iç mekan navigasyonunda kullanılan sistemlerde kullanılır.
Önerilen:
Arduino ve ESP8266 ile DS18B20 Sıcaklık Sensörünün Arayüz Oluşturulması: 8 Adım
Arduino ve ESP8266 ile DS18B20 Sıcaklık Sensörünün Arayüzlenmesi: Hey, naber millet! Akarsh burada CETech'ten. Bugün cephaneliğimize DS18B20 Sıcaklık Sensörü olarak bilinen yeni bir Sensör ekleyeceğiz. DHT11'e benzer bir sıcaklık sensörüdür ancak farklı uygulamalara sahiptir. Onunla karşılaştıracağız
3 Eksenli Jiroskop Sensörü BMG160'ın Arduino Nano ile Arayüz Oluşturulması: 5 Adım
3 Eksenli Jiroskop Sensörü BMG160'ın Arduino Nano ile Arayüzlenmesi: Günümüz dünyasında gençlerin ve çocukların yarısından fazlası oyun oynamayı sever ve oyun oynamayı seven, oyunun teknik yönleriyle büyülenen herkes hareket algılamanın önemini bilir. bu etki alanında. Biz de aynı şeye şaşırdık ve
Arduino Uno ile Çift Eksenli Joystick Nasıl Arayüz Yapılır: 5 Adım
Arduino Uno ile Çift Eksenli Joystick Arayüz Nasıl Yapılır: Burada arduino uno ile bir düello eksenli joystick'i arayüzleyeceğiz. Bu joystick, x ekseni ve y ekseni için iki analog pime ve anahtar için bir dijital pime sahiptir
3 Eksenli Jiroskop Sensörü BMG160'ın Parçacıklı Ara Yüzü: 5 Adım
3 Eksenli Jiroskop Sensörü BMG160 Parçacıklı Arayüz: Günümüz dünyasında, gençlerin ve çocukların yarısından fazlası oyun oynamayı sever ve oyun oynamayı seven, oyunun teknik yönleriyle büyülenen herkes, hareket algılamanın önemini bilir. bu etki alanı. Biz de aynı şeye şaşırdık ve
Merhaba Blynk! SPEEEduino'nun Blynk Uygulamasıyla Arayüz Oluşturulması: 5 Adım
Merhaba Blynk! SPEEEduino'nun Blynk Uygulaması ile Arayüz Oluşturulması: SPEEEduino nedir? SPEEEduino, eğitimciler için tasarlanmış, Arduino ekosistemine dayalı, Wi-Fi özellikli bir mikro denetleyici kartıdır. SPEEEduino, Arduino'nun form faktörünü ve mikro denetleyicisini ESP8266 Wi-Fi SoC ile birleştirerek