Sabtu, 28 Januari 2017

GY-88 : IMU 10DOF MPU6050+HMC5883L+BMP085 for Arduino


Tutorial dan Sample Code Sensor GY-88 untuk Arduino

 


Sensor GY-88 sebuah device i2C gabungan dari 3 buah Sensor, yaitu :

MPU6050    : Accelerometer Sensor                   (Address is 0x68)  
HMC5883L : Digital Compass Sensor                 (Address is 0x1E)
BMP085      : Barometer & Temperature Sensor (Address is 0x77)


MPU6050 adalah Sensor pendeteksi gerakan 6-axis yaitu 3-axis gyroscope dan 3-axis accelerometer dengan Digital Motion Processor™ (DMP).

HMC5883L aalah Sensor Digital Compass dengan 3-axis

BMP085 adalah Sensor tekanan udara (barometric pressure) dan temperatur udara dengan akurasi tinggi

Module Sensor GY-88 mirip dengan rivalnya GY-87, yang membedakanya adalah jenis sensor barometric yang ditanamkan.GY-87 menggunakan barometric sensor BMP180 sedangkan sensor GY-88 menggunakan barometric sensor BMP085.
 
Dari sebuah sensor GY-88 kita dapat memperoleh Output data berupa :

*3 Axis Accelerometer dan 3 Axis rotation -> from MPU6050 device
*Compass Data/Dirrection (angle) -> from HMC5883L device
*Air Pressure, Altimeter and Temperature -> from BMP085 device

Beli Sensor GY-88 di Tokopedia Rajacell Beli 

Berikut adalah Wiring Sensor GY-88 dengan Arduino

Untuk power pada GY-88 silahkan pilih salah satu (pin Vin atau pin 3.3v)
sesuai ketersediaan pin pada arduino/mikrokontroller yg dipakai.

GY-88  <--->  Arduino
----------------------------------------------------
  Vin     <--->  pin 5V
  3.3V   <--->  pin 3.3V
  GDN  <--->  pin GND
  SCL   <--->  pin A5(Uno/Nano), pin 21 (Mega)
  SDA   <--->  pin A4(Uno/Nano), pin 20 (Mega)

untuk 3 pin lainya (M_DRDY,G_ADO,G_INT) tidak kita gunakan untuk kebutuhan standar.

Berikut adalah Contoh Source Code untuk menampilkan data dari Sensor GY-88 ke Serial Monitor Arduino IDE

Pasang Sensor GY-88 pada Arduino sesuai Wiring yang ada diatas,
Pada Arduino Uno/Nano/Pro mini, pin SDA berada pada pin A4 dan SCL pada pin A5
Pada Arduino Mega2560, pin SDA berada pada pin 20 dan SCL pada pin 21

Download File Example penggunaan GY-88 (Source Code + Library dalam 1 folder).
Download Disini  Download  

File berupa zip file,silahkan extract folder yang ada di dalamnya dan save ke  My Document\Arduino.


Buka file gy-88.ino yang berada di dalam folder tersebut.Kemudian upload kedalam arduino.




Setelah selesai upload buka Serial Monitor pada Arduino IDE pada baudrate 9600 dan pastikan semua data meampilkan value/nilai.



Pada Sample coding diatas tidak ditampilkan data dari Sensor Compass/magneto sehingga tidak ada data sudut arah/agle pada layar Serial Monitor.

Untuk menampilkan Semua data dari ketiga sensor yg terdapat di GY-88 silahkan gunakan Sourchcode dari belajarduino berikut untuk menggantikan file gy-88.ino pada example folder diatas :



Source Code:

//By Dani Ardianto for www.belajarduino.com
//Supported by www.tokopedia.com/rajacell
//Join FB Group Belajar Arduino at : https://www.facebook.com/groups/255324164886376

#include <Wire.h>
#include "BMP085.h"
#include "I2Cdev.h"
#include "MPU6050.h"

BMP085 pressure_m;
MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;
int x,y,z;
#define LED_PIN 13
bool blinkState = false;

void setup(){
  Serial.begin(9600);
  Wire.begin();
  Serial.println("Initializing I2C devices...");
    accelgyro.initialize();

    // verify connection
    Serial.println("Testing device connections...");
    Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
    Serial.println();
    
  //Initialise the Digital Compass
  Wire.beginTransmission(0x1E);
  Wire.write(0x02);
  Wire.write(0x00);
  Wire.endTransmission();
    
    // configure Arduino LED for
   pinMode(LED_PIN, OUTPUT);
   pressure_m.bmp085Calibration();
}

void loop()
{
  float temperature = pressure_m.bmp085GetTemperature();
  float pressure = pressure_m.bmp085GetPressure();
  float altitude = pressure_m.calcAltitude(pressure);

  Serial.print("Temperature: ");
  Serial.print(temperature, 2); //display 2 decimal places
  Serial.println(" deg C");

  Serial.print("Pressure: ");
  Serial.print(pressure, 0); //whole number only.
  Serial.println(" Pa");

  Serial.print("Altitude: ");
  Serial.print(altitude, 2); //display 2 decimal places
  Serial.println(" M");

  Serial.println();//line break

  delay(1000); //wait a second and get values again.
  accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

    // these methods (and a few others) are also available
    //accelgyro.getAcceleration(&ax, &ay, &az);
    //accelgyro.getRotation(&gx, &gy, &gz);

    // display tab-separated accel/gyro x/y/z values
    Serial.print("accel : ");
    Serial.print(ax); Serial.print("\t");
    Serial.print(ay); Serial.print("\t");
    Serial.print(az); Serial.println();
    Serial.print("gyro : ");
    Serial.print(gx); Serial.print("\t");
    Serial.print(gy); Serial.print("\t");
    Serial.println(gz);
    
    //Accessing the HMC5883L Digital Compass  
    Wire.beginTransmission(0x1E);
    Wire.write(0x03);
    Wire.endTransmission();
    Wire.requestFrom(0x1E,6);
    if(6<=Wire.available())
    {
      x = Wire.read()<<8; //X msb
      x |= Wire.read();   //X lsb
      z = Wire.read()<<8; //Z msb
      z |= Wire.read();   //Z lsb
      y = Wire.read()<<8; //Y msb
      y |= Wire.read();   //Y lsb    
    }
  
    int angle = atan2(-y,x)/M_PI*180;
    if (angle < 0){angle = angle + 360;}
    Serial.print("Compass :"); Serial.print(angle);
    Serial.print(" degree"); Serial.println();
  
    // blink LED to indicate activity
    blinkState = !blinkState;
    digitalWrite(LED_PIN, blinkState);
}

//By Dani Ardianto for www.belajarduino.com
//Supported by www.tokopedia.com/rajacell
//Join FB Group Belajar Arduino at : https://www.facebook.com/groups/255324164886376


Jika kita menggunakan coding diatas maka kita dapat menampilkan semua data output dari ketiga sensor module yang tertanam pada GY-88. Berikut screenshoot hasil pada serial monitornya :


1 komentar:

  1. Terima kasih untuk artikelnya sangat bermanfaat sekali.

    Dapatkan buku Arduino baru berdiskon hanya di :

    http://www.honbookstore.com/search/label/Teknik

    BalasHapus

Copyright © 2014 Belajar Arduino | Designed With By Blogger Templates | Distributed By Gooyaabi Templates
Scroll To Top