Dezember 2023

Ran an den Code!

Da ich die nicht funktionierende Antenne gegen ein anderes Modell austauschen musste, habe ich mich nach hochwertigeren Modellen umgesehen. Die Anforderung meinerseits ist, dass der Sensor viele Anwendungsmöglichkeiten und eine Internetseite hat, wo man alle Funktionen nachlesen kann. Nach einiger Recherche bin ich auf eine Antenne mit den nötigen Anforderungen gestoßen (Abbildung 1). Mit einem Betriebsbord, was mir schon vorher bekannt (Abbildung 2) war und mit dem ich auch meine alte Antenne anschließen könnte.

Während der Wartezeit habe ich mich mit der Befestigung der Kamera für Kontrollaufnahmen beschäftigt. Ich habe versucht, die Kamera so am Sattel zu montieren, um einen vertikalen Blick auf die Straße zu ermöglichen. Die Kamera hat den Zweck, die Fahrt zu betrachten und bei den ersten Fahrten die Zuverlässigkeit des Kontrollsystems zu überprüfen. Ebenfalls habe ich noch die Adapterplatine auf die neuen Gegebenheiten aktualisiert. (Abbildung 3 Abgeänderte Platine)

An der Adapterplatine habe ich den GPS-Sensorkommunikation-Pin neu angeschlossen und das SD-Kartenmodul bekommt jetzt seinen neuen Kommunikation-Pin zugewiesen.

 

Das SD-Kartenmodul bekommt nun den Kommunikation-Pin D4 (GPIO4) (Abbildung 4 Kommunikation-Pin) und wird an der Unterseite des ESP-8266 angebracht. Für die Antenne habe ich also einen Code geschrieben, damit, wenn die neue Antenne geliefert, ich sie sofort anschließen kann.

Der Code:

#include <SoftwareSerial.h>

#include <TinyGPS.h>

 

/* This sample code demonstrates the normal use of a TinyGPS 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).

*/

TinyGPS gps;

// SoftwareSerial(rxPin, txPin, inverse_logic)

//0 2 fur esp8266

SoftwareSerial ss(2, 0);

 

void setup()

{

  Serial.begin(115200);

  ss.begin(9600);

 

  Serial.print("Simple TinyGPS library v. "); Serial.println(TinyGPS::library_version());

  Serial.println("by Mikal Hart");

  Serial.println();

}

void loop()

{

  bool newData = false;

  unsigned long chars;

  unsigned short sentences, failed;

 

  // For one second we parse GPS data and report some key values

  for (unsigned long start = millis(); millis() - start < 1000;)

  {

    while (ss.available())

    {

      char c = ss.read();

      //Serial.write(c); // uncomment this line if you want to see the GPS data flowing

      if (gps.encode(c)) // Did a new valid sentence come in?

        newData = true;

    }

  }

  if (newData){

    float flat, flon;

    unsigned long age;

    gps.f_get_position(&flat, &flon, &age);

    Serial.print("LAT=");

    Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);

    Serial.print(" LON=");

    Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);

    Serial.print(" SAT=");

    Serial.print(gps.satellites() == TinyGPS::GPS_INVALID_SATELLITES ? 0 : gps.satellites());

    Serial.print(" PREC=");

    Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop());

    Serial.println();

  }

gps.stats(&chars, &sentences, &failed);

Serial.print(" CHARS=");

Serial.print(chars);

Serial.print(" SENTENCES=");

Serial.print(sentences);

Serial.print(" CSUM ERR=");

Serial.println(failed);

if (chars == 0)

Serial.println("** No characters received from GPS: check wiring **");

Die Erklärung zu diesem Code:

Als erstes habe ich mir die zwei Bibliotheken (#Include) auf die Software gedownloadet und aktiviert. Diese Bibliotheken sind für die Kommunikation (SoftwareSerial.h) und für die Dekodierung (TinyGPS.h) verantwortlich. Mit Softwareserial sage ich dem Controller worüber kommuniziert wird. Im void setup, habe ich mit serial begin die Kommunikation-höhe bestimmt, damit beide Parteien sich verstehen und welche Bibliotheken einbezogen werden sollen. In der void loop wird der genaue Ablauf des Programmes geregelt. Im ersten klammerbschnitt wird der Sensor abgefragt, diese Daten werden dann ausgelesen und mit „if“ werden dann die Daten dekodiert. In den Print sentences werden die dekodierten Daten dann aufgeschrieben.

In meinem Blogbeitrag im Januar werde ich erläutern, wie der GPS-Sensor sowie das SD-Kartenmodul funktionieren. Erklärung der Codes SD-Kartenmodul und Schock Sensor.  Des Weiteren werde ich auf die verwendeten Codes eingehen und erklären, wie ich sie in ein Programm zusammengefügt bekomme. Ich werde auch beschreiben, was ich über den genauen Aufbau und die Funktion der Aufzeichnung auf der SD-Karte gedacht habe.