Membaca Data dari Modul GY-521 untuk Sensor IMU di Raspberry Pi Pico

3 min read 21-08-2024
Membaca Data dari Modul GY-521 untuk Sensor IMU di Raspberry Pi Pico

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:

  1. Raspberry Pi Pico
  2. Modul GY-521
  3. Kabel Jumper
  4. Breadboard (opsional)
  5. Software Pengembangan (Thonny atau Arduino IDE)
  6. 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.

  1. 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.

  2. 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 register 0x6B, 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!