Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
MPU-6000 adalah Sensor Pelacakan Gerak 6 Sumbu yang memiliki akselerometer 3 Sumbu dan giroskop 3 Sumbu yang tertanam di dalamnya. Sensor ini mampu melacak posisi dan lokasi objek secara tepat di bidang 3 dimensi secara efisien. Ini dapat digunakan dalam sistem yang membutuhkan analisis posisi dengan presisi tertinggi.
Dalam tutorial ini antarmuka modul sensor MPU-6000 dengan arduino nano telah diilustrasikan. Untuk membaca nilai percepatan dan sudut rotasi, kami telah menggunakan arduino nano dengan adaptor I2c. Adaptor I2C ini membuat koneksi ke modul sensor menjadi lebih mudah dan lebih andal.
Langkah 1: Perangkat Keras Yang Dibutuhkan:
Bahan yang kami butuhkan untuk mencapai tujuan kami meliputi komponen perangkat keras berikut:
1. MPU-6000
2. Arduino Nano
3. Kabel I2C
4. Perisai I2C untuk arduino nano
Langkah 2: Sambungan Perangkat Keras:
Bagian hookup perangkat keras pada dasarnya menjelaskan koneksi kabel yang diperlukan antara sensor dan arduino nano. Memastikan koneksi yang benar adalah kebutuhan dasar saat bekerja pada sistem apa pun untuk output yang diinginkan. Jadi, koneksi yang diperlukan adalah sebagai berikut:
MPU-6000 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 3: Kode untuk Pelacakan Gerak:
Mari kita mulai dengan kode arduino sekarang.
Saat menggunakan modul sensor dengan arduino, kami menyertakan pustaka Wire.h. Pustaka "Wire" berisi fungsi-fungsi yang memfasilitasi komunikasi i2c antara sensor dan board arduino.
Seluruh kode arduino diberikan di bawah ini untuk kenyamanan pengguna:
#termasuk
// Alamat MPU-6000 I2C adalah 0x68(104)
#definisikan Addr 0x68
batalkan pengaturan()
{
// Inisialisasi komunikasi I2C sebagai Master
Kawat.mulai();
// Inisialisasi komunikasi serial, setel baud rate = 9600
Serial.begin(9600);
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih register konfigurasi giroskop
Kawat.tulis (0x1B);
// Rentang skala penuh = 2000 dps
Kawat.tulis (0x18);
// Hentikan transmisi I2C
Kawat.endTransmisi();
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih register konfigurasi accelerometer
Wire.write(0x1C);
// Rentang skala penuh = +/-16g
Kawat.tulis (0x18);
// Hentikan transmisi I2C
Kawat.endTransmisi();
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih register manajemen daya
Kawat.tulis (0x6B);
// PLL dengan referensi xGyro
Kawat.tulis (0x01);
// Hentikan transmisi I2C
Kawat.endTransmisi();
penundaan (300);
}
lingkaran kosong()
{
data int yang tidak ditandatangani[6];
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih daftar data
Kawat.tulis (0x3B);
// Hentikan transmisi I2C
Kawat.endTransmisi();
// Meminta 6 byte data
Wire.requestFrom(Addr, 6);
// Baca 6 byte data
if(Wire.available() == 6)
{
data[0] = Wire.read();
data[1] = Kawat.baca();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Kawat.baca();
data[5] = Wire.read();
}
// Konversi data
int xAccl = data[0] * 256 + data[1];
int yAccl = data[2] * 256 + data[3];
int zAccl = data[4] * 256 + data[5];
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih daftar data
Kawat.tulis (0x43);
// Hentikan transmisi I2C
Kawat.endTransmisi();
// Meminta 6 byte data
Wire.requestFrom(Addr, 6);
// Baca 6 byte data
if(Wire.available() == 6)
{
data[0] = Wire.read();
data[1] = Kawat.baca();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Kawat.baca();
data[5] = Wire.read();
}
// Konversi data
int xGyro = data[0] * 256 + data[1];
int yGyro = data[2] * 256 + data[3];
int zGyro = data[4] * 256 + data[5];
// Keluarkan data ke monitor serial
Serial.print("Percepatan pada Sumbu X: ");
Serial.println(xAccl);
Serial.print("Percepatan pada Sumbu Y: ");
Serial.println(yAccl);
Serial.print("Percepatan pada Sumbu Z: ");
Serial.println(zAccl);
Serial.print("Sumbu X dari Rotasi: ");
Serial.println(xGyro);
Serial.print("Sumbu Y dari Rotasi: ");
Serial.println(yGyro);
Serial.print("Sumbu Z dari Rotasi: ");
Serial.println(zGyro);
penundaan (500);
}
Dalam wire library Wire.write() dan Wire.read() digunakan untuk menulis perintah dan membaca output sensor.
Serial.print() dan Serial.println() digunakan untuk menampilkan output dari sensor pada serial monitor Arduino IDE.
Output dari sensor ditunjukkan pada gambar di atas.
Langkah 4: Aplikasi:
MPU-6000 adalah sensor pelacakan gerak, yang menemukan penerapannya di antarmuka gerak ponsel cerdas dan tablet. Di smartphone, sensor ini dapat digunakan dalam aplikasi seperti perintah gerakan untuk aplikasi dan kontrol telepon, game yang disempurnakan, augmented reality, pengambilan dan tampilan foto panorama, serta navigasi pejalan kaki dan kendaraan. Teknologi MotionTracking dapat mengubah handset dan tablet menjadi perangkat cerdas 3D yang kuat yang dapat digunakan dalam aplikasi mulai dari pemantauan kesehatan dan kebugaran hingga layanan berbasis lokasi.