Cara Menggunakan Kompas QMC5883P
Quick build reference
The useful details collected from this project without turning every update into a formal report.
What this project makes
Perkongsikan cara menggunakan compass sensor seperti HMC5883L, QMC5883L dan QMC5883P
Project files
Overview
Pengenalan
Dalam perkongsian kali ini, saya akan kongsikan cara menggunakan compass sensor seperti HMC5883L, QMC5883L dan QMC5883P. Sensor ini merupakan salah satu komponen yang sering digunakan dalam projek elektronik dan projek hobi, terutamanya apabila digabungkan bersama mikropengawal seperti Arduino.
HMC5883L, QMC5883L dan QMC5883P digunakan untuk mengesan medan magnet bumi dan mendapatkan arah atau heading seperti Utara, Timur, Selatan dan Barat.
Dalam tutorial ini, saya akan bahagikan penerangan kepada 2 bahagian:
- Program Arduino Pro Micro & compass sensor
- Memahami cara compass sensor berfungsi.
Sebelum kita mulakan, sekiranya terdapat sebarang kesalahan atau ketidaktepatan dalam maklumat yang saya kongsi, sila komen di ruangan komen di bawah.
Program Arduino Pro Micro & Compass Sensor
Antara sensor yang biasa digunakan ialah:
- HMC5883L
- QMC5883L
- QMC5883P
Walaupun ketiga-tiga sensor ini mempunyai fungsi yang hampir sama, terdapat beberapa perbezaan dari segi komunikasi, alamat (address) I2C, register dan library yang digunakan.
Seperti jadual register dari datasheet di bawah, kita boleh lihat bahawa register untuk HMC5883L, QMC5883L dan QMC5883P tidak sama, jadi library yang akan digunakan jugak tidak akan sama kecuali library itu boleh support ketiga-tiga sensor ini.

Cara untuk membezakan antara HMC5883L, QMC5883L dan QMC5883P adalah dengan membaca alamat I2C sensor menggunakan I2C Scanner.
Di bawah adalah alamat (address) I2C bagi setiap sensor:
- HMC5883L : 0x1E
- QMC5883L : 0x0D
- QMC5883P : 0x2C
Komponen Yang Diperlukan
Untuk tutorial ini, saya hanya menggunakan QMC5883P. Oleh itu, komponen yang diperlukan adalah seperti berikut:
- Arduino / mikropengawal
- Modul QMC5883P
- Kabel jumper
- Breadboard
Langkah 1: Sambungan Litar
Compass sensor biasanya menggunakan komunikasi I2C untuk berkomunikasi dengan mikropengawal.
Sambungan asas adalah seperti berikut:

Langkah 2: Memastikan alamat (address) I2C
Untuk memastikan alamat (address) I2C bagi modul QMC5883P adalah 0x2C, kita perlu menggunakan kod I2C Scanner untuk mengimbas dan mendapatkan alamat modul yang terdapat pada I2C bus.
Salin kod I2C di bawah:
Rujuk fial: I2CScanner.ion
Kod I2C Scanner digunakan untuk mengimbas peranti yang terdapat pada I2C bus dan memaparkan alamat I2C yang dikesan pada Serial Monitor.
Jika modul QMC5883P berjaya dikesan, alamat yang akan dipaparkan ialah:

Jika alamat 0x2C tidak dikesan, sila semak semula sambungan I2C dan pastikan modul QMC5883P disambungkan dengan betul.

Jika alamat I2C yang dikesan tidak sama, kemungkinan compass sensor yang digunakan bukan QMC5883P. Antara sensor yang biasa digunakan ialah:
- HMC5883L : 0x1E
- QMC5883L : 0x0D
Langkah 3: Download library
Setelah kita mengenal pasti IC yang digunakan oleh compass sensor, barulah kita boleh mencari library yang sesuai untuk digunakan.
Untuk tutorial ini, disebabkan compass sensor yang saya punya adalah QMC5883P. Oleh itu, saya akan menggunakan Adafruit QMC5883P Library:

Jika IC yang digunakan ialah HMC5883L, anda boleh download Adafruit HMC5883 Unified:

Langkah 4: Copy contoh kod QMC5883P di bawah dan paste ke dalam projek Arduino IDE.
Rujuk fail: qmc5883p.ino
Jika IC korang ialah HMC5883L, korang boleh mengunakan example code dari Adafruit HMC5883 Unified:
File > Examples > Adafruit HMC5883 Unified > magsensor

Data Daripada Sensor

Compass sensor akan memberikan bacaan medan magnet pada beberapa paksi:
- X-axis
- Y-axis
- Z-axis
Contoh bacaan:
X = 0.166
Y = 0.070
Z = -0.135
Nilai tersebut boleh digunakan untuk mendapatkan arah heading sensor.
Heading: 337.2°
Memahami cara compass sensor berfungsi.
Apa Itu Compass Sensor?
Compass sensor atau magnetometer ialah sensor yang digunakan untuk mengukur medan magnet di sekelilingnya. Dengan menggunakan medan magnet bumi sebagai rujukan.
Pengiraan Heading
Secara asasnya, arah kompas boleh dikira menggunakan bacaan paksi X dan Y.
Formula asas: heading = atan2(y, x);
Nilai yang diperoleh daripada fungsi atan2() perlu ditukar daripada radian kepada darjah:
heading = atan2(y, x) * 180.0 / PI;
Sekiranya nilai yang diperoleh adalah negatif, nilai tersebut boleh diselaraskan kepada julat:
0° – 360°
Jika arah putaran heading terbalik, contohnya sensor dipusing mengikut arah jam tetapi nilai heading semakin berkurang, kita boleh terbalikkan arah pengiraan:
heading = atan2(-y, x) * 180.0 / PI;
Arah Kompas
Nilai heading boleh dipetakan kepada arah kompas seperti berikut:

Contohnya, jika sensor memberikan bacaan:
Heading = 90°
Maka sensor sedang menghala ke arah Timur (E).
Magnetic Declination
Bacaan daripada magnetometer menunjukkan arah berdasarkan medan magnet bumi. Arah Utara magnetik tidak semestinya sama dengan Utara sebenar (True North).
Perbezaan ini dikenali sebagai magnetic declination.
Untuk mendapatkan arah yang lebih tepat berdasarkan lokasi, nilai magnetic declination boleh digunakan dalam pengiraan heading.
Contoh: heading = heading + declination;
Nilai declination bergantung pada lokasi dan boleh berubah mengikut masa. Nilai declination boleh diperoleh menggunakan NCEI Geomagnetic Calculators daripada NOAA: NCEI Geomagnetic Calculators
Di bawah ialah link video contoh projek saya yang menggunakan QMC5883P
Part 3: QMC5883P compass sensor | Tactical Watch Project
Rujukkan:
NOAA / NCEI – Magnetic Declination
NCEI Magnetic Declination
Materials & components list
4 itemsMaterials and components listed by the project owner.
| Material / component | Brand / model | Purpose | Quantity |
|---|---|---|---|
| Arduino Pro Micro | Arduino | mikropengawal | 1 |
| QMC5883P | QST | Kompas | 1 |
| Breadboard | - | Untuk menyambungkan komponen | 1 |
| Jumper cable | - | Untuk menyambungkan komponen | 4 |
Project files
CAD files, drawings, code and other assets shared by the project owner.
Project updates
0 updatesThe project owner has not shared any progress yet.
Use this space for general discussion about the whole project. To discuss a specific update, use the comments on that update.
Project discussion
Please log in to comment.