Saturday, January 18, 2025

GPS Monitoring : ESP32-DA Module

 


Percubaan untuk menghasilkan sebuah GPS monitoring berjaya. Projek ini saya gunakan : 

  1.  ESP32 Wroom
  2. GPS module GPS6MV2
  3. 2.4 oled lcd module SPI
  4. Expansion board

 setelah beberapa minit, rasanya tak sampai 5 minit, GPS saya trus lock dan hasilnya seperti di bawah.


di bawah ini saya sertkan skrip yang sudah banyak kali debug dan akhirnya sukses. have fun!!!

---------------------------------------------------------------------------------------------------------------

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <TinyGPS++.h>

// Tetapan OLED
#define OLED_MOSI   21    
#define OLED_CLK    22    
#define OLED_DC     15    
#define OLED_CS     13    
#define OLED_RESET  14    
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
  OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

// Tetapan GPS
#define RXPin 16  // Sambungkan ke pin TX GPS
#define TXPin 17  // Sambungkan ke pin RX GPS
#define GPSBaud 9600
TinyGPSPlus gps;

void setup() {
  // Memulakan Serial Monitor
  Serial.begin(115200);
  Serial.println("GPS Monitor Starting...");

  // Memulakan sambungan GPS menggunakan UART bawaan
  Serial2.begin(GPSBaud, SERIAL_8N1, RXPin, TXPin);
 
  // Memulakan OLED SPI
  if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_RESET)) {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;); // Berhenti jika OLED gagal
  }
  display.clearDisplay();
  display.setTextSize(1); // Saiz teks
  display.setTextColor(SSD1306_WHITE); // Warna teks
  display.setCursor(0, 0);
  display.println(F("GPS Monitor"));
  display.display();
  delay(2000);
}

void loop() {
  // Membaca data GPS dari Serial2
  while (Serial2.available() > 0) {
    char c = Serial2.read();
    if (gps.encode(c)) {
      displayGPSInfo(); // Paparkan maklumat GPS pada OLED
    }
  }
 
  // Debug di Serial Monitor
  if (millis() > 5000 && gps.charsProcessed() < 10) {
    Serial.println(F("Tiada isyarat GPS diterima."));
  }
}

void displayGPSInfo() {
  display.clearDisplay();
  display.setCursor(0, 0);
 
  if (gps.location.isValid()) {
    display.print(F("Lat: "));
    display.println(gps.location.lat(), 6);
    display.print(F("Lon: "));
    display.println(gps.location.lng(), 6);
    display.print(F("Alt: "));
    display.println(gps.altitude.meters());
    display.print(F("Sat: "));
    display.println(gps.satellites.value());
  } else {
    display.println(F("Mencari satelit..."));
  }
 
  display.display();
}


GPS Monitoring : ESP32-DA Module

  Percubaan untuk menghasilkan sebuah GPS monitoring berjaya. Projek ini saya gunakan :   ESP32 Wroom GPS module GPS6MV2 2.4 oled lcd module...