Hallo liebe Leute,
ich bin echt am verzweifeln.
Habe das Internet und diverse Foren durchsucht, aber nicht die richtige Lösung gefunden.
Ich habe einen Controllino in dem ein Arduino Mega (ATmega2560) verbaut ist.
Daran möchte ich eine GPS-Mouse Navilock NL-8004P betreiben (verbauter Chipsatz u-blox 8 UBX-M8030-KT).
Nach vielem hin und her habe ich ein Beispiel Programm gefunden, dass mir wenigstens Daten anzeigt die empfangen werden.
#include "TinyGPS.h"
#include "TinyGPS++.h"
TinyGPSPlus gpsPlus;
TinyGPS gps;
#define GPS_TX_DIGITAL_OUT_PIN 18
#define GPS_RX_DIGITAL_OUT_PIN 19
long startMillis;
long secondsToFirstLocation = 0;
#define DEBUG
float latitude = 0.0;
float longitude = 0.0;
void setup()
{
#ifdef DEBUG
Serial.begin(9600);
#endif
// Serial1 is GPS
Serial1.begin(9600);
// prevent controller pins 5 and 6 from interfering with the comms from GPS
//pinMode(GPS_TX_DIGITAL_OUT_PIN, INPUT);
//pinMode(GPS_RX_DIGITAL_OUT_PIN, INPUT);
startMillis = millis();
Serial.println("Starting");
}
void loop()
{
readLocation();
}
//--------------------------------------------------------------------------------------------
void readLocation(){
bool newData = false;
unsigned long chars = 0;
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 (Serial1.available())
{
int c = Serial1.read();
Serial.print((char)c); // if you uncomment this you will see the raw data from the GPS
++chars;
if (gps.encode(c)){ // Did a new valid sentence come in?
newData = true;
Serial.println("gps");
}
}
}
if (newData)
{
// we have a location fix so output the lat / long and time to acquire
if(secondsToFirstLocation == 0){
secondsToFirstLocation = (millis() - startMillis) / 1000;
Serial.print("Acquired in:");
Serial.print(secondsToFirstLocation);
Serial.println("s");
}
unsigned long age;
gps.f_get_position(&latitude, &longitude, &age);
latitude == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : latitude;
longitude == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : longitude;
Serial.print("Location: ");
Serial.print(latitude, 6);
Serial.print(" , ");
Serial.print(longitude, 6);
Serial.println("");
}
if (chars == 0){
// if you haven't got any chars then likely a wiring issue
Serial.println("Check wiring");
}
else if(secondsToFirstLocation == 0){
// still working
}
}
Aber es werden nur wirre Zeichen Empfangen und tinyGPS schafft es nicht einen gültigen Satz zu finden.
Starting
ÚÙÚv땧�™§Ÿ‘§Ÿ—›§§�•§Ÿ�§Ÿ‘›§��§�“§“•§›•Ÿ§—•§��§—‘§�›�§›“«‘såë·q_qYS§—§™§�•§›Ÿ§™�§Ÿ•“§›•§›�§•�§Ÿ‘Ÿ§��§›“§•�§��•§››§›‘§—�§›��§—™«‘såë·q_qYS§—§—§�•§›�§Ÿ•§�Ÿ—§§™Ÿ§Ÿ�§™•Ÿ§§™™§›—§›�•§™�«—�åë·qgqYS§™§�§Ÿ�§“�§�Ÿ§Ÿ�—§™Ÿ§“�§™�§Ÿ“Ÿ§��§‘Ÿ§›�§�›�§�‘§‘•§›�§››“§—�«“såë·qgqYS§™§›§Ÿ�§‘“§™�§›��§™›§‘‘§�›§™—•§§�—§›‘§Ÿ‘‘§›�§�•§‘›§Ÿ›Ÿ§™™«“—åë·qgqYS§™§™§Ÿ�§�“§™“§›�™§›‘«•{åë·qcqgg§•›™�£��Ÿ�™§c§Ÿ�™›
Dann habe ich das u-center installiert, mir einen Adapter gebaut und konnte damit normal arbeiten, es werden alle Daten empfangen. Wie in dem Programm, zeigt mir u-center 9600Baud und NMEA.
Jetzt kann man die GPS-Mouse noch unendlich viel einstellen, habe auch den output auf rein NMEA gestellt, aber was muss vielleicht noch eingestellt werden.
Trotzdem kein Erfolg.
Habe sogar PC und Controllino Parallel angeschlossen, aber der Controllino liest immer noch nur kauderwelsch (mein Gedanke war, das u-center so eine art start-config verschickt, damit überhaupt Daten gesendet werden).
Kurz:
Wie muss die GPS-Mouse vielleicht konfiguriert werden?
Was stimmt an meinem Programm nicht?
Muss ein Paket an die GPS-Mouse geschickt werden, um das Daten versenden zu aktivieren?
Ich hoffe mir kann einer helfen, ich bin am verzweifeln.
Ich habe wirklich viel gesucht im Netz, aber Leute suchen unterschiedlich und vielleicht fehlt mir das richtige Stichwort.
Ich danke euch.
Beste Grüße
Richard