Kumpulan Tutorial, Referensi dan Project Arduino Open Source
Sabtu, 28 Januari 2017
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
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 ButtonmyBtn(BUTTON_PIN,PULLUP,INVERT,DEBOUNCE_MS);#define OLED_RESET 4Adafruit_SSD1306display(OLED_RESET);//MPU6050 Accelerometer MPU6050accelgyro;int16_tax,ay,az;int16_tgx,gy,gz;uint8_tmode;//HMC5883L Digital Compassconstinthmc5883Address=0x1E;constbytehmc5883ModeRegister=0x02;constbytehmcContinuousMode=0x00;constbytehmcDataOutputXMSBAddress=0x03;//The BMP180 Digital BarometerBMP180barometer;// Store the current sea level pressure at your location in Pascals.floatseaLevelPressure=101325;intx,y,z;//triple axis data from HMC5883L.voidsetup(){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(inti=0;i<4;i++){display.print(F("."));display.display();delay(250);}//Initialise the Digital CompassWire.beginTransmission(hmc5883Address);Wire.write(hmc5883ModeRegister);Wire.write(hmcContinuousMode);Wire.endTransmission();display.setCursor(0,32);display.print(F("HMC5883 Starting"));display.display();delay(250);for(inti=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(inti=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/rajacellvoidloop(){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/rajacellvoidaccel(){// Display Accelerationaccelgyro.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/rajacellvoidgyro(){// Display Rotationaccelgyro.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/rajacellvoidcompass(){//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 msbx|=Wire.read();//X lsbz=Wire.read()<<8;//Z msbz|=Wire.read();//Z lsby=Wire.read()<<8;//Y msby|=Wire.read();//Y lsb }intangle=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/rajacellvoidbaro(){if(barometer.IsConnected){longcurrentPressure=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/rajacellvoidalti(){if(barometer.IsConnected){floataltitude=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/rajacellvoidtemp(){if(barometer.IsConnected){floatcurrentTemperature=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
0 komentar:
Posting Komentar