banner image
Sedang Dalam Perbaikan

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 :


GY-88 : IMU 10DOF MPU6050+HMC5883L+BMP085 for Arduino GY-88 : IMU 10DOF MPU6050+HMC5883L+BMP085 for Arduino Reviewed by MCH on January 28, 2017 Rating: 5

No comments:

Powered by Blogger.