Rabu, 20 Maret 2019

membaca data IMU gy-25 dengan Arduino

Hallo Sobat Arduino, GY-25 merupakan IMU sensor dengan output yang berupa pitch, yaw, roll. Bedanya dengan IMU seri yang lainnya adalah gy25 mempunyai pemrosesan data tersendiri sehingga output langsung YPR, dan tidak memerlukan filter-filter lagi.


Pinout:
Pin1 VCC Power + (3v-5v)
Pin 2 RX Receiving data from serial
Pin 3 TX Serial data transmission
Pin 4 GND Power Ground
Pin 5 RST Internal use, no connection, vacant
Pin 6 B0 Internal use, no connection, vacant
Pin 7 SCL I2C clock
Pin 8 SDA I2C data

Spesifikasi:
Measuring range -180 ° 1 °
Resolution 0.01 °
measurement accuracy 1
Repeatability 1
Frequency response 100 HZ (115200bps)
Operating Voltage 35 V
Working current 15mA
Operating temperature -20 ° 8 °
Storage temperature -40 ° 1 °
size 11.5mm × 15.5mm

Komunikasi Serial UART
Baud rate: 115200 bps Parity bit: N Data bits: 8 Stop bits: 1 (DEFAULT)
Baud rate: 9600 bps Parity bit: N Data bits: 8 Stop bits: 1

ada beberapa perintah serial untuk melakukan konfigurasi dan pembacaan data dari sensor
  1. 0xA5 + 0x51: query mode, kirim data sensor ketika ada permintaan
  2. 0xA5 + 0x52: Automatic mode, kirim data sensor secara realtime dalam bentuk biner
  3. 0xA5 + 0x53: Automatic mode, kirim data sensor secara realtime dalam bentuk ASCII
  4. 0xA5 + 0x54: correction mode, Kalibrasi roll pitch. tahan beberapa detik sebelum melakukan kalibrasi
  5. 0xA5 + 0x55: correction mode, kalibrasi kompas. Kompas akan diset ke 0 ketika perintah ini dikirim
Untuk konfigurasi rangkaian, saat percobaan ini menggunakan arduino Mega, dengan memanfaatkan serial 3 di arduino mega

Susunan pin 
Mega - gy 25
5v  ---- vcc
gnd ---- gnd
TX3 --- RX
RX3 ---- TX

untuk coding programnya

void setup(){
 Serial.begin(115200); // Aktif Serial monitor
 Serial3.begin(115200); // Aktif Serial GY25
Serial.println("kalibrasi");
 delay(3000);

 // Kalibrasi Tilt
 Serial3.write(0xA5);
 Serial3.write(0x54);

 delay(1000);
 Serial.println("kalibrasi Tilt done");

 // Kalibrasi Heading
 Serial3.write(0xA5);
 Serial3.write(0x55);

 delay(100);
 Serial.println("kalibrasi Heading done");
 // Output ASCII
 Serial3.write(0xA5);
 Serial3.write(0x53);

 delay(100);
}

void loop(){
 // Baca data realtime
 Serial.println(Serial3.readStringUntil('\n'));
}

Hasil di serial monitor

Catatan :
Sensor akan kalibrasi ketika power di hidupkan, kurang lebih 3000ms, dan harus dalam keadaan diam (tidak bergerak).

1 komentar:

  1. Keren ya gan projek arduinonya. Bisa buat referensi nih. Oh iya bagi teman-teman yang mau belajar Arduino bisa mampir ke indobot.co.id nih. Mumpung masih ada slot pendaftaran kursus online gratis.

    BalasHapus