Panduan Menggunakan Kompas Digital GY-271 (QMC5883L) dengan Arduino Uno

Panduan Menggunakan Kompas Digital GY-271 (QMC5883L) dengan Arduino Uno

Sensor kompas GY-271 QMC5883L adalah magnetometer digital 3 sumbu yang dapat mendeteksi arah medan magnet bumi

Pada artikel ini, kita akan membahas:

  • Penjelasan fungsi GY-271
  • Cara menyambungkan ke Arduino Uno
  • Contoh kode program
  • Cara membaca arah mata angin seperti Utara, Timur, dst.

1. Penjelasan Singkat Sensor GY-271

GY-271 adalah breakout board untuk chip QMC5883L, yang mampu membaca perubahan medan magnet bumi di sumbu X, Y, dan Z. Dari nilai vektor ini, kita dapat menghitung arah relatif terhadap kutub magnet bumi, seperti Utara atau Timur. Sensor ini berkomunikasi menggunakan protokol I2C, jadi hanya membutuhkan dua kabel data: SDA dan SCL .

2. Wiring Diagram GY-271 ke Arduino Uno

GY-271 memiliki empat pin utama: VCC, GND, SDA, dan SCL. Hubungkan seperti berikut:

Pin GY-271Pin Arduino Uno
VCC3.3V atau 5V
GNDGND
SDAA4
SCLA5

Catatan: GY-271 versi QMC5883L kompatibel langsung dengan tegangan 5V Arduino Uno .

iring Diagram:

  • Merah: VCC → 5V
  • Hitam: GND → GND
  • Kuning: SDA → A4
  • Hijau: SCL → A5

3. Contoh Kode Program Kompas GY-271

Gunakan kode berikut untuk membaca dan menginterpretasikan arah mata angin dari sensor QMC5883L:

#include <Arduino.h>
#include <Wire.h>

#define addr_kompas 0x0D
int x_kompas, y_kompas, z_kompas; 

void deklarasi_kompas() {
  Wire.begin();
  Wire.beginTransmission(addr_kompas);
  Wire.write(0x0B);    // Register mode
  Wire.write(0x01);    // Continuous mode
  Wire.endTransmission();

  Wire.beginTransmission(addr_kompas);
  Wire.write(0x09);    // Output data rate dan oversampling
  Wire.write(0x1D);    // Default setting (100Hz, OSR = 512)
  Wire.endTransmission();
}

String baca_kompas() {
  float heading = atan2(y_kompas, x_kompas);  // Hitung sudut
  if (heading < 0) heading += 2 * PI;
  if (heading > 2 * PI) heading -= 2 * PI;

  float headingDegrees = heading * 180 / M_PI;

  if (headingDegrees < 22.5 || headingDegrees > 337.5) return "Utara";
  else if (headingDegrees < 67.5) return "Timur Laut";
  else if (headingDegrees < 112.5) return "Timur";
  else if (headingDegrees < 157.5) return "Tenggara";
  else if (headingDegrees < 202.5) return "Selatan";
  else if (headingDegrees < 247.5) return "Barat Daya";
  else if (headingDegrees < 292.5) return "Barat";
  else return "Barat Laut";
}

void setup() {
  Serial.begin(9600);
  deklarasi_kompas();
}

void loop() {
  Wire.beginTransmission(addr_kompas);
  Wire.write(0x00);         // Register data mulai
  Wire.endTransmission();
  Wire.requestFrom(addr_kompas, 6);  // Ambil 6 byte (X, Y, Z)

  if (6 <= Wire.available()) {
    x_kompas = Wire.read() | (Wire.read() << 8);
    z_kompas = Wire.read() | (Wire.read() << 8);
    y_kompas = Wire.read() | (Wire.read() << 8);
  }

  String arah = baca_kompas();
  Serial.print("Arah Kompas: ");
  Serial.println(arah);

  delay(500);
}

Penjelasan kode:

  • Wire.begin() memulai komunikasi I2C.
  • Register 0x0B dan 0x09 digunakan untuk mengatur mode operasi sensor.
  • Data sumbu X, Y, Z dibaca lalu dihitung menggunakan fungsi atan2() dan diubah ke derajat .
  • Sudut diklasifikasikan menjadi arah mata angin: Utara, Timur Laut, Timur, dst.

4. Uji Coba dan Kalibrasi

Setelah upload kode:

  1. Buka Serial Monitor di Arduino IDE (baud rate 9600)
  2. Putar sensor GY-271 ke segala arah
  3. Layar akan menampilkan:
    Arah Kompas: Utara
    Arah Kompas: Barat Daya
    …dan seterusnya.

Untuk hasil lebih akurat, hindari benda logam atau medan magnet lain di dekat sensor. Jika perlu, lakukan kalibrasi manual dengan memutar sensor secara penuh dan menghitung nilai offset maksimum/minimum .

Kesimpulan

Sensor GY-271 QMC5883L memungkinkan Arduino membaca arah mata angin secara digital menggunakan medan magnet bumi. Dengan hanya 4 kabel dan pemrograman sederhana, sensor ini sangat cocok untuk proyek navigasi robot, sistem arah otomatis, kompas digital, dan lainnya. Kode dan wiring yang sederhana membuatnya ideal untuk pemula dan lanjutan.

Diskusi lebih lanjut kontak di bawah :

Media sosial lainnya :

Baca juga :

Cara Menggunakan Tombol Push Button pada Arduino Uno

Cara Menggunakan I2C Scanner pada Arduino Uno