Cara Menggunakan GPS NEO-6M
Quick build reference
The useful details collected from this project without turning every update into a formal report.
What this project makes
Perkongsian cara menggunakan GPS NEO-6M.
Project files
Overview
Pengenalan
Dalam perkongsian kali ini, saya akan kongsikan cara menggunakan GPS NEO-6M, iaitu salah satu modul GPS yang popular digunakan dalam projek elektronik dan mikropengawal seperti Arduino dan ESP32.
Modul ini membolehkan kita mendapatkan maklumat lokasi seperti latitude, longitude, altitude, masa, dan juga bilangan satelit yang berjaya dikesan.
NEO-6M berkomunikasi dengan mikropengawal menggunakan komunikasi UART, dan data GPS biasanya dihantar dalam format NMEA 0183 (National Marine Electronics Association).
Dalam perkongsian ini, saya pecahkan kepada beberapa bahagian:
- Mendapatkan data daripada GPS NEO-6M menggunakan aplikasi u-blox “u-center 2”.
- Memprogram menggunakan Arduino Pro Micro
- Memahami format NMEA
Sebelum kita mulakan, sekiranya terdapat sebarang kesalahan atau ketidaktepatan dalam maklumat yang saya kongsikan, sila komen di ruangan komen di bawah.
Mendapatkan data daripada GPS NEO-6M menggunakan aplikasi u-blox “u-center 2”
Komponen yang diperlukan adalah:
- GPS NEO-6M + GPS Antena
- FTDI USB to UART
- Kabel Jumper
Langkah 1: Gambar rajah di bawah menunjukkan sambungan modul GPS NEO-6M kepada FTDI USB-to-UART untuk membolehkan komunikasi antara modul GPS dan aplikasi “u-center 2”.

Langkah 2: Download dan Install aplikasi “u-center 2” dari laman web rasmi u-blox: u-center 2

Langkah 3: Sambungkan kabel USB dari FTDI kepada komputer, kemudian pada aplikasi u-center 2 ikut langkah-langkah berikut:
- Cari Data Source dan tekan ikon tambah “+” (add data source)
- Masukkan COM port
- Masukkan kelajuan boud rate atau kita boleh mengunakan “Enable autobauding”
- Tekan “Add Device”

NOTA: Modul GPS NEO-6M menggunakan baud rate 9600 bps, seperti yang ditunjukkan dalam jadual di bawah:

NEO-6 u-blox 6 GPS Modules Data Sheet
Selepas langkah 3, kita boleh baca data GPS menggunakan beberapa paparan yang disediakan, seperti Console, Satellite Position View, Map View dan lain-lain.

Memprogram menggunakan Arduino Pro Micro
Komponen yang diperlukan adalah:
- GPS NEO-6M + GPS Antena
- Arduino Pro Micro
- Kabel Jumper
Langkah 1: Gambar rajah di bawah menunjukkan sambungan modul GPS NEO-6M ke Arduino Pro Micro untuk membolehkan komunikasi antara modul GPS dan mikropengawal.

NOTA: Not all pins on the Leonardo and Micro boards support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). Arduino SoftwareSerial Library
Tidak semua pin pada Arduino Pro Micro boleh digunakan interrupt perubahan (change interrupt). Oleh itu, hanya pin berikut yang boleh digunakan sebagai RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), dan 16 (MOSI).
Jika korang pakai board Arduino yang berbeza boleh rujuk di laman web rasmi Arduino mengenai “softwareSerial.h”: Arduino SoftwareSerial Library
Langkah 2: Download dan install Arduino IDE dari laman web rasmi Arduino, setelah itu download library “TinyGPS by Mikal Hart” di Library Manager.

Langkah 3: Copy contoh kod di bawah dan paste ke dalam projek Arduino IDE.
Rujuk fail: gnssRaw.ino
Langkah 4: Run code.
Di bawah ialah contoh data yang dipaparkan pada Console. Namun, data ini masih belum mempunyai maklumat longitude (lon) dan latitude (lat) kerana modul GPS masih belum mendapatkan GPS fix.
NOTA: GPS fix ialah keadaan apabila modul GPS berjaya mendapatkan maklumat yang mencukupi daripada satelit untuk menentukan kedudukan atau lokasi.

Gambar di bawah menunjukkan contoh keadaan apabila modul GPS telah berjaya mendapatkan GPS fix. Ketika ini, LED pada modul akan berkelip.


