Oleh Muhammad Ilyasaa dalam Tutorial Arduino
Tahap Kesukaran : Baru Mula Belajar

>> Pengenalan <<

Terdapat banyak projek yang boleh dibuat menggunakan modul GPS dengan Arduino. Antaranya adalah seperti GPS logger, Car Tracker, path tracker dan banyak lagi. Dalam tutorial ini, kita akan belajar cara untuk membaca data yang dihantar oleh modul NEO6M GPS menggunakan papan Arduino Uno.

Jika anda melihat modul NEO6M GPS, ia mempunyai 4 pin iaitu VCC, GND, TX dan RX. Modul NEO6M GPS berkomunikasi menggunakan komunikasi siri UART bersesuaian dengan protokol yang digunakan oleh papan Arduino Uno untuk pin komunikasi siri nya. Modul NEO6M GPS ini sangat mudah digunakan kerana ia secara berterusan menhantar data NMEA (National Marine Electronics Association) melalui pin TX nya. Modul GPS ini akan secara automatik mendapatkan kedudukan atau maklumat GPS seperti titik latitud, longitud serta masa.

>> Ciri Ciri Modul NEO6M GPS <<

Modul GPS ini beroperasi menggunakan mod komunikasi jenis TTL dan ianya bersesuaian digunakan dengan sistem 3.3V (papan Raspberry Pi) atau 5V (papan Arduino Uno). Modul GPS ini boleh beroperasi menggunakan bekalan kuasa serendah 2.7V ke 5V. Selepas dihidupkan, masa yang diperlukan oleh GPS untuk stabil adalah sekurang kurangnya selama 27 saat. Ketepatan kedudukan bacaan GPS dianggarkan lebih kurang dalam 5 meter setelah modul GPS dikunci kepada satelit. Kelajuan komunikasi siri pula adalah pada kadar baudrate 9600. Pastikan anda menggunakan modul GPS ini pada kawasan luar yang terdedah kepada langit. Akhirnya, tips untuk mendapatkan bacaan yang sah daripada modul GPS ini adalah penggunaan pada cuaca yang kurang berawan dan modul GPS harus dalam keadaan bergerak bagi membolehkan modul GPS mengunci kedudukan satelit. Kedudukan di dalam kawasan tertutup dan statik (tidak bergerak) tidak membolehkan modul GPS untuk mendapatkan bacaan.

 

Kedudukan statik (tidak bergerak) tidak membolehkan modul GPS untuk mendapatkan bacaan yang sah.

Kedudukan bergerak bagi membolehkan modul GPS mengunci kedudukan satelit dan mendapatkan bacaan yang sah.

Jika di kedai kami, cara kami menguji modul GPS kami adalah dengan menggerakan modul GPS kami yang telah dihidupkan di atas papan pengujian melalui kawasan rumah teres bagi mendapatkan bacaan GPS yang sah. Merujuk kepada gambar peta di atas, nombor 1 adalah titik permulaan iaitu kedai kami. Kami akan memandu kereta menggunakan jalan seperti gambar di atas melalui rumah rumah teres dan kembali ke nombor 3 semula iaitu kedai kami. Kebiasaanya hanya pada nombor 2 sahaja bacaan GPS akan mula sah untuk diambil data.

>> Komponen Apa yang anda perlukan <<

Dalam tutorial ini, anda akan belajar cara untuk menggunakan Modul NEO6M GPS dengan papan Arduino uno. Komponen yang anda perlukan :

>> Sambungan litar <<

>> Kod arduino <<

Di bawah adalah kod untuk bermain dengan modul NEO6M GPS. Kod di bawah akan memaparkan bacaan seperti titik Latitud, Longitud, tarikh serta masa di paparan Serial monitor.

>> Library TinyGPSPlus boleh dimuat turun di sini.

/* Programmer : Muhammad Ilyasaa Bin Abdul Rahman
 * More info at https://www.nadieleczone.com.my
 */

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

static const int RXPin = 2, TXPin = 3;
static const uint32_t GPSBaud = 9600;

TinyGPSPlus gps;

SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
  Serial.begin(9600);
  gpsSerial.begin(GPSBaud);

  Serial.println(F("GPS Testing"));
}

void loop()
{
  while (gpsSerial.available() > 0)
  {
    if (gps.encode(gpsSerial.read()))
    {
      displayInfo();
    }
  }

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected: check wiring."));
    while(true);
  }
}

void displayInfo()
{
  Serial.print(F("Location: ")); 
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}

Siapkan litar di atas, buka perisian Arduino IDE dan muat naik kod di atas ke dalam papan Arduino Uno (jangan lupa untuk memasang library TinyGPSPlus terlebih dahulu jika anda masih belum memasangnya ke perisian Arduino IDE). Selepas selesai memuat naik kod, buka serial monitor untuk melihat bacaan modul NEO6M GPS di paparan serial monitor anda. Serial monitor akan memaparkan bacaan INVALID atau bacaan terakhir yang sah sebelumnya selagi modul GPS tidak dapat dikuncikan kedudukannya kepada satelit.

>> Tahniah, anda hebat <<

Anda telah berjaya menyelesaikan tutorial modul NEO6M GPS dan kini anda sudah berjaya menggunakan modul NEO6M GPS dengan papan Arduino Uno.

TINGGALKAN JAWAPAN BALAS ANDA

Sila masukkan ulasan anda!
Sila masukkan nama anda di sini