Arduino Seri Port ekranında doğru çıktı vermiyor

Katılım
2 Ocak 2022
Mesajlar
5
Puanları
1
Esp-32 Wroom kartı ve NEO6M Gps modülü kullanarak Arduino IDE üzerinden konum takip projesi yapıyorum. Kodlar çalıştıktan sonra Seri Port ekranın da anlamsız yazılar çıkmaktadır.

1729675702946.png


Kodlar;

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

TinyGPSPlus gps;

HardwareSerial ss(2);
void setup() {
delay(3000);

Serial.begin(115200);
ss.begin(9600, SERIAL_8N1, 16, 17);
Serial.println("GPS modülünden veri bekleniyor...");
}
void loop() {

if (ss.available()) {
while (ss.available()) {
char c = ss.read();
Serial.print(c);

if (gps.encode(c)) {
if (gps.location.isValid()) {

Serial.print("Enlem: ");
Serial.println(gps.location.lat(), 6);
Serial.print("Boylam: ");
Serial.println(gps.location.lng(), 6);

Serial.print("Google Maps: https://www.google.com/maps/place/");
Serial.print(gps.location.lat(), 6);
Serial.print(",");
Serial.println(gps.location.lng(), 6);
} else {
Serial.println("GPS verisi geçersiz. Uydu bekleniyor...");
}
}
}
} else {
Serial.println("GPS modülünden veri alınamıyor.");
}
delay(1000);
}
 
Kodda bir sorun görünmüyor, ancak GPS modülünün doğru çalışıp çalışmadığını doğrulamak önemli.
Bu hataların nedenleri şunlar olabilir:

Kablolama doğru yapılmadıysa, veri akışı gerçekleşmeyebilir. TX ve RX pinlerini kontrol edin(kodda 16 ve 17 numaralı pinler kullanılıyor).

Ayrıca, GPS modülünün yeterli güç aldığından emin olun.

PS modülleri bazen uzun süre uydulara bağlanamayabilir, özellikle kapalı alanlarda.
Modülün dışarıda kullanıldığından ve iyi bir görüş açısına sahip olduğundan emin olun.

GPS modülü farklı baud hızlarıyla çalışabilir.
Kodunuzda 9600 baud hızında çalıştırıyorsunuz, ancak bazı modüller farklı hızda olabilir. GPS modülünüzün datasheet’ine bakarak doğru baud hızını kontrol edin ve gerekirse şu satırı değiştirin:

ss.begin(9600, SERIAL_8N1, 16, 17);

Eğer modül doğru bağlanmış ve dış mekanda çalışıyorsa ama hala veri alınamıyorsa, yazılımsal bir sorun olmadığını doğrulamak için farklı bir terminal veya GPS test yazılımı kullanarak modülden ham veri gelip gelmediğini kontrol edebilirsiniz
Aşağıdaki linke bakın:.
https://arduinogetstarted.com/tutorials/arduino-gps
 
Kodda bir sorun görünmüyor, ancak GPS modülünün doğru çalışıp çalışmadığını doğrulamak önemli.
Bu hataların nedenleri şunlar olabilir:

Kablolama doğru yapılmadıysa, veri akışı gerçekleşmeyebilir. TX ve RX pinlerini kontrol edin(kodda 16 ve 17 numaralı pinler kullanılıyor).

Ayrıca, GPS modülünün yeterli güç aldığından emin olun.

PS modülleri bazen uzun süre uydulara bağlanamayabilir, özellikle kapalı alanlarda.
Modülün dışarıda kullanıldığından ve iyi bir görüş açısına sahip olduğundan emin olun.

GPS modülü farklı baud hızlarıyla çalışabilir.
Kodunuzda 9600 baud hızında çalıştırıyorsunuz, ancak bazı modüller farklı hızda olabilir. GPS modülünüzün datasheet’ine bakarak doğru baud hızını kontrol edin ve gerekirse şu satırı değiştirin:

ss.begin(9600, SERIAL_8N1, 16, 17);

