banner image
Sedang Dalam Perbaikan

GY-87 : Altimeter ,Accelerometer ,Tilt meter, Barometer, Temperature and Compass sensor With GY-87 + Oled LCD


Altimeter ,Accelerometer ,Tilt meter, Barometer, Temperature and Compass sensor With GY-87 + Oled LCD


Project ini adalah kelanjutan dari materi sebelumnya :
http://www.belajarduino.com/2016/12/gy-87-tutorial-dan-sample-code.html

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

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

Dari sebuah sensor GY-87 kita dapat memperoleh Out data berupa :

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

Beli Sensor GY-87 di Tokopedia Rajacell Beli 
Beli LCD Oled 0.96" Putih di Tokopedia Rajacell Beli 
Beli LCD Oled 0.96" Biru di Tokopedia Rajacell Beli
Beli LCD Oled 0.96" Biru-Kuning di Tokopedia Rajacell Beli 
Beli LCD Push Button di Tokopedia Rajacell Beli 

Kita akan menggunakan 2 buah Device i2C/TWI menggunakan 1 koneksi SDA SCL

Berikut adalah Wiring Sensor GY-87 dengan Arduino


















Wiring Pin LCD Oled 0.96 inch ke Arduino :

Pin GND LCD  --> ke Pin GND Arduino
Pin VCC LCD  --> ke Pin 5V Arduino
Pin SCL LCD --> ke Pin SCL(A5) Arduino
Pin SDA LCD --> ke Pin SDA (A4) Arduino

Untuk Arduino Uno / Nano / Pro mini Pin SDA adalah pin A4 dan SCL adalah A5
Untuk Arduino Mega2560 Pin SDA adalah pin 20(D20) dan SCL adalah 21 (D21)

Wiring Push button ke Arduino :
Hubungkan 1 sisi push button (Momentary Normally Open) dengan D3 dan sisi lainya dengan Pin GND Arduino.
Anda bisa menggunakan tombol push button jenis apapun asal tidak mengunci (hanya momentary saja).

Berikut adalah Library yang dibutuhkan Sensor GY-87 pada sistem Arduino

Library "I2Cdev.h" Download  
Library "MPU6050.h" Download  
Library BMP180.h Download
Library Adafruit_SSD1306.h Download
Library Button.h Download   
Library "Wire.h" -> Sudah include di Arduino IDE

Lihat video cara memasukan Library baru ke dalam sistem arduino berikut ini  Lihat Video   

Setelah semua library sudah di download dan dimasukan ke dalam folder libraries..silahkan copy paste coding berikut ke dalam Arduino IDE anda.Saya menyarankan anda menggunakan Arduino IDE versi diatas 1.6.7 (jangan gunakan 1.6.10 dan 1.6.11).

Berikut adalah Contoh Source Code untuk Altimeter ,Accelerometer ,Tilt meter, Barometer, Temperature and Compass sensor dengan Oled LCD 0.96"i2C

Source Code:

//Sketch Coding ini dibuat Oleh Dani Ardianto untuk www.belajarduino.com
//Anda bisa menggunakan source code ini secara gratis untuk tujuan Non-Komersial
//Semua module yang dibutuhkan untuk Module ini dapat anda peroleh di Toko kami
//Melalui portal Tokopedia www.tokopedia.com/rajacell
//Apabila ada kendala dalam pembuatan project ini bisa didiskusikan melalui
//Facebook Group Belajar Arduino : https://www.facebook.com/groups/255324164886376

#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"
#include <BMP180.h>
#include <Adafruit_SSD1306.h>
#include <Button.h>

#define BUTTON_PIN 3
#define PULLUP true
#define INVERT true
#define DEBOUNCE_MS 20
#define LONG_PRESS 1000
Button myBtn(BUTTON_PIN, PULLUP, INVERT, DEBOUNCE_MS);

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

//MPU6050 Accelerometer
MPU6050 accelgyro;

int16_t ax, ay, az;
int16_t gx, gy, gz;
uint8_t mode;

//HMC5883L Digital Compass
const int hmc5883Address = 0x1E;
const byte hmc5883ModeRegister = 0x02;
const byte hmcContinuousMode = 0x00;
const byte hmcDataOutputXMSBAddress = 0x03;

//The BMP180 Digital Barometer
BMP180 barometer;
// Store the current sea level pressure at your location in Pascals.
float seaLevelPressure = 101325;
int x,y,z; //triple axis data from HMC5883L.

