Daftar Isi:

Antarmuka Sensor Giroskop 3-Axis BMG160 Dengan Raspberry Pi: 5 Langkah
Antarmuka Sensor Giroskop 3-Axis BMG160 Dengan Raspberry Pi: 5 Langkah

Video: Antarmuka Sensor Giroskop 3-Axis BMG160 Dengan Raspberry Pi: 5 Langkah

Video: Antarmuka Sensor Giroskop 3-Axis BMG160 Dengan Raspberry Pi: 5 Langkah
Video: PSoC 6 101: Lesson 3-5a Basic Motion Sensor Implementation 2024, November
Anonim
Image
Image

Di dunia saat ini, lebih dari separuh remaja dan anak-anak menyukai game dan semua orang yang menyukainya, terpesona oleh aspek teknis game, mengetahui pentingnya penginderaan gerak dalam domain ini. Kami juga kagum dengan hal yang sama dan hanya untuk membawanya ke papan, kami berpikir untuk bekerja pada sensor giroskop yang dapat mengukur laju sudut objek apa pun. Jadi, sensor yang kami pakai untuk menangani tugas tersebut adalah BMG160. BMG160 adalah sensor giroskop 16-bit, digital, triaksial, yang dapat mengukur laju sudut dalam tiga dimensi ruang yang tegak lurus.

Dalam tutorial ini, kita akan mendemonstrasikan cara kerja BMG160 dengan Raspberry pi, menggunakan Java sebagai bahasa pemrograman.

Perangkat keras yang Anda perlukan untuk tujuan ini adalah sebagai berikut:

1. BMG160

2. Raspberry Pi

3. Kabel I2C

4. Perisai I2C untuk Raspberry Pi

5. Kabel Ethernet

Langkah 1: Ikhtisar BMG160:

Apa yang kau butuhkan..!!
Apa yang kau butuhkan..!!

Pertama-tama kami ingin membiasakan Anda dengan fitur dasar modul sensor yaitu BMG160 dan protokol komunikasi yang digunakannya.

BMG160 pada dasarnya adalah sensor giroskop 16-bit, digital, triaksial, yang dapat mengukur kecepatan sudut. Hal ini mampu menghitung tingkat sudut dalam tiga dimensi ruang tegak lurus, sumbu x-, y- dan z, dan memberikan sinyal output yang sesuai. Itu dapat berkomunikasi dengan papan raspberry pi menggunakan protokol komunikasi I2C. Modul khusus ini dirancang untuk memenuhi persyaratan untuk aplikasi konsumen serta keperluan industri.

Protokol komunikasi tempat sensor bekerja adalah I2C. I2C adalah singkatan dari inter-integrated circuit. Ini adalah protokol komunikasi di mana komunikasi terjadi melalui jalur SDA (data serial) dan SCL (jam serial). Ini memungkinkan menghubungkan beberapa perangkat secara bersamaan. Ini adalah salah satu protokol komunikasi yang paling sederhana dan paling efisien.

Langkah 2: Yang Anda Butuhkan.

Apa yang kau butuhkan..!!
Apa yang kau butuhkan..!!
Apa yang kau butuhkan..!!
Apa yang kau butuhkan..!!
Apa yang kau butuhkan..!!
Apa yang kau butuhkan..!!

Bahan yang kami butuhkan untuk mencapai tujuan kami meliputi komponen perangkat keras berikut:

1. BMG160

2. Raspberry Pi

3. Kabel I2C

4. Perisai I2C Untuk Raspberry Pi

5. Kabel Ethernet

Langkah 3: Sambungan Perangkat Keras:

Sambungan Perangkat Keras
Sambungan Perangkat Keras
Sambungan Perangkat Keras
Sambungan Perangkat Keras

Bagian hookup perangkat keras pada dasarnya menjelaskan koneksi kabel yang diperlukan antara sensor dan raspberry pi. Memastikan koneksi yang benar adalah kebutuhan dasar saat bekerja pada sistem apa pun untuk output yang diinginkan. Jadi, koneksi yang diperlukan adalah sebagai berikut:

BMG160 akan bekerja melalui I2C. Berikut adalah contoh diagram pengkabelan, yang menunjukkan cara memasang setiap antarmuka sensor.

Out-of-the-box, papan dikonfigurasi untuk antarmuka I2C, karena itu kami sarankan menggunakan hookup ini jika Anda agnostik. Yang Anda butuhkan hanyalah empat kabel!

Hanya empat koneksi yang diperlukan pin Vcc, Gnd, SCL dan SDA dan ini terhubung dengan bantuan kabel I2C.

