Moinsen! Gibt es hier vielleicht jemanden? Die Dinger sind doch zum Basteln ideal. Folgendes: Mein derzeitiger GPS Logger auf N8N Basis klappt mit Google Earth sehr gut. Problem ist nur, dass er auch beim Stillstand (z.b. Arbeitszeit) laufend Daten auspuckt, die dann als dicke Punkte-Knubbel zu sehen sind. Sehr unschön und auch Datenverschwendung. Das ublox Modul ist direkt an openlog gepappt und wurde mit u-center konfiguriert. Ich weiss das sowas geht von einem alten Foto-Tagger aber leider nicht wie: Aktuell geht alle 5s ein NMEA Satz raus, GGA und RMC. Es gibt aber bei ucenter so Dinge wie Odometer, Profile für Gehen, Laufen, Auto usw. Es soll nur ein Datensatz rausgehen, wenn eine Mindestwegstrecke erkannt wurde, sagen wir mal 25m um über der Toleranz zu bleiben. Nur dann soll ein NMEA Satz gesendet werden. Ich sage gleich dazu, dass ich das probiert habe.... geht nicht. Vermutlich wegen konkurrierender Einstellungen. Klappt es nicht bleibt mir nur die Lösung mit einem uC und einem Vibrationsensor der den Stillstand erkennt und das Modul per Befehl abschaltet. Jemand ne Idee? Bitte nicht "Handbuch lesen".. das hat mich auch nicht schlauer gemacht.
Aus dem "Punkte-Knubbel" den Positionsmittelwert berechnen und dann den Abstand zu diesem bereinigten Punkt berechnen. Datentelegramme ignorieren, bei denen der Abstand unter dem vorgegebenen Mindestabstand liegt. Das kann man entweder mit einem handelsüblichen PC mit einem Basic- oder C-Progrämmchen oder auch mit einem der vielen "Bastelcomputer" machen.
Christian J. schrieb: > dass er auch beim Stillstand Du möchtest bitte das "Handbuch" (aka "Receiver Protocol Description"), Kapitel "x.y Static Hold" lesen. Die Funktion sollte es in allen M8* geben. VG, Stephan
Moin, also ich habe mir jetzt folgendes aufgebaut... die Funktion die ich wünsche läuft wohl nur mit dem internen Recorder, den ich aber nicht benutze. Dieser hat 16 Mbit Flash zur Verfügung. Er wird aktiviert mit Odometer und einigen Mausklicks oder Steuerbefehlen die der uC gibt. Nee.... ich habe meinen Recorder, openlog. Und der klappt ja prima. Aufgebaut ist jetzt ein Arduino Pro Mini, der einen winzigen 3V3 DC/DC Wandler ansteuert, der einen Enable Pin hat. An dem Ardu hängt ein ADXL345 Gyro Sensor, der auf Motion Detection eingestellt ist und dann einen INT ausspuckt. Die üblichen Bewegungsmelder / Glasbruch etc. sind zu unempfindlich. Quecksilber gibt es nicht mehr, leider. Bewegt sich der Logger nicht mehr (Auto, Rucksack) soll das GPS abgeschaltet werden damit diese "Punkte-Knubbel" vermieden werden. Das sieht unschön aus. Zudem gibt es leider auch Ausreißer dabei. Wie ich es abschalte ist noch offen, da es passieren kann, dass es mitten im Datensatz abbricht wenn ich den DC/DC abschalte und ich dann Fragmente habe, die einen Fehler erzeugen beim Import. Ergo überlege ich ob ich die Funktion UBX-CFG-XXX nutze, es ab zu schalten, da die auch funktionierte im Test bei u-center. Der Stromverbrauch geht dann extrem zurück auf ca 17ma. (kann ich mit leben) Vermutlich sendet es dann weiter bis der Satz raus ist. Und bei einem "Hotstart" ist es auch schnell wieder da, meldet sich mit GPTXT.... erneut zum Dienst. GPTXT werden von Google Earth überlesen, das wertet nur GGA aus oder GRMC. Oder aber ich leite die GPS Daten aus der UART durch den Ardu per SoftwareSerial (?) oder lausche zumindest an TX, ob sie zu Ende sind und schalte dann hart ab. Der Ardu hat ja sonst nichts zu tun, er dient nur als Monoflop für 5 Minuten. Kommt kein INT mehr schaltet er ab. Static Hold schaue ich mir mal an.... gucken ob das ggf. ausreicht. Leider im Arbeitszimmer keinen Empfang, müsste einen Besensteil mit dem GPS aus dem Fenster halten. :-( Denn wie sich das liest setzt das bloss ein Flag für den FIX auf invalid, es werden aber weiter die Nachrichten an die UART geschickt.
Ich glaube das an der seite van Ublox das nicht gemacht werden kan. Da muss du den logger intelligent machen, so das er nur logt wenn wirklich Bewegung erfasst werd. Mit Arduino IDE und eine SD karte ist das relatif einfach. Ich verwende eine ESP32 mit SD karte und eine Beitian BN220 gps (ahnlich an der Ublox M8n, aber billiger).
Jan H. schrieb: > Ich glaube das an der seite van Ublox das nicht gemacht werden kan. Da > muss du den logger intelligent machen, so das er nur logt wenn wirklich > Bewegung erfasst werd. Mit Arduino IDE und eine SD karte ist das relatif > einfach. Ich verwende eine ESP32 mit SD karte und eine Beitian BN220 gps > (ahnlich an der Ublox M8n, aber billiger). Ja, ich habe mir grad die Finger abgefroren als ich das Teil vom Balkon aus unter dem Dachfirst 5 Minuten in die Luft hielt. Es plappert immer weiter, muss es ja auch eigentlich. Ein Kopter will ja auch ständig Infos. Aber nach 3-4 Telegrammen frieren die Daten auch in den letzten Kommastellen ein wenn man Static Hold aktiviert und es gibt keine Punkt-Haufen mehr. Wohl viele Punkte aber die decken sich alle. Ich werde meine Lösung fertig bauen dem Modul den Strom zu klauen, wenn sich nichts mehr bewegt und dazu dient eben der ADXL345. openlog bleibt bestromt, damit nicht immer neue Dateien enstehen. Ist ja nur ein einziger Bastel-Prototyp, keine Serie. Mal ne Frage: Weisst du ob die Original Softserial gleichzeitig senden und empfangen kann? Falls ich mich entscheide den Arduino mit in den Datenweg ein zu schleifen.... denn der kann den ja ganz einfach abklemmen.
Haut nicht hin. Bereits unter dem Dach einer Tanke, wo GPS gestört ist hauen mir die m/s ab. Und ich kenne leider keine Einstellung, die schlechten GPS Empfang weg filtert. Da kommen immer Daten raus, auch wenn sie krumm und schief sind. Und deren Auswertung wird dann halt einem uC überlassen.
Christian J. schrieb: > Bewegt sich der Logger nicht mehr (Auto, Rucksack) soll das GPS > abgeschaltet werden damit diese "Punkte-Knubbel" vermieden werden. Abschalten ist nicht das Problem. Interessant ist, wie du die Sache nach abgeschaltetem GPS wieder vernünftig hoch fahren willst. Das GPS braucht 12.5 Minuten, um alle Almanachdaten im Empfänger zu aktualisieren. Die Datenfilterung wirst du wohl in eine Separate Softwareschicht deiner Applikation auslagern müssen. GPS Empfänger einfach abschalten ist keine Lösung.
Es gibt verschiedene parameter von diese gps die genau die Qualitat von signal angeben : Anzahl satelliten, und sAcc, hDop, vDop... Ich starte nur mit loggen wen da minimal Werte vorliegen : Anzahl Sat min 5, sAcc kleiner dan 1. Beim erste gps-fix (3 Sat) gibt den gps noch keine vernunftige Werte aus, sowohl pos. (Long, Lat) wie doppler speed kan sehr stark abweichen. Aber wie gesagt, diese Intelligenz muss in Logger eingebaut werden.
Jan H. schrieb: > Anzahl satelliten, und sAcc, hDop, vDop... Ich starte > nur mit loggen wen da minimal Werte vorliegen : Anzahl Sat min 5, Ist schonmal ein guter Ansatz, danke! Hoffe ich auch ohne Parser hin zu kriegen, den will ich vermeiden wegen "kompliziert". Gibt so viele, leider oft schlecht dokumentiert. Im Übrigen braucht ein GPS nur einmal die Woche (meist Montags) länger für den Fix (ca 5 Minuten), sonst ist es in 1 Minute betriebsbereit. Ich hatte das mal mit einem alten, was heute nicht mehr funktioniert: Diesem TomTom Ding, 14 Jahre alt. Per PC aktualisiert, 1 Woche lief es aber dann nicht mehr. Gleiches Spiel bis das Protokoll geändert wurde, dann konnte ich es wegwerfen.
Wolfgang schrieb: > Abschalten ist nicht das Problem. Interessant ist, wie du die Sache nach > abgeschaltetem GPS wieder vernünftig hoch fahren willst. Doch ist es! Du kannst das M8N per Software abschalten und danach auswählen ob es einen Hot Start macht, einen Warm Start oder einen Cold Start. Damit stellt man sicher, dass die Telegramme sauber bleiben auf der SD karte. Denn die wollen ja interpretiert werden. Und ich vermute gefühlt dass es da Grenzen gibt, was die Datenfehler angeht. Bisher schaue ich manuell einmal durch, lösche Müll und leere Datenfelder. Mühsam bei 8h Daten alle 5s... Du bzw. ich kann es auch per Hardware abschalten über den uC. Einfach DC/DC Enable = Low. Dann gibt es ganz sicher Datenfetzen auf der Karte. Es sei denn du lauscht an TX und wartest bis 1s nix mehr kam, schaltest dann ab. Der Warmstart dauert < 1 Minute, da das GPS noch die Satellitendaten drin hat vom Tage.
Moin, für die, die es noch interessiert hier die Lösung. Der Ardu Pro Mini wertet jetzt das ADXL345 aus auf kleinste Bewegungsänderungen. Da die eingebauten "Threshold" Funktionen nicht funktionierten mal kurz was eigenes programmiert. Die 9600 baud Daten des M8N gehen durch den Ardu über die Softserial von Stoffregen. Die kann nämlich Duplex, was die von Arduino nicht kann. Eine Auswertung der GGA und RMC erfolgt nicht. Es wird nur kurz geschaut ob die 3 Kürzel am Anfang jeder Sendung stehen (GPTXT wird ignoriert), ob der Fix gültig ist im Feld 6 der GGA und > 6 Satelliten da sind und dann durchgereicht, alles andere wird verworfen. hdop und pdop beachte ich nicht. Telegramme ohne gültigen Fix werden von google earth zwar gar nicht beachtet wie ich bemerkt habe aber sie verstopfen die Karte eben. Meldet der ADXL > 2 Minuten Stillstand wird das GPS stromlos geschaltet nachdem es 1s keinen Datenverkehr gab. Und auch der Ardu geht häufig schlafen. Bewegt sich wieder was startet das GPS wieder < 1min bis 1m30 und die Daten gehen zur Karte durch sobald sie einen gültigen Fix zeigen und genug SATs da sind. Meiner Meinung nach kann man so stromsparend loggen. Es mag sein, dass man die GPS Telegramme auch auswerten kann aber der Stromspar Mode funktioniert einfach nicht beim M8N. Er wird nicht akzeptiert, die Einstellung springt immer wieder zurück. Kann sein dass der Hardware Pin so verdrahtet ist, dass das nicht geht. Hatte auch viel Zirkus mit der Baudrate, die wollte zum Verrecken nicht auf 9600 gehen. Ob BRR, I2C EEPROm, Flash.. alles durchgeklickt zum Speichern. Irgendwann war es dann aber. Zu openlog.... netterweise waren alle Module aus der Bucht falsch programmiert. Falsche Taktrate. Ich muss 19200 einstellen, damit ich 9600 habe. 8 statt 16 Mhz verwendet beim "Hersteller". Liessen sich auch nicht neu flaschen, Bootloader wohl defekt. Das wars....
Halllooooo.... können wir uns mal abgleichen was den Code angeht?
1 | byte CheckValidFix(String *t) |
2 | {
|
3 | /* Müll filtern */
|
4 | if (!t->startsWith("$")) |
5 | return 0; |
6 | |
7 | /* Infotext filtern */
|
8 | if (t->startsWith("$GNTXT")) |
9 | return 0; |
10 | |
11 | /* Es werden nur gültige RMC und GGA Telegramme durchgelassen */
|
12 | String gpscmd = "$GNRMC"; /* RMC String untersuchen */ |
13 | if (t->startsWith(gpscmd)) { |
14 | /* Bei einem gültigen Telegramm steht "vorne" ein A, suchen ab Kommando*/
|
15 | int pos = t->indexOf("A",gpscmd.length()); |
16 | if ((pos > 0) && (pos < gpscmd.length()-3)) { |
17 | /* Es wurde ein A gefunden, prüfe ob es nicht die Prüfsumme war zb *6A */
|
18 | SoftUART.println(*t); |
19 | return 1; |
20 | }
|
21 | }
|
22 | |
23 | gpscmd = "$GNGGA"; /* GGA String untersuchen auf Anzahl Satelliten */ |
24 | if (t->startsWith(gpscmd)) { |
25 | char telegram[128]; |
26 | char *p = telegram; |
27 | t->toCharArray(telegram,t->length()); /* String in Buffer kopieren */ |
28 | /* Position des 6.ten Kommas anfahren */
|
29 | for (int i = 0; i < 7; i++) { |
30 | while (*(++p) != ','); |
31 | }
|
32 | int sats = atoi(++p); |
33 | if (sats >= 5) { |
34 | SoftUART.println(*t); |
35 | return 1; |
36 | }
|
37 | }
|
Derzeit habe ich ein GPS verwendet für eine "Rover", ist einen RC-auto die wegepunkte anfahrt. Siehe auch : http://wiki.robotmc.be/index.php/Snelle_RC-car_met_GPS Ich habe eine lib verwendet für die NMEA-frames (https://github.com/kosma/minmea), hat prima functioniert. Bei jeden boot sende ich bestimmte strings nach der neoM8n, sodas er nur die gewunschte telegrammen ausgibt. Auch die datarate (standard 1 Hz) kan so geandert werden, da verwende ich 5Hz oder 10Hz. Selbst den baudrate kan so geandert werden, mach ich aber nicht, 9600 baud reicht aus. Bei meine neue Project (gps-speedmessung für windsurfen) verwende ich jetzt das binair protocol von Ublox : ubx.navpvt (ca 100 bytes) erhalt alle wichtige dateien für mich. Auch hier verwende ich wieder eine lib für decodierung. Jetzt verwende ich Arduino mit eine ESP32 und ein Beitian BN220 gps. Das ist ein Ublox clone, billig und gut. Das ding muss folgendes machen : Daten loggen in ubx an 5Hz / 10Hz nach eine SD-carte Mittelwert max 2s, 10s, 30min, 60min, 100m, 200m, 1852m. Auslesung auf ein display, jetzt ein e-paper 2.2 inch. Webserver, so das die SD karte wireless ausgelesen werden kan. Und ja, das ganse muss auch noch wasserdicht werden....
Jan H. schrieb: > Bei jeden > boot sende ich bestimmte strings nach der neoM8n, sodas er nur die > gewunschte telegrammen ausgibt. Auch die datarate (standard 1 Hz) Inzwischen bin ich auch sowas wie Experte was die Dinger angeht. Die Beitian funktionieren genauso gut wie die ublox und verbrauchen sogar noch deutlich weniger Strom. ublox - 50-67ma, beitian 280 = 25-40 mA. Dass die ganz zufällig mit u-center eingestellt werden können dürfte wohl eher kein Zufall sein. Nur die Einschaltmeldung haben sie sicg geknffen, da auch noch ublox rein zu schreiben. Ansonsten eine 1:1 Kopie, selbst UFG-CMD haben sie übernommen. Das U steht ja für Ublox. Aber... die Bn-280N resetten sich ständig, wenn man unplausible Werte einstellt. zb ein Power Mode "Aggressive 1Hz" und eine Update Rate von 5s. Das mögen sie nicht. NMEA Parser.. naja, fix für RMC selbst geschrieben, man ersetze alle "," durch "0" und schon hat man eine Reihe Strings, die man mit strtok wandeln kann. Mehr als RMC braucht man eh nicht, da ist das A/V Flag das man auch noch einstellen kann wann es "ungültig" anzeigt. Ohne die sind diese "Punkte-Knubbel" aber unvermeidlich. Im Stand zicken die Koords gerne auch mal 20-25m rund um einen Punkt herum. 8h auf dem Parkplatz haben da einen echten Wust erzeugt, kreuz und quer ums Auto und die Geschwindigkeit wird teilsweise mit 800m/s ausgegeben, also heftig. Bei Laufen im Schnee etc also unter 1m/s wird es aber kritisch, da liegt die Grenze wo der Position Hold Threshold noch wirksam ist. Für Langzeit Logging ist ein Abschalten bei Stillstand unumgänglich und ein zusätzlicher Sensor (ADXL345) für Bewegung. Dann kriegt man das Ganze unter 2-3mA Ruhestrom.
Christian J. schrieb: > Gleiches Spiel bis das Protokoll geändert wurde, dann > konnte ich es wegwerfen. Welches Protokoll wurde geändert? Das Problem tritt nicht zufällig seit dem 7. April 2019 auf?
Wolfgang schrieb: > Welches Protokoll wurde geändert? > Das Problem tritt nicht zufällig seit dem 7. April 2019 auf? Doch... da warf ich mein schönes Tomtom One nach 10 Jahren weg, weil dessen Hardware nicht mehr mit dem neuen Format kompatibel war. Da lief wohl ein Zeit Zähler zurück auf 0 nach 20 Jahren. War ein tolles Teilchen. TomTom hat das auch bestätigt, dass es keinen Workaround gäbe bzw. sie keinen mehr erstellen werden, 2016 lief der Support bereits aus.
Christian J. schrieb: > Doch... da warf ich mein schönes Tomtom One nach 10 Jahren weg, weil > dessen Hardware nicht mehr mit dem neuen Format kompatibel war. An irgend einem Format hat sich überhaupt nichts geändert. Da hatte TomTom schlicht und einfach ein schlampig programmiertes GPS Modul in seiner Kiste drin. Dass der Wochenzähler nur 10 Bit besitzt und deshalb von Zählerstand 1023 auf 0 springt und die Wochen wieder bei 0 anfängt zu zählen, steht seit Anbeginn in der GPS-Spezifikation drin. https://de.wikipedia.org/wiki/GPS-Woche
Ich habe einen kleinen Minilogger gebaut, der nur stur mitschreibt. Darin werkelt jetzt ein Beitian BN-280 Modul. Nur meldet sich das Ding rotzfrech beim Einschalten mit $GNTXT ... ublox-ag.com ..... usw. Das Ding lässt sich auch komplett mit u-center einstellen. Sind das illegale Klone? Funktionieren tun sie jedenfalls sehr gut, schlucken weniger Strom als die ubloxe...
Christian J. schrieb: > Funktionieren tun sie jedenfalls sehr gut, > schlucken weniger Strom als die ubloxe Außer einem Multimeter hast du doch gar kein Equipment um die Module zu charakterisieren. Nur weil da kontinuierlich Datagramme rauskommen, heißt das noch lange nicht, das die Daten valide sind.
Christian J. schrieb: > Sind das illegale Klone? Den M8030 Chip kann man kaufen(wenn man genug bestell). Ohne guten TCXO ist er aber wohl nicht so gut wie ein NEO M8N
Sehr interessant! Beim Versuch die zurückgelegte Fahrstrecke meines Autos zu berechnen, ohne dabei irgendwelche Geo-Koordinaten zu verwenden bin ich auf die Idee gekommen, die GPS Geschwindigkeit, die in Knoten angegeben wird auf 1s zu takten und daraus eine Integration / Summierung der Meter/1s zu machen. Alternativ ginge das natürlich über eine genügend feine Rasterung des Lat/Long-Grids auf den kleinstmöglichen Abstand zweier Punkte nach Pythagroas. Die GPS Geschwindigkeit wurde durch einen Blitzer mit Bussgeldbescheid überprüft, die ist auf den Kilometer genau! Geblitzt mit 56km/h, 3 Abzug, also 59 und exakt 59 zeigte auch das Logfile für den Standort des Blitzers an. 15 Euro für die Stadtkasse :-) Bei exakter Einstellung des Timers auf 1.0000s und Verwendung von double für die Geschwindigkeit, die ja durch 3600 geteilt werden muss ergibt sich auf 50 gefahrene Kilometer über Landstraße eine Abweichung von nur 1.5km !!! Ich bin absolut erstaunt, da mir natürlich keine Map zugrunde liegt anhand derer man das berechnen könnte, wie google maps und Navis es tun. Sagenhaft was dieses kleine Maschinchen für 2,50 Euro leisten kann. Bluepill rulez :-)
Christian J. schrieb: > Alternativ ginge das natürlich über eine genügend feine Rasterung des > Lat/Long-Grids auf den kleinstmöglichen Abstand zweier Punkte nach > Pythagroas. Je kleiner der Abstand der Punkt ist, um so mehr wird die Änderung der Werte für Lat/Lon durch Messfehler (Rauschen) und Filteralgorithmen bestimmt. Ein gefundenes Korn beweist noch nicht, dass alles voller Futter liegt ;-)
Wolfgang schrieb: > Ein gefundenes Korn beweist noch nicht, dass alles voller > Futter liegt ;-) Auf 220km heute Tacho: 220,9 GPS: 219,5 Grumpf... das sind 1.1km. Werden wir noch ppm weise nachtrimmen müssen über die Tastrate der Timer. Werde erstmal 1/1000s dazu geben :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.