Mobilitätsprojekt Schlaglochdetektion
VCD-Projekt | DIY: Verkehrswende selber machen
BLOG | Dezember 2023
Im letzten Beitrag habe ich meine Versuche beschrieben, das GPS Modul zum Laufen zu bekommen. Nach mehreren Versuchen ist es mir gelungen, GPS Werte über einen ESP auszulesen. Wie ich dabei vorgegangen bin und wo das Problem lag, könnt ihr hier lesen.
Da ich den nicht funktionierenden GPS-Sensor gegen ein anderes Modell austauschen musste, habe ich mich nach hochwertigeren Modellen umgesehen. Die Anforderung meinerseits ist, dass sie funktionieren, der Sensor viele Beispiele hat, um zu wissen, dass das Model oft verwendet wird und eine Internetseite hat, wo man alle Funktionen nachlesen kann. Nach einiger Recherche bin ich auf ein GPS-Sensormodul mit den nötigen Anforderungen meinerseits gestoßen (Abbildung 1). Das GPS-Sensormodul, was mir schon vorher bekannt (Abbildung 2) war, hat zwei Anschlüsse, einen für die neue Antenne und einen Anschluss für die alte Antenne.
Während der Wartezeit auf den neuen GPS-Sensor mit neuer Antenne 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, während der Fahrt die Straße zu beobachten 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-Sensorkommunikations-Pin neu angeschlossen und das SD-Kartenmodul bekommt jetzt seinen neuen Kommunikations-Pin zugewiesen. Ich habe einen neuen Pin zugewiesen, da der GPIO15 Pin aus bisher unbekanten Gründen nicht funktioniert hat.
Kommuniziert wird über SPI, als Chipselect (CS) über den Pin D2 (GPIO4) (siehe Abbildung 4, Kommunikations-Pin). Nun wird an der Unterseite des ESP-8266 das SD-Kartenmodul angebracht. Für den GPS-Sensor habe ich einen angepassten Code geschrieben, damit - wenn der neue GPS-Sensor mit Antenne geliefert wird - ich ihn sofort anschließen kann und mit diesem Code zum Laufen bringen werde (Quelle: forum.arduino.cc/t/check-wiring-on-gps-module/942894 ):
#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 ss(15, 14);
void setup()
{
Serial.begin(9600);
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());
}
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 **");
}
Hier 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) von der Kommunikation des GPS-Sensors (TinyGPS.h) verantwortlich. Mit Softwareserial sage ich dem Controller worüber kommuniziert wird. Im void setup, habe ich mit serial begin die Baudrate bestimmt, damit beide Bords sich verstehen und welche Bibliotheken einbezogen werden sollen. In der void loop wird der genaue Ablauf des Programms geregelt. Im ersten Klammerbschnitt wird der Sensor abgefragt, diese Daten werden dann ausgelesen und in Form von Längen- und Breitengrad ausgegeben.
Des Weiteren werde ich mich im kommenden Blogbeitrag näher mit dem SD-Kartenmodul beschäftigen.
Schülerprojekt
Schüler Jan Ebert, 11. Klasse
Projektzeitraum: 10.2023 - 06.2024
Ansprechpartner Fakultät ING
Projektbetreuung
Förderung
VCD Verkehrsclub Deutschland e.V.