Koneksi ini ditunjukkan pada gambar di atas.

Langkah 4: Pengukuran Giroskop 3-Axis Menggunakan Kode Java:

Pengukuran Giroskop 3-Sumbu Menggunakan Kode Java
Pengukuran Giroskop 3-Sumbu Menggunakan Kode Java
Pengukuran Giroskop 3-Sumbu Menggunakan Kode Java
Pengukuran Giroskop 3-Sumbu Menggunakan Kode Java

Keuntungan menggunakan raspberry pi adalah, memberikan Anda fleksibilitas bahasa pemrograman di mana Anda ingin memprogram papan untuk menghubungkan sensor dengannya. Memanfaatkan keunggulan papan ini, kami menunjukkan di sini pemrogramannya di Jawa. Kode Java untuk BMG160 dapat diunduh dari komunitas github kami yaitu Komunitas Toko Dcube.

Selain untuk memudahkan pengguna, kami juga menjelaskan kodenya di sini: Sebagai langkah pertama pengkodean, Anda perlu mengunduh pustaka pi4j untuk Java, karena pustaka ini mendukung fungsi yang digunakan dalam kode. Nah, untuk mendownload librarynya anda bisa mengunjungi link berikut ini:

pi4j.com/install.html

Anda dapat menyalin kode Java yang berfungsi untuk sensor ini dari sini juga:

impor com.pi4j.io.i2c. I2CBus;

impor com.pi4j.io.i2c. I2CDevice;

impor com.pi4j.io.i2c. I2CFfactory;

impor java.io. IOException;

kelas umum BMG160

{

public static void main(String args) melempar Pengecualian

{

// Buat bus I2C

I2CBus bus = I2CFfactory.getInstance(I2CBus. BUS_1);

// Dapatkan perangkat I2C, alamat I2C BMG160 adalah 0x68(104)

Perangkat I2CDevice = bus.getDevice(0x68);

// Pilih daftar rentang

// Konfigurasi rentang skala penuh, 2000 dps

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

// Pilih register bandwidth

// Bandwidth 200 Hz

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

Thread.sleep(500);

// Baca 6 byte data

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

byte data = byte baru[6];

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

// Mengonversi data

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

jika(xGyro > 32767)

{

xGyro -= 65536;

}

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

jika(yGyro > 32767)

{

yGyro -= 65536;

}

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

jika(zGyro > 32767)

{

zGyro -= 65536;

}

// Keluarkan data ke layar

System.out.printf("Sumbu X dari Rotasi: %d %n", xGyro);

System.out.printf("Sumbu Y dari Rotasi: %d %n", yGyro);

System.out.printf("Sumbu Z dari Rotasi: %d %n", zGyro);

}

}

Pustaka yang memfasilitasi komunikasi i2c antara sensor dan papan adalah pi4j, berbagai paketnya I2CBus, I2CDevice dan I2CFfactory membantu membangun koneksi.

impor com.pi4j.io.i2c. I2CBus;impor com.pi4j.io.i2c. I2CDevice; impor com.pi4j.io.i2c. I2CFfactory; impor java.io. IOException;

Bagian kode ini membuat sensor mengukur laju sudut dengan menulis perintah masing-masing menggunakan fungsi write() dan kemudian data dibaca menggunakan fungsi read().

// Pilih register rentang // Konfigurasi rentang skala penuh, 2000 dps device.write(0x0F, (byte)0x80); // Pilih register bandwidth // Bandwidth 200 Hz device.write(0x10, (byte)0x04); Thread.sleep(500);

// Baca 6 byte data

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

Data yang diterima dari sensor diubah ke format yang sesuai dengan menggunakan berikut ini:

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

Output dicetak menggunakan fungsi System.out.println(), dalam format berikut.

System.out.println("Sumbu X dari Rotasi: %d %n", xGyro); System.out.println("Sumbu Y dari Rotasi: %d %n", yGyro); System.out.println("Sumbu Z dari Rotasi: %d %n", zGyro);

Output dari sensor ditunjukkan pada gambar di atas.

Langkah 5: Aplikasi:

Aplikasi
Aplikasi

BMG160 memiliki beragam jumlah aplikasi di perangkat seperti ponsel, perangkat antarmuka mesin manusia. Modul sensor ini telah dirancang untuk memenuhi persyaratan untuk aplikasi konsumen seperti stabilisasi gambar (DSC dan ponsel kamera), game, dan perangkat penunjuk. Ini juga digunakan dalam sistem yang memerlukan pengenalan gerakan dan sistem yang digunakan dalam navigasi dalam ruangan.

Direkomendasikan: