diff --git a/Code/tiny_gps_esp32 b/Code/tiny_gps_esp32
new file mode 100644
index 0000000000000000000000000000000000000000..c2ce403a13ebbf2c71885be1938c195fb9b6c471
--- /dev/null
+++ b/Code/tiny_gps_esp32
@@ -0,0 +1,226 @@
+#include <TinyGPS++.h>
+#include <SoftwareSerial.h>
+/*
+   This sample sketch demonstrates the normal use of a TinyGPS++ (TinyGPSPlus) object.
+   It requires the use of SoftwareSerial, and assumes that you have a
+   4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
+*/
+static const int RXPin = 16, TXPin = 17;
+static const uint32_t GPSBaud = 9600;
+
+// neu 
+long timeToDisplay = 0;
+String monat,tag,jahr;
+String stunde,minute1,sekunde;
+float flat, flong, kmh;
+
+// Libraries for SD card
+#include "FS.h"
+#include "SD.h"
+#include <SPI.h>
+
+// Define CS pin for the SD card module
+#define SD_CS 5
+
+// Save reading number on RTC memory
+RTC_DATA_ATTR int readingID = 0;
+
+String dataMessage;
+
+// The TinyGPS++ object
+TinyGPSPlus gps;
+
+// The serial connection to the GPS device
+SoftwareSerial ss(RXPin, TXPin);
+
+void setup()
+{
+  Serial.begin(115200);
+  ss.begin(GPSBaud);
+
+ // Initialize SD card
+  SD.begin(SD_CS);  
+  if(!SD.begin(SD_CS)) {
+    Serial.println("Card Mount Failed");
+    return;
+  }
+  uint8_t cardType = SD.cardType();
+  if(cardType == CARD_NONE) {
+    Serial.println("No SD card attached");
+    return;
+  }
+  Serial.println("Initializing SD card...");
+  if (!SD.begin(SD_CS)) {
+    Serial.println("ERROR - SD card initialization failed!");
+    return;    // init failed
+  }
+
+  // If the data.txt file doesn't exist
+  // Create a file on the SD card and write the data labels
+  File file = SD.open("/data.txt");
+  if(!file) {
+    Serial.println("File doens't exist");
+    Serial.println("Creating file...");
+    writeFile(SD, "/data.txt", "Reading ID, Tag, Monat, Jahr, Stunde, Minute, Sekunde, Latitude, Longitude, Speed \r\n");
+  }
+  else {
+    Serial.println("File already exists");  
+  }
+  file.close();  
+
+//  getReadings();  // from the NEO-6M GPS module
+  logSDCard();
+  // Increment readingID on every new reading
+}
+
+void loop()
+{
+  // This sketch displays information every time a new sentence is correctly encoded.
+  while (ss.available() > 0)
+    if (gps.encode(ss.read()))
+
+  if (millis() > 5000 && gps.charsProcessed() < 10)
+  {
+    Serial.println(F("No GPS detected: check wiring."));
+    while(true);
+  }
+// neu
+  smartDelay(1000);
+  displayInfo();
+   logSDCard();
+  // Increment readingID on every new reading
+ // readingID++;
+}
+
+static void smartDelay(unsigned long ms)
+{
+  unsigned long start = millis();
+  do 
+  {
+    while (ss.available())
+      gps.encode(ss.read());
+  } while (millis() - start < ms);
+}
+
+
+
+void displayInfo()
+{
+  Serial.print(F("Location: ")); 
+  if (gps.location.isValid())
+  {
+    flat = gps.location.lat();
+    flong = gps.location.lng(); 
+    Serial.print(flat, 6);
+    Serial.print(F(","));
+    Serial.print(flong, 6); 
+    //Serial.print(gps.location.lat(), 6);
+    //Serial.print(F(","));
+    //Serial.print(gps.location.lng(), 6);
+
+  }
+  else
+  {
+    Serial.print(F("INVALID"));
+  }
+
+  Serial.print(F(" Speed KMH: "));
+  if (gps.speed.isValid())
+  {
+    kmh = gps.speed.kmph();
+    Serial.print(kmh); 
+    Serial.print(gps.speed.kmph());
+  }
+  else
+  {
+    Serial.print(F("INVALID"));
+  }
+  Serial.print(F("  Date/Time: "));
+  if (gps.date.isValid())
+  {
+
+    monat = gps.date.month();
+    tag = gps.date.day();
+    jahr = gps.date.year();    
+    Serial.print(monat);
+    Serial.print(F("/"));
+    Serial.print(tag);
+    Serial.print(F("/"));
+    Serial.print(jahr);
+  }
+  else
+  {
+    Serial.print(F("INVALID"));
+  }
+
+  Serial.print(F(" "));
+  if (gps.time.isValid())
+  {
+    if (gps.time.hour() < 10) Serial.print(F("0"));
+    stunde = gps.time.hour();
+    Serial.print(stunde);
+    Serial.print(F(":"));
+    if (gps.time.minute() < 10) Serial.print(F("0"));
+    minute1 = gps.time.minute();
+    Serial.print(minute1);
+    Serial.print(F(":"));
+    if (gps.time.second() < 10) Serial.print(F("0"));
+    sekunde = gps.time.second();
+    Serial.print(sekunde);
+    Serial.print(F("."));
+  }
+  else
+  {
+    Serial.print(F("INVALID"));
+  }
+
+  Serial.println();
+}
+
+
+// Write the sensor readings on the SD card
+void logSDCard() {
+  if (gps.location.isValid()){
+  dataMessage = String(readingID) + "," + String(tag) + "," + String(monat) + "," 
+                + String(jahr) + "," + String(stunde) + "," + String(minute1) + "," 
+                + String(sekunde) + "," + String(flat, 6) + "," + String(flong, 6) + "," + String(kmh) + "\r\n";
+  Serial.print("Save data: ");
+  Serial.println(dataMessage);
+  appendFile(SD, "/data.txt", dataMessage.c_str());
+  readingID++;
+  }
+}
+
+// Write to the SD card (DON'T MODIFY THIS FUNCTION)
+void writeFile(fs::FS &fs, const char * path, const char * message) {
+  Serial.printf("Writing file: %s\n", path);
+
+  File file = fs.open(path, FILE_WRITE);
+  if(!file) {
+    Serial.println("Failed to open file for writing");
+    return;
+  }
+  if(file.print(message)) {
+    Serial.println("File written");
+  } else {
+    Serial.println("Write failed");
+  }
+  file.close();
+}
+
+// Append data to the SD card (DON'T MODIFY THIS FUNCTION)
+void appendFile(fs::FS &fs, const char * path, const char * message) {
+  Serial.printf("Appending to file: %s\n", path);
+
+  File file = fs.open(path, FILE_APPEND);
+  if(!file) {
+    Serial.println("Failed to open file for appending");
+    return;
+  }
+  if(file.print(message)) {
+    Serial.println("Message appended");
+  } else {
+    Serial.println("Append failed");
+  }
+  file.close();
+}