void setup() {
Wire.begin();
//Serial.begin(9600);

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(F("GY-87 Sens"));
display.display();
// initialize device
//Serial.print("Initializing I2C devices...");
accelgyro.initialize();
// verify connection
//Serial.println("Testing device connections...");
//Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
accelgyro.setI2CBypassEnabled(true); //This sets the bypass so the HMC5883L gets a look in.

display.setTextSize(1);
display.setCursor(0,20);
display.print(F("MPU6050 Starting"));
display.display();
delay(250);
for(int i=0; i<4; i++){
display.print(F("."));
display.display();
delay(250);
}

//Initialise the Digital Compass
Wire.beginTransmission(hmc5883Address);
Wire.write(hmc5883ModeRegister);
Wire.write(hmcContinuousMode);
Wire.endTransmission();

display.setCursor(0,32);
display.print(F("HMC5883 Starting"));
display.display();
delay(250);
for(int i=0; i<4; i++){
display.print(F("."));
display.display();
delay(250);
}
//Initialise the BMP180 Barometer (and Temperature Sensor)
barometer = BMP180();
if(barometer.EnsureConnected())
{
//Serial.println("Connected to BMP180.");
barometer.SoftReset();
barometer.Initialize();

display.setCursor(0,44);
display.print(F("BMP180 Starting"));
display.display();
delay(250);
for(int i=0; i<4; i++){
display.print(F("."));
display.display();
delay(250);
}
}
else
{
//Serial.println("No BMP180 sensor found.");
}
display.setCursor(0,56);
display.print(F("-Initialize Success-"));
display.display();
delay(2000);
display.clearDisplay();

}
//Kunjungi Toko kami di www.tokopedia.com/rajacell
void loop() {
display.setTextSize(1);
display.setCursor(0,60);
display.print(F("/ / / / / / / / / / / "));
display.display();

myBtn.read();
if (myBtn.wasReleased()) {
mode++;
display.clearDisplay();
Serial.print(mode);
if (mode==6)mode=0;
}

if(mode==0){accel();}
if(mode==1){gyro();}
if(mode==2){compass();}
if(mode==3){baro();}
if(mode==4){alti();}
if(mode==5){temp();}

display.setTextSize(1);
display.setCursor(0,60);
display.print(F(" / / / / / / / / / / /"));
display.display();
}
//Kunjungi Toko kami di www.tokopedia.com/rajacell
void accel() {
// Display Acceleration
accelgyro.getAcceleration(&ax, &ay, &az);
display.setTextColor(WHITE,BLACK);
display.setTextSize(2);
display.setCursor(5,0);
display.print(F("Accelerat"));
display.display();
display.setTextSize(1);
display.setCursor(0,20);
display.print(F("Accel X : ")); display.print(ax);
display.setCursor(0,32);
display.print(F("Accel Y : ")); display.print(ay);
display.setCursor(0,44);
display.print(F("Accel Z : ")); display.print(az);
display.display();
}
//Kunjungi Toko kami di www.tokopedia.com/rajacell
void gyro() {
// Display Rotation
accelgyro.getRotation(&gx, &gy, &gz);
display.setTextColor(WHITE,BLACK);
display.setTextSize(2);
display.setCursor(10,0);
display.print(F("Rotation"));
display.display();
display.setTextSize(1);
display.setCursor(0,20);
display.print(F("Gyro X : ")); display.print(gx);
display.setCursor(0,32);
display.print(F("Gyro Y : ")); display.print(gy);
display.setCursor(0,44);
display.print(F("Gyro Z : ")); display.print(gz);
display.display();
}
//Kunjungi Toko kami di www.tokopedia.com/rajacell
void compass() {
//Accessing the HMC5883L Digital Compass
Wire.beginTransmission(hmc5883Address);
Wire.write(hmcDataOutputXMSBAddress);
Wire.endTransmission();
Wire.requestFrom(hmc5883Address,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;}

display.setTextColor(WHITE,BLACK);
display.setTextSize(2);
display.setCursor(10,0);
display.print(F(" Compass "));
display.setCursor(70,30);
display.print(angle); display.print(F("'"));
display.display();
display.setTextSize(1);
display.setCursor(0,20);
display.print(F("X : ")); display.print(x);
display.setCursor(0,32);
display.print(F("Y : ")); display.print(y);
display.setCursor(0,44);
display.print(F("Z : ")); display.print(z);
display.display();
}
//Kunjungi Toko kami di www.tokopedia.com/rajacell
void baro() {
if(barometer.IsConnected){
long currentPressure = barometer.GetPressure();
display.setTextColor(WHITE,BLACK);
display.setTextSize(2);
display.setCursor(10,0);
display.print(F("Barometer"));
display.setCursor(10,30);
display.print(currentPressure); display.print(F(" Pa"));
display.display();
}
}
//Kunjungi Toko kami di www.tokopedia.com/rajacell
void alti() {
if(barometer.IsConnected){
float altitude = barometer.GetAltitude(seaLevelPressure);
display.setTextColor(WHITE,BLACK);
display.setTextSize(2);
display.setCursor(10,0);
display.print(F("Altimeter"));
display.setCursor(30,30);
display.print(altitude); display.print(F("m"));
display.setCursor(20,50);
display.setTextSize(1);
display.print(F("above sea-Level"));
display.display();
}
}
//Kunjungi Toko kami di www.tokopedia.com/rajacell
void temp() {
if(barometer.IsConnected){
float currentTemperature = barometer.GetTemperature();
display.setTextColor(WHITE,BLACK);
display.setTextSize(2);
display.setCursor(5,0);
display.print(F("Temperatur"));
display.setCursor(20,30);
display.print(currentTemperature); display.println(F("'C"));
display.display();
}
}

//Sketch Coding ini dibuat Oleh Dani Ardianto untuk www.belajarduino.com
//Anda bisa menggunakan source code ini secara gratis untuk tujuan Non-Komersial
//Semua module yang dibutuhkan untuk Module ini dapat anda peroleh di Toko kami
//Melalui portal Tokopedia www.tokopedia.com/rajacell
//Apabila ada kendala dalam pembuatan project ini bisa didiskusikan melalui
//Facebook Group Belajar Arduino : https://www.facebook.com/groups/255324164886376


Video Hasil project

Apabila ada kendala dalam pembuatan project ini bisa didiskusikan melaluiFacebook Group Belajar Arduino : https://www.facebook.com/groups/255324164886376

GY-87 : Altimeter ,Accelerometer ,Tilt meter, Barometer, Temperature and Compass sensor With GY-87 + Oled LCD GY-87 : Altimeter ,Accelerometer ,Tilt meter, Barometer, Temperature and Compass sensor With GY-87 + Oled LCD Reviewed by MCH on January 28, 2017 Rating: 5

No comments:

Powered by Blogger.