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-271 | Pin Arduino Uno |
---|---|
VCC | 3.3V atau 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
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
dan0x09
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:
- Buka Serial Monitor di Arduino IDE (baud rate 9600)
- Putar sensor GY-271 ke segala arah
- 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 :