I. Tujuan :
1. Mengetahui cara kerja Inter-Integrated Circuit (I2C)
2. Mengetahui cara mengatur port I2C.
3. Mengetahui cara mengakses sensor MPU6050 dengan Arduino
II. Teori
Inter-Integrated Circuit atau dalam dunia komputer sering disebut I2C merupakan
protokol untuk komunikasi multi-master serial computer bus yang berfungsi untuk
menghubungkan 2 atau lebih perangkat yang terintegrasi, seperti sensor, RTC, dan juga
EEPROM. I2C hanya memliki 2 jalur yaitu Serial data line (SDA) dan Serial Clock Line
(SCL).
Module ini sangat akurat dan sudah terdapat hardware ADC untuk masing-masing
channel untuk membaca x,y,z channels pada waktu yang sama. MPU-6050 terdiri dari 3 axis
gyroscope yang dapat mendeteksi kecepatan putaran pada x,y,z axis. Terdapat juga 3 axis
accelerometer yang dapat mendeteksi sudut pada sumbu x,y,z dengan teknologi Micro
Electro Mechanical System (MEMS).
#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
void setup()
{
Serial.begin(115200);
Serial.println("Initialize MPU6050");
while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{
Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
delay(500);
}
checkSettings();
}
void checkSettings()
{
Serial.println();
Serial.println();
}
void loop()
{
Vector rawAccel = mpu.readRawAccel();
Vector normAccel = mpu.readNormalizeAccel();
Serial.println(rawAccel.ZAxis);
Serial.print(" Xnorm = ");
Serial.print(normAccel.XAxis);
Serial.print(" Ynorm = ");
Serial.print(normAccel.YAxis);
Serial.print(" Znorm = ");
Serial.println(normAccel.ZAxis);
delay(10);
}
MPU6050 mpu;
void setup()
{
Serial.begin(115200);
Serial.println("Initialize MPU6050");
while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{
Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
delay(500);
}
}
void loop()
{
float temp = mpu.readTemperature();
delay(500);
}
11. Buka window Serial Monitor, amati perubahan data yang terjadi pada Serial Monitor.
12. Jelaskan program apa digunakan untuk memunculkan nilai Suhu pada Serial Monitor.
13. Selanjutnya buatlah rangkaian seperti gambar dibawah ini.
14. Tuliskan program pada editor IDE.
#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
void setup()
{
Serial.begin(115200);
Serial.println("Initialize MPU6050");
while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{
Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
delay(500);
}
}
void loop()
{
// Read normalized values
Vector normAccel = mpu.readNormalizeAccel();
// Output
Serial.print(" Pitch = ");
Serial.print(pitch);
Serial.print(" Roll = ");
Serial.print(roll);
Serial.println();
delay(10);
}
15. Buka window Serial Monitor, amati perubahan data yang terjadi pada Serial Monitor.
16. Untuk percobaan berikutnya, tentukan lima nilai putar(roll) sebagai nilai perubahan rotasi
sensor. Kemudian lakukan modifikasi, dengan menggunakan 5 LED sesuai dengan
rangkaian pada Langkah 13, pada LED dibagian tengah sebagai Nilai Putar 0, kemudian
LED kanan dan kiri sesuaikan dengan nilai putar yang telah ditentukan.