Pada pembahasan
kali ini akan dijelaskan cara mengakses modul GPS dengan Node MCU, GPS bisa
digunakan untuk mengendalikan drone secara otomatis untuk memantau lokasi. Pertama
akan dibahas terlebih dahulu bagaimana cara mengakses modul gps dengan NodeMCU
Komponen yang
disiapkan :
- NodeMCU
- Modul GPS
Untuk rangkaian
dapat dilihat dibawah ini
Keterangan :
- Pin VCC pada modul GPS hubungkan ke pin Vin pada NodeMCU
- Pin GND pada modul GPS hubungkan ke pin GND pada NodeMCU
- Pin RX modul GPS hubungkan ke pin D1 NodeMCU
- Pin TX modul GPS hubungkan ke pin D2 NodeMCU
Setelah semua
terhubung selanjutnya upload program ke board NodeMCU
- Buka aplikasi Arduino IDE
- Buka pada menu sketch > include library > manage libraries
- Selanjutnya akan muncul tampilan seperti dibawah ini dan cari TinyGPS dan install, tunggu samapi proses instalasi selesai dan close jika selesai di install
- Salin program dibawah ini ke project kalian
- Pada Arduino IDE pilih menu tools > board > esp8266 > NodeMCU
- Pilih lagi menu tools > port > COM yang aktif
- Setelah itu upload program dan tunggu sampai selesai
- Cek pada serial monitor, akan muncul sejumlah informasi koordinat dari GPS
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
const int RXPin = D1, TXPin = D2;
const uint32_t GPSBaud = 9600; //Default baud of NEO-6M is 9600
TinyGPSPlus gps; // the TinyGPS++ object
SoftwareSerial gpsSerial(RXPin, TXPin); // the serial interface to the GPS device
void setup() {
Serial.begin(9600);
gpsSerial.begin(GPSBaud);
Serial.println(F("Arduino - GPS module"));
}
void loop() {
if (gpsSerial.available() > 0) {
if (gps.encode(gpsSerial.read())) {
if (gps.location.isValid()) {
Serial.print(F("- latitude: "));
Serial.println(gps.location.lat());
Serial.print(F("- longitude: "));
Serial.println(gps.location.lng());
Serial.print(F("- altitude: "));
if (gps.altitude.isValid())
Serial.println(gps.altitude.meters());
else
Serial.println(F("INVALID"));
} else {
Serial.println(F("- location: INVALID"));
}
Serial.print(F("- speed: "));
if (gps.speed.isValid()) {
Serial.print(gps.speed.kmph());
Serial.println(F(" km/h"));
} else {
Serial.println(F("INVALID"));
}
Serial.print(F("- GPS date&time: "));
if (gps.date.isValid() && gps.time.isValid()) {
Serial.print(gps.date.year());
Serial.print(F("-"));
Serial.print(gps.date.month());
Serial.print(F("-"));
Serial.print(gps.date.day());
Serial.print(F(" "));
Serial.print(gps.time.hour());
Serial.print(F(":"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
Serial.println(gps.time.second());
} else {
Serial.println(F("INVALID"));
}
Serial.println();
}
}
if (millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F("No GPS data received: check wiring"));
}