Pendahuluan
Modul GY-521 adalah salah satu sensor IMU (Inertial Measurement Unit) yang populer, yang menggabungkan akselerometer dan giroskop dalam satu paket. Dengan menggunakan sensor ini, kita dapat mengukur percepatan, kecepatan angular, dan orientasi. Kombinasi ini sangat berguna dalam berbagai aplikasi seperti robotika, drone, dan perangkat wearable.
Raspberry Pi Pico, sebagai salah satu papan mikrokontroler terbaru dari Raspberry Pi, menawarkan kemudahan dalam pengembangan proyek berbasis sensor. Dalam artikel ini, kita akan membahas bagaimana cara membaca data dari modul GY-521 menggunakan Raspberry Pi Pico.
Alat dan Bahan yang Diperlukan
Sebelum kita mulai, berikut adalah alat dan bahan yang diperlukan:
- Raspberry Pi Pico
- Modul GY-521
- Kabel Jumper
- Breadboard (opsional)
- Software Pengembangan (Thonny atau Arduino IDE)
- Perpustakaan I2C untuk MicroPython atau Arduino
Pengaturan Koneksi
Untuk menghubungkan GY-521 ke Raspberry Pi Pico, Anda perlu mengetahui pin yang tepat. Berikut adalah koneksi dasar yang harus dibuat:
- VCC dari GY-521 ke 3.3V pada Raspberry Pi Pico
- GND dari GY-521 ke GND pada Raspberry Pi Pico
- SDA dari GY-521 ke GP0 pada Raspberry Pi Pico
- SCL dari GY-521 ke GP1 pada Raspberry Pi Pico
Setelah melakukan penyambungan, berikutnya kita akan melakukan pemrograman untuk membaca data dari sensor.
Memprogram Raspberry Pi Pico
Menggunakan MicroPython
Berikut adalah langkah-langkah untuk membaca data dari GY-521 menggunakan MicroPython.
-
Instalasi MicroPython pada Raspberry Pi Pico
Pertama, Anda perlu menginstal MicroPython di Raspberry Pi Pico Anda. Anda dapat mengunduh firmware MicroPython dari situs resmi Raspberry Pi dan menginstalnya menggunakan Thonny.
-
Menginstal Perpustakaan I2C
Setelah MicroPython berhasil diinstal, Anda perlu mengimpor pustaka I2C. Berikut adalah contoh kode untuk membaca data dari sensor:
from machine import Pin, I2C import time # Inisialisasi I2C i2c = I2C(1, scl=Pin(1), sda=Pin(0), freq=400000) GY521_ADDRESS = 0x68 # Inisialisasi GY-521 i2c.writeto_mem(GY521_ADDRESS, 0x6B, b'\x00') # Mengaktifkan sensor def read_data(): # Membaca data akselerometer accel_data = i2c.readfrom_mem(GY521_ADDRESS, 0x3B, 6) ax = int.from_bytes(accel_data[0:2], 'big') / 16384.0 ay = int.from_bytes(accel_data[2:4], 'big') / 16384.0 az = int.from_bytes(accel_data[4:6], 'big') / 16384.0 # Membaca data giroskop gyro_data = i2c.readfrom_mem(GY521_ADDRESS, 0x43, 6) gx = int.from_bytes(gyro_data[0:2], 'big') / 131.0 gy = int.from_bytes(gyro_data[2:4], 'big') / 131.0 gz = int.from_bytes(gyro_data[4:6], 'big') / 131.0 return ax, ay, az, gx, gy, gz while True: accel_and_gyro = read_data() print("Akselerometer: X: {:.2f}, Y: {:.2f}, Z: {:.2f}".format(accel_and_gyro[0], accel_and_gyro[1], accel_and_gyro[2])) print("Giroskop: X: {:.2f}, Y: {:.2f}, Z: {:.2f}".format(accel_and_gyro[3], accel_and_gyro[4], accel_and_gyro[5])) time.sleep(1)
Penjelasan Kode
- Inisialisasi I2C: Kita menggunakan I2C untuk berkomunikasi dengan GY-521. Dalam contoh ini, kita menginisialisasi I2C pada pin GP0 (SDA) dan GP1 (SCL).
- Mengaktifkan Sensor: Dengan menulis nilai
0x00
ke register0x6B
, kita mengaktifkan GY-521 dari mode tidur. - Fungsi
read_data()
: Fungsi ini membaca data akselerometer dan giroskop dari register yang sesuai. Data dikembalikan dalam bentuk tuple. - Loop utama: Di dalam loop while, kita mencetak nilai akselerometer dan giroskop setiap detik.
Menggunakan Arduino IDE
Jika Anda lebih suka menggunakan Arduino IDE, berikut adalah contoh kode sederhana untuk membaca data dari GY-521:
#include<Wire.h>
#define GY521_ADDRESS 0x68
void setup() {
Wire.begin();
Serial.begin(9600);
Wire.beginTransmission(GY521_ADDRESS);
Wire.write(0x6B); // Mengatur register PWR_MGMT_1
Wire.write(0); // Mengaktifkan gyro
Wire.endTransmission();
}
void loop() {
Wire.beginTransmission(GY521_ADDRESS);
Wire.write(0x3B); // Meminta data akselerometer
Wire.endTransmission();
Wire.requestFrom(GY521_ADDRESS, 6);
int16_t ax = Wire.read() << 8 | Wire.read();
int16_t ay = Wire.read() << 8 | Wire.read();
int16_t az = Wire.read() << 8 | Wire.read();
Serial.print("Akselerometer: X: "); Serial.print(ax);
Serial.print(" Y: "); Serial.print(ay);
Serial.print(" Z: "); Serial.println(az);
delay(1000);
}
Penjelasan Kode Arduino
- Inisialisasi: Kita mulai dengan menginisialisasi I2C dan serial.
- Mengaktifkan Sensor: Kita juga mengatur GY-521 agar keluar dari mode tidur.
- Loop utama: Dalam loop utama, kita membaca data akselerometer dari sensor dan mencetaknya ke serial monitor.
Kesimpulan
Dengan mengikuti langkah-langkah di atas, Anda dapat dengan mudah membaca data dari modul GY-521 menggunakan Raspberry Pi Pico. Kombinasi kedua perangkat ini sangat berguna untuk berbagai proyek yang membutuhkan pengukuran gerakan dan orientasi. Anda dapat memperluas proyek ini dengan menambahkan lebih banyak sensor atau mengolah data lebih lanjut untuk aplikasi yang lebih kompleks.
Selamat mencoba dan semoga berhasil dengan proyek Anda!