Eğer modül doğru bağlanmış ve dış mekanda çalışıyorsa ama hala veri alınamıyorsa, yazılımsal bir sorun olmadığını doğrulamak için farklı bir terminal veya GPS test yazılımı kullanarak modülden ham veri gelip gelmediğini kontrol edebilirsiniz
Aşağıdaki linke bakın:.
https://arduinogetstarted.com/tutorials/arduino-gps
Her iki porttun hızını 9600baud yapıp deneyiniz.
Geç yanıtım için kusura bakmayın. Seri port ekranında ki sorunu düzelttim. Ancak bu sefer farklı bir sorun çıktı. Seri port ekranına mesajlar geliyor
(
"Konum verisi henüz alınmadı. GPS modülü uydulardan veri bekliyor..."
) burda takılı kalıyor.
Ve sürekli 'COM3' üzerinde ki ESP32 Dev Module bağlantısı kuruluyor yazısı çıkıyor. 2 dakika sonra ise Serial port busy hatası alıyorum. Ancak portta başka bir işlem yapmıyorum.
Kodları şu şekilde güncelledim;

C++:
#include <TinyGPS++.h>
#include <HardwareSerial.h>

TinyGPSPlus gps;
HardwareSerial gpsSerial(2);  // Serial2, RX2=GPIO16, TX2=GPIO17

// Fonksiyon Prototipleri
void testGPS();
void testESP32();
void displayGoogleMapsLink(double lat, double lon);

void setup() {
  Serial.begin(9600);
  Serial.println("ESP32 GPS Konum Takip Projesi Basliyor...");
 
  // GPS modül seri bağlantısı
  gpsSerial.begin(9600, SERIAL_8N1, 16, 17);  // RX=16, TX=17
 
  testESP32();
  testGPS();
}

void loop() {
  // GPS verilerini okuma
  while (gpsSerial.available() > 0) {
    char c = gpsSerial.read();
    gps.encode(c);  // GPS verisini TinyGPS++ kütüphanesine gönder

    // Seri monitörde GPS modülünden gelen ham veriyi görüntüleme
    Serial.write(c);
  }

  // GPS verileri başarılı bir şekilde kodlanmışsa
  if (gps.location.isUpdated()) {
    double latitude = gps.location.lat();
    double longitude = gps.location.lng();
   
    // Konum bilgisini seri monitöre yazdır
    Serial.print("Enlem: ");
    Serial.println(latitude, 6);
    Serial.print("Boylam: ");
    Serial.println(longitude, 6);
   
    // Google Maps linki oluştur
    displayGoogleMapsLink(latitude, longitude);
  } else {
    Serial.println("Konum verisi henüz alınmadı. GPS modülü uydulardan veri bekliyor...");
  }
}

// ESP32'nin çalıştığını doğrulayan basit bir test fonksiyonu
void testESP32() {
  Serial.println("ESP32 Basariyla Calisiyor.");
}

// GPS modülünün çalıştığını doğrulayan basit bir test fonksiyonu
void testGPS() {
  if (gpsSerial) {
    Serial.println("GPS modülü bağlı ve çalışıyor.");
  } else {
    Serial.println("GPS modülü bağlı değil ya da çalışmıyor.");
  }
}

// Google Maps üzerinde konumu görüntülemek için link
void displayGoogleMapsLink(double lat, double lon) {
  Serial.print("Google Maps Link: ");
  Serial.print("https://www.google.com/maps/place/");
  Serial.print(lat, 6);
  Serial.print(",");
  Serial.println(lon, 6);
}
 
Eğer GPS sinyali almakta zorlanıyorsanız, uyduları algılayıp algılamadığını daha doğru şekilde kontrol etmek için bekleme süresini artırabilirsiniz.

Doğrudan GPS Modülünü test etmek için basit test kodu:
GPS modülünden gelen verileri direkt seri monitörde görüntüler.

#include <HardwareSerial.h>

HardwareSerial gpsSerial(2); // RX2=GPIO16, TX2=GPIO17

void setup() {
Serial.begin(115200); // Seri Monitör bağlantısı
gpsSerial.begin(9600, SERIAL_8N1, 16, 17); // GPS modülü bağlantısı
Serial.println("GPS modülünden veri bekleniyor...");
}

void loop() {
if (gpsSerial.available()) {
while (gpsSerial.available()) {
char c = gpsSerial.read();
Serial.print(c); // GPS modülünden gelen ham veriyi yazdır
}
}
}

Aşağıdaki linke bakın

https://esp32io.com/tutorials/esp32-gps

Kolay gelsin
 

Forum istatistikleri

Konular
129,750
Mesajlar
929,594
Kullanıcılar
452,488
Son üye
oozgur

Yeni konular

Geri
Üst