Isi kandungan:

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

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

Video: Antara muka Sensor Giroskop 3-Axis BMG160 Dengan Raspberry Pi: 5 Langkah
Video: #12 Arduino Nano 33 BLE Sense | Unboxing, Review, Tutorial 2024, Julai
Anonim
Image
Image

Di dunia sekarang ini, lebih daripada separuh belia dan kanak-kanak gemar bermain permainan dan semua yang menyukainya, terpesona dengan aspek teknikal permainan mengetahui pentingnya penginderaan gerakan dalam domain ini. Kami juga kagum dengan perkara yang sama dan hanya untuk membawanya ke papan, kami memikirkan untuk menggunakan sensor giroskop yang dapat mengukur kadar sudut objek apa pun. Jadi, sensor yang kami gunakan untuk menangani tugas tersebut adalah BMG160. BMG160 adalah sensor giroskop 16-bit, digital, triaksial, yang dapat mengukur kadar sudut dalam tiga dimensi ruang tegak lurus.

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

Perkakasan yang anda perlukan untuk tujuan ini adalah seperti berikut:

1. BMG160

2. Raspberry Pi

3. Kabel I2C

4. Perisai I2C untuk Raspberry Pi

5. Kabel Ethernet

Langkah 1: Gambaran Keseluruhan BMG160:

Apa yang kamu perlu..!!
Apa yang kamu perlu..!!

Pertama sekali, kami ingin membiasakan anda dengan ciri asas modul sensor iaitu BMG160 dan protokol komunikasi yang berfungsi.

BMG160 pada dasarnya adalah sensor giroskop 16-bit, digital, triaksial, yang dapat mengukur kadar sudut. Ia mampu mengira kadar sudut dalam tiga dimensi ruang tegak lurus, paksi x-, y- dan z, dan memberikan isyarat output yang sesuai. Ia boleh berkomunikasi dengan papan raspberry pi menggunakan protokol komunikasi I2C. Modul khusus ini dirancang untuk memenuhi keperluan untuk aplikasi pengguna dan juga keperluan industri.

Protokol komunikasi di mana sensor berfungsi adalah I2C. I2C bermaksud litar antara bersepadu. Ini adalah protokol komunikasi di mana komunikasi berlaku melalui talian SDA (data bersiri) dan SCL (jam bersiri). Ia membolehkan menyambungkan pelbagai peranti pada masa yang sama. Ini adalah salah satu protokol komunikasi yang paling mudah dan berkesan.

Langkah 2: Apa yang Anda Perlu..

Apa yang kamu perlu..!!
Apa yang kamu perlu..!!
Apa yang kamu perlu..!!
Apa yang kamu perlu..!!
Apa yang kamu perlu..!!
Apa yang kamu perlu..!!

Bahan yang kami perlukan untuk mencapai tujuan kami merangkumi komponen perkakasan berikut:

1. BMG160

2. Raspberry Pi

3. Kabel I2C

4. Perisai I2C Untuk Raspberry Pi

5. Kabel Ethernet

Langkah 3: Penyambungan Perkakasan:

Penyambungan Perkakasan
Penyambungan Perkakasan
Penyambungan Perkakasan
Penyambungan Perkakasan

Bahagian penyambungan perkakasan pada dasarnya menerangkan sambungan pendawaian yang diperlukan antara sensor dan raspberry pi. Memastikan sambungan yang betul adalah keperluan asas semasa mengerjakan sistem apa pun untuk output yang diinginkan. Jadi, sambungan yang diperlukan adalah seperti berikut:

BMG160 akan berfungsi di atas I2C. Berikut adalah contoh rajah pendawaian, yang menunjukkan cara memasang setiap antara muka sensor.

Di luar kotak, papan dikonfigurasikan untuk antara muka I2C, oleh itu kami mengesyorkan menggunakan penyambungan ini jika anda tidak agnostik. Yang anda perlukan hanyalah empat wayar!

Hanya diperlukan empat sambungan pin Vcc, Gnd, SCL dan SDA dan ini disambungkan dengan bantuan kabel I2C.

Sambungan ini ditunjukkan dalam gambar di atas.

Langkah 4: Pengukuran Giroskop 3-Paksi Menggunakan Kod Java:

Pengukuran Giroskop 3-Axis Menggunakan Kod Java
Pengukuran Giroskop 3-Axis Menggunakan Kod Java
Pengukuran Giroskop 3-Axis Menggunakan Kod Java
Pengukuran Giroskop 3-Axis Menggunakan Kod Java

Kelebihan menggunakan raspberry pi adalah, yang memberi anda fleksibiliti bahasa pengaturcaraan di mana anda ingin memprogram papan untuk menghubungkan antara sensor dengannya. Dengan memanfaatkan kelebihan papan ini, kami menunjukkan di sini pengaturcaraannya di Java. Kod Java untuk BMG160 boleh dimuat turun dari komuniti github kami iaitu Komuniti Dcube Store.

Selain untuk kemudahan pengguna, kami akan menerangkan kodnya di sini juga: Sebagai langkah pertama pengekodan, anda perlu memuat turun perpustakaan pi4j sekiranya terdapat java, kerana perpustakaan ini menyokong fungsi yang digunakan dalam kod tersebut. Oleh itu, untuk memuat turun perpustakaan anda boleh melayari pautan berikut:

pi4j.com/install.html

Anda boleh menyalin kod java yang berfungsi untuk sensor ini dari sini juga:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;

kelas awam BMG160

{

utama kekosongan statik awam (String args ) melontarkan Pengecualian

{

// Buat bas I2C

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

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

Peranti I2CDevice = bus.getDevice (0x68);

// Pilih daftar julat

// Konfigurasikan julat skala penuh, 2000 dps

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

// Pilih daftar lebar jalur

// Lebar jalur 200 Hz

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

Thread.sleep (500);

// Baca 6 bait data

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

bait data = bait baru [6];

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

// Tukar 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 skrin

System.out.printf ("X-Axis of Rotation:% d% n", xGyro);

System.out.printf ("Paksi-Y Putaran:% d% n", yGyro);

System.out.printf ("Z-axis of Rotation:% d% n", zGyro);

}

}

Perpustakaan yang memudahkan komunikasi i2c antara sensor dan papan adalah pi4j, pelbagai paket I2CBus, I2CDevice dan I2CFactory membantu mewujudkan sambungan.

import com.pi4j.io.i2c. I2CBus; import com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; import java.io. IOException;

Bahagian kod ini membuat sensor mengukur kadar sudut dengan menulis perintah masing-masing menggunakan fungsi tulis () dan kemudian data dibaca menggunakan fungsi baca ().

// Pilih daftar julat // Konfigurasikan julat skala penuh, 2000 dps device.write (0x0F, (byte) 0x80); // Pilih daftar lebar jalur // Bandwidth 200 Hz device.write (0x10, (byte) 0x04); Thread.sleep (500);

// Baca 6 bait data

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

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

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; }

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

System.out.println ("X-Axis of Rotation:% d% n", xGyro); System.out.println ("Paksi-Y Putaran:% d% n", yGyro); System.out.println ("Z-axis of Rotation:% d% n", zGyro);

Output sensor ditunjukkan pada gambar di atas.

Langkah 5: Aplikasi:

Permohonan
Permohonan

BMG160 memiliki sejumlah aplikasi yang bervariasi dalam peranti seperti telefon bimbit, perangkat antara muka mesin manusia. Modul sensor ini telah dirancang untuk memenuhi keperluan untuk aplikasi pengguna seperti penstabilan gambar (DSC dan kamera-telefon), permainan dan peranti penunjuk. Ini juga digunakan dalam sistem yang memerlukan pengenalan gerakan dan sistem yang digunakan dalam navigasi dalam ruangan.

Disyorkan: