GPS-Tracker mit Calliope und Google Earth

Hallo,
als nützliche Anwendung für den Calliope mini würde ich mir gerne einen GPS-Tracker bauen. D.h. der Calliope ermittelt über ein NEO-6M-GPS-Modul (Grove A1 seriell) die GPS-Daten Long, Lat und Altitude und mittels eines SparkFun OpenLog-Moduls (Grove A0 I²C) werden dann diese 3er-Datensätze (als Zahlen) alle 15 Sek auf eine SD-Karte geschrieben.
Anschließend kann man diese Datenpakete dann mittels KML-Wrapper am PC in Google-Earth einlesen und in einer 3D-Karte anzeigen.

Vorhanden:

  • Die beiden Module NEO-6M und SparkFun Openlog (rot)
  • Calliope 2.0 mini
  • Die beiden makecode-Erweiterungen für die beiden Module

Was mir noch fehlt ist der makecode-Code zu diesem Projekt.
Hat vielleicht jemand schon mal einen GPS-Tracker und SD-Logger mit dem Calliope gebaut?
Ich bin kein Programmierer, baue aber gerne fertige Tutorials nach und erweiter diese ggf. bei Bedarf.

Freue mich über Feedbacks.
VG ULLI

Projekt ist fertig:

KML-Wrapper-Datei:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Style id="yellowPoly">
<LineStyle>
<color>7f00ffff</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style>
<Placemark><styleUrl>#yellowPoly</styleUrl>
<LineString>
<extrude>1</extrude>
<tesselate>1</tesselate>
<altitudeMode>absolute</altitudeMode>
<coordinates>



*------ Hier die GPS-Koordinaten eintragen --------*



</coordinates>
</LineString></Placemark>
 
</Document></kml>
1 „Gefällt mir“

Super Ulli!
Hatte leider keine Zeit dieses Wochenende. Probiere das mal auf meiner Laufstrecke aus.
Es dauert halt eine Weile bis er genug Satelliten gefunden hat. Ich glaube er benötigt drei.

Viel Spaß!

Hallo Michael, da wünsche ich dir viel Erfolg.
Laufen für die Wissenschaft :joy:

VG Ulli

1 „Gefällt mir“

Bei mir erscheinen so immer zwischen 5 und 8 Sats.
Dauert so max. 30 Sek.

Hallo Ulli,
hatte gestern noch die Daten für die .KML-datei für Google Earth eingebaut. Der Kopf wird automatisch geschrieben, für den Rest welcher nach den GPS-Daten kommt muss man auf Knopf A drücken. Hoffe es funktioniert so.

1 „Gefällt mir“

Hallo Michael, das wäre eine Alternative.
Ich hatte meinen Weg von einem alten Projekt von mir mit dem Arduino auf den Calliope übertragen.
Das Problem mit dem GPS ist leider immer noch die Ungenauigkeit. So habe ich es oft, dass trotz guter Satelliten-Zahl die Abweichung einige Meter betragen kann und auch der Wert für die Altitude nicht verlässlich ist. Da schwebt man oft über der Strasse.
Deshalb habe ich die Daten früher immer noch auf der SD-Karte bearbeitet und dann erst in Google Earth verwendet. Ich will ja ungern durch Häuser oder auf der falschen Strassenseite mit meinem Fahrrad fahren.

Trotzdem habe ich durch deine Version wieder etwas dazu gelernt. Es muss nur (das war mein Fehler) beim Speichern auf die SD-Karte die Reihenfolge noch getauscht werden.
Reihenfolge ist: Long,Lat,Alt . Sonst landet man im großen Ozean.
VG ULLI

Ich habe das jetzt mal nach gebaut. Die Matrix blinkt mit dem Such-Symbol.

Kann der Code erkennen, ob das GPS-Modul richtig angeschlossen ist und funktioniert?

Muss ich mit dem Laptop auf das freie Feld gehen oder kann ich auch im Haus feststellen, ob die Hardware und Software wenigstens funktioniert?

Wozu ist die Batterie auf dem GPS Modul, falls das eine Batterie ist?

Auf der Speicherkarte ist Daten.KML mit dem XML bis <coordinates> schon drauf und weitere LOG00086.TXT u.ä. mit Bruchstücken von XML.

Vielen Dank
Lutz

Leider funktioniert es überhaupt nicht. Wie kann ich feststellen, ob das GPS Modul überhaupt richtig angeschlossen ist und funktioniert (ohne Speicherkarte und Display -Erweiterung)? Dazu muss es erst mal noch keine Satelliten empfangen.

Hallo Lutz,

RX und CX müssen gekreuzt angeschlossen werden. Auf deinem Foto sieht das nicht so aus. Verdrehe mal gelb und weiss.

Den gesamten Aufbau würde ich zunächst an USB betreiben, optische Sicht der GPS Antenne zu mindestens 4 Satelliten muss gegeben sein. Am besten ans offene Fenster setzen.

Der GPS Sensor ist auch ein Stromsäufer, beim Schreiben der Daten auf die SD Karte gibt es ebenfalls einen kleinen Strom - Peak. Ob das ganze über längere Zeit an AAA Batterien läuft, bezweifle ich.

Für längere Missionen empfehle ich Lithium Batterien in der Größe AA. Und ggf. die Stromversorgung am Calliope vorbei, auch wenn die Module 3V haben. Die Spannungsregelung auf dem Calliope ist nicht unendlich Strom - belastbar. Ist zwar mit Grove Steckern nicht mehr ganz so schick, aber stabiler.

Wenn der GPS Sensor einen Fix hat, blinkt die blaue LED.

Gruß Raik

Hallo Raik,

danke, das hat mir geholfen.

Dass RX und TX gekreuzt werden müssen, ist mir technisch bewusst. Bei allen mir bekannten Modulen ist aber die Beschriftung so, dass gelb an beiden Seiten RX und weiß an beiden Seiten TX ist.

Also nach dem Verdrehen und Bauen eines längeren Kabels gibt es jetzt eine Kommunikation. Lange habe ich eine Stelle gesucht, wo ich 3 Satelliten hatte, da zeigt es aber noch keine Daten an. Und nachdem ich nur ein neues Programm übertragen habe, ohne was zu bewegen, sind es jetzt plötzlich 7 oder 8 Satelliten. An der Fensterscheibe.

Das Problem mit der Stromversorgung ist mir bestens bekannt und wurde hier schon ausgiebig diskutiert. Ich nehme eine Powerbank und USB Kabel. Der Stromverbrauch ist hier auch groß genug, dass die Powerbank nicht von alleine aus geht.

Die Satelliten-Uhrzeit habe ich schon gefunden.

Kann mir noch jemand verraten, wo ich genau die Daten hoch laden muss, damit eine Karte angezeigt wird?

Vielen Dank
Lutz

Warum kommt hier ein Fehler bei der Kompilierung?

Der Fehler kommt nicht,
wenn ich ‚Lese Anzahl der Satelliten‘ raus nehme (‚Lese Satelliten Uhrzeit‘ hat aber keine Wirkung.)
ODER
wenn ich ‚initialisiere Display‘ raus nehme
ODER
wenn ich ‚setze 4digit …‘ raus nehme
ODER
wenn ich über das Zahnrad den Speicher von 32 KB in 16 KB ändere. Dann kommt der Fehler aber auch, wenn das Programm etwas größer wird.

Programmiert mit Windows und Edge, dann auf dem iPad geladen kommt der Fehler auch.

Lutz

Hallo Lutz,

ich tippe mal auf „Programm zu groß“.

Sehen kannst Du den Fehler in der Browser-Konsole:

Fehler: pxt_modules/Grove/main.ts(1,1): error TS9200: program too big by 804 bytes!

In Firefox ist die Konsole unter „Weitere Werkzeuge / Werkzeuge für Webentwickler“ zu finden.
Wo etwas gleichwertiges in „Edge“ zu finden ist, weiss ich nicht.

Vorschlag: Gehe auf die Makecode V3, die Erweiterungen von mir sollten dort laufen.

Gruß Raik

Vielen Dank für die schnelle Antwort.

Mit der Speichergröße 16 KB und 32 KB hat das wohl nichts zu tun? Wenn ich von 32 KB auf 16 KB verkleinere, kommt der Fehler (vorerst) nicht. Da wird auch weniger ‚Hintergrund‘ mit rein kompiliert.

Sollte nicht eine neue MakeCode Version besser sein als die alte? Wo wirkt denn nun die Speichererweiterung? Ist das hier ein Bug, der zu reparieren ist? Oder ist das ein Feature, dass in der neuen Version mit 32 KB weniger Platz ist als in der alten?

Viele Grüße von Lutz

Hallo, GPS verlangt immer nach „Frischluft“ mindestens am Fenster. Mein Schreibtisch steht neben dem Fenster und da funkt es noch. Am Anfang dauert es etwas, bis die Satelliten gefunden werden. Dann speichert die Batterie auf dem GPS-Board die Koordinaten zwischen und es geht später schneller.
Für die Genauigkeit des GPS-Signals braucht es mindestens 5 Satelliten. Problem ist immer bei mir die ungenaue Höhendarstellung. Die wird dann besser. Aber Abweichungen von so 3-5 m muss man akzeptieren.

VG Ulli

Hallo, ich habe das ganze mit einem OLED aufgebaut. Die Stromversorgung mache ich über USB (Powerbank), da ich das alles auch im Freien z.B. Fahrrad benutze. Druckergehäuse wäre natürlich schöner.
VG

1 „Gefällt mir“

Wenn das GPS-Board richtig angeschlossen ist und ein GPS-Signal empfängt, blinkt dort eine rote LED.
Solange auf dem LED-Feld diese Bögen-Anzeige läuft, hat er noch kein Signal.

Ich habe beide Erweiterungen für NEO-6M ausprobiert:

beide hängen sich nach wenigen Minuten auf und liefern immer nur den letzten Wert, der sich nicht mehr ändert. Wenn man die Position abfragt, fällt das vielleicht nicht auf, die soll sich am Fenster ja nicht ändern. Die Anzahl der Satelliten hängt auch fest. Mich interessiert am meisten die Uhrzeit, die braucht nicht mehrere Satelliten und die Uhr bleibt hier stehen. Das fällt auf.

Je geringer die Zahl der Satelliten ist, desto länger läuft das Programm. Kurz nach dem Anschalten mit 0 bis 3 Satelliten wird die richtige Uhrzeit (-2 Stunden) angezeigt und die Uhr läuft. Wenn es dann 4 bis 7 Satelliten werden, bleibt die Uhr bald stehen. Auch die anderen Werte sind auf dem letzten Stand eingefroren.

Nach Reset am Calliope läuft die Uhr wieder. Wenn es aber 6 Satelliten sind, bleibt die Uhr vielleicht nach 1 Minute schon wieder stehen.

Ich habe Zusammenhänge mit anderen Erweiterungen vermutet und hier ein Beispiel mit nur der einen NOE-6M Erweiterung gebaut. Der Funk Empfänger empfängt zwar kontinuierlich die Daten, aber nachdem es eine Weile funktioniert hat kommen immer die selben Daten. Die Uhr ist stehen geblieben.

Es sieht wie ein Pufferüberlauf aus oder anderen Ressourcen, die nach kurzer Laufzeit aufgebraucht sind. Werden die Daten im Speicher gesammelt? Reicht der Speicher nicht? Kommen Unterprogramme nicht zurück?

Auf die Idee von 16KB auf 32KB umzuschalten bin ich auch gekommen. Am Problem ändert sich dadurch nichts. Allerdings bringt die 32KB Variante viel eher einen Compiler Fehler und landet dann gar nicht erst auf dem Calliope. Bei manchen Versuchen ist die 32KB Variante (auf Calliope 2.0) nach erfolgreicher Übertragung und kurzer Laufzeit abgestürzt, bei 16KB ist das nie passiert.

Ich habe mit Calliope 1.3 und 2.0 getestet und mit 16KB und 32KB. Die NEO-6M Erweiterung bleibt in jedem Fall früher oder später hängen. Am längsten lief die Uhr auf dem Fenster im Schlafzimmer, dort findet er nur 1 Satellit.

Stromversorgung war immer über das USB Kabel.

Ich wünsche mir, dass der Fehler gefunden und behoben wird.
Vielen Dank
Lutz