Untuk mendapatkan GPS fix, ia mungkin mengambil masa beberapa minit bergantung kepada lokasi dan keadaan persekitaran.
Jika korang berada di dalam rumah, saya sarankan menggunakan antena dengan kabel yang lebih panjang supaya antena boleh diletakkan di luar rumah dan mempunyai pandangan yang lebih terbuka ke langit.
Di bawah ialah contoh antena yang saya gunakan apabila berada di rumah.

Seterusnya, kita akan mula menggunakan library “TinyGPS by Mikal Hart” untuk encode data NMEA yang kita terima dan mendapatkan maklumat seperti latitude, longitude, masa dan lain-lain.
Langkah 5: Copy contoh kod di bawah dan paste ke dalam projek Arduino IDE.
Rujuk fail: gnssEncode.ino
Kod di atas adalah berdasarkan contoh kod daripada library “TinyGPS by Mikal Hart” yang saya jadikan sebagai rujukan.
Langkah 4: Run code.
Di bawah ialah contoh data GPS yang telah encode daripada format NMEA menggunakan library TinyGPS.

Memahami format NMEA
NMEA 0183 ialah interface standard yang digunakan secara meluas di seluruh dunia.
Standard ini menyokong penghantaran data secara bersiri satu hala (one-way serial data transmission) daripada satu talker kepada satu atau lebih listeners.
Data ini dihantar dalam bentuk ASCII yang boleh dicetak (printable ASCII) dan boleh mengandungi maklumat seperti masa, kedudukan, kelajuan, kedalaman air dan lain-lain.
NMEA 0183 Interface Standard ialah dokumen yang dilindungi hak cipta dan hanya boleh diperoleh daripada NMEA. Dokumen atau salinan yang ditawarkan di laman Internet lain mungkin tidak mendapat kebenaran daripada NMEA dan penggunaannya boleh menyebabkan pelanggaran hak cipta.
Untuk mendapatkan dokumen NMEA 0183 Interface Standard, dokumen tersebut perlu dibeli melalui laman web rasmi NMEA: NMEA 0183 Interface Standard
Namun, untuk perkongsian kali ini, saya akan menggunakan dokumen NMEA Reference Manual yang diperoleh daripada laman web SparkFun Electronics sebagai rujukan: SparkFun - NMEA Reference Manual
NMEA 0183 menggunakan format CSV (Comma Separated Values) yang mana setiap data akan dipecahkan menggunakan koma. Di bawah adalah contoh GNSS sentence:

Seperti yang ditunjukkan dalam gambar di atas, saya akan menerangkan hanya dua jenis sentence, iaitu:
- $GPGLL - Geographic Position - Latitude/Longitude
- $GPGSV - GNSS Satellites in View
$GPGLL - Geographic Position - Latitude/Longitude
Dalam sentence ini, kita boleh mendapatkan maklumat latitud, longitud dan masa UTC, seperti yang ditunjukkan dalam jadual di bawah.

Maksud bagi setiap data dalam jadual ini adalah berdasarkan rujukan daripada SparkFun.
$GPGSV - GNSS Satellites in View
Dalam sentence ini, ia mengandungi maklumat mengenai satelit GNSS yang berada dalam lingkungan pandangan (in view) modul GPS, termasuk bilangan satelit dan maklumat berkaitan kekuatan serta kedudukan satelit.

Maksud bagi setiap data dalam jadual ini adalah berdasarkan rujukan daripada SparkFun.
Di bawah ialah link video contoh projek saya yang menggunakan
Part 5: GPS NEO-6M | Tactical Watch Project
Rujukkan:
Arduino – SoftwareSerial Library
https://docs.arduino.cc/learn/built-in-libraries/software-serial/
NMEA – NMEA 0183 Interface Standard
https://www.nmea.org/nmea-0183.html
SparkFun Electronics – NMEA Reference Manual, Revision 2.1
https://cdn.sparkfun.com/assets/a/3/2/f/a/NMEA_Reference_Manual-Rev2.1-Dec07.pdf
Materials & components list
2 itemsMaterials and components listed by the project owner.
| Material / component | Brand / model | Purpose | Quantity |
|---|---|---|---|
| Arduino Pro Micro | Cytron | mikropengawal | 1 |
| Ublox NEO6MV2 | Cytron | Untuk mendapatkan data GPS | 1 |
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.