#include "NMEA.h" // GPS verilerini işlemek için
#include <SoftwareSerial.h>
float latitude;
float longitude;
float altitude;
float speed;
// GPS verilerini okumak için SoftwareSerial portu
SoftwareSerial gpsSerial(6, 7); // RX, TX pinleri
NMEA gps(GPRMC);
void setup()
{
Serial.begin(115200);
gpsSerial.begin(9600);
// RESET pinini çıkış olarak ayarla ve LOW seviyesine çek.
pinMode(10, OUTPUT);
digitalWrite(10, LOW);
delay(1000); // Reset süresi için bekle
digitalWrite(10, HIGH);
Serial.println("GPRS Test Başlatıldı");
// GPRS modülü ile iletişimi başlat
mockSendATCommand("AT");
mockSendATCommand("AT+CGATT=1"); // GPRS'i aktive et
mockSendATCommand("AT+CSTT=\"internet\""); // APN ayarı (APN'i kendi servis sağlayıcınıza göre değiştirin)
mockSendATCommand("AT+CIICR"); // Kablosuz bağlantıyı başlat
mockSendATCommand("AT+CIFSR"); // IP adresi al
// GPRS bağlantısını kapat
mockSendATCommand("AT+CIPSHUT");
delay(1000);
}
void loop() {
// Waits for serial port data
while (gpsSerial.available()) {
// Receives data from GPS serial port
char serialData = gpsSerial.read();
Serial.print(serialData);
// Checks if the GPS sentence is valid
if (gps.decode(serialData)) {
latitude = gps.gprmc_latitude();
longitude = gps.gprmc_longitude();
speed = gps.gprmc_speed(KMPH);
// latitude = gps.gprmc_latitude();
// longitude = gps.gprmc_longitude();
// speed = gps.gprmc_speed(KMPH);
// Serial.println();
// Serial.println("Decoded GPS Data:");
// Serial.print("Latitude: ");
// Serial.println(latitude, 8);
// Serial.print("Longitude: ");
// Serial.println(longitude, 8);
// Serial.print("Speed: ");
// Serial.println(speed, 8);
// Add line break
Serial.println();
Serial.println();
// Show Latitude
Serial.print("Latitude: ");
Serial.println(latitude, 8);
// Show Longitude
Serial.print("Longitude: ");
Serial.println(longitude, 8);
// Show Speed in km/h
Serial.print(" Speed: ");
Serial.print(speed);
Serial.println(" Km/h");
// Converts Geographic Coordinates to Cartesian Plane
convertCartesian(latitude, longitude,speed);
}
}
}
// void processGpsData(char serialData)
// {
// if (gps.decode(serialData)) {
// if (gps.gprmc_status() == 'A')
// {
// latitude = gps.gprmc_latitude();
// longitude = gps.gprmc_longitude();
// speed = gps.gprmc_speed(KMPH);
// Serial.println();
// Serial.println("Decoded GPS Data:");
// Serial.print("Latitude: ");
// Serial.println(latitude, 8);
// Serial.print("Longitude: ");
// Serial.println(longitude, 8);
// Serial.print("Speed: ");
// Serial.println(speed, 8);
// convertCartesian(latitude, longitude,speed);
// sendDataToGPRS(latitude, longitude,speed);
// }
// }
// }
void convertCartesian(float latitude, float longitude,float speed) {
float latRadius = latitude * (PI) / 180;
float lonRadius = longitude * (PI) / 180;
int earthRadius = 6371;
float posX = earthRadius * cos(latRadius) * cos(lonRadius);
float posY = earthRadius * cos(latRadius) * sin(lonRadius);
Serial.print(" X: "); Serial.println(posX);
Serial.print(" Y: "); Serial.println(posY);
sendDataToGPRS(latitude, longitude, speed);
}
void sendDataToGPRS(float latit, float longit, float velo)
{
// IP adresi ve portu değiştirin
const char* server = "192.168.1.1";
const int port = 80;
String data = "latitude=" + String(latitude, 8) + "&longitude=" + String(longitude, 8) + "&speed=" + String(speed, 8);
Serial.println("Sending Data to GPRS...");
mockSendATCommand("AT+CIPSTART=\"TCP\",\"" + String(server) + "\"," + String(port));
delay(2000);
mockSendATCommand("AT+CIPSEND");
delay(2000);
mockSendData(data);
delay(2000);
mockSendATCommand("AT+CIPSHUT"); // Bağlantıyı kapat
}
void mockSendATCommand(String command)
{
Serial.print("Mock AT Command: ");
Serial.println(command);
delay(1000);
// Simulated response
Serial.println("OK");
}
void mockSendData(String data)
{
Serial.print("Mock Data Send: ");
Serial.println(data);
delay(1000);
// Simulated response
Serial.println("SEND OK");
}