Grafisches Arduino-GPS mit OSB

Hallo zusammen,

ich spiele seit längerem mit dem Gedanken, mir für meine Outdooraktititäten selbst ein GPS mit Kartenanzeige zu bauen - ja richtig, bauen. ,)

Ich bin bei der Recherche auf die OSB und schlussendlich auf diesem Topic gelandet:
https://forum.openstreetmap.org/viewtopic.php?id=55925
Ich finde die Projektidee sehr gut, leider hat der Autor wohl bei der ganzen Diskusion um die Sinnhaftigkeit des Konzeptes die Lust daran verloren … Hätte ich ehrlichgesagt auch!
Nichts desto trotz würde ich gerne hier anknüpfen und mein Vorhaben als Open Source Projekt mit euch teilen.


Hintergrund:

Ich studiere Elektrotechnik und vertiefe meine Kenntnisse gerne durch private Projekte. Außerdem bin ich hin und wieder auf größeren Airsoft-Events unterwegs (davon kann jetzt jeder halten, was er mag).
Hierbei bin ich bei mehreren Events speziell im europäischen Ausland Kontakt mit dem “Personal Eye System” in Kontakt gekommen, einer Android-App welche für taktische Anwendungen die Funktion des eigenen GPS-Trackings auf einer (taktischen) Karte mit den Positionen anderer (verbündeter) Einheiten via mobilem Internet verbindet.
Da die angesprochenen Events meistens mitten in der Wildnis ohne ordentlichen Handyempfang und Zugang zu Stromversorgung statt finden und einem Handy bei häufiger längerer Benutzung des Displays schnell die Puste ausgeht, bin ich auf die Idee gekommen, mir auf Basis von Internet-Karten einen eigenen GPS-Tracker mit Anzeige zu bauen. Bei der Recherche hierzu bin ich dann auf OSM gestoßen.


Vorraussetzungen:

Die Hauptfunktion des Gerätes soll die Ortung der eigenen GPS-Position sein, welche dann auf dem Display auf der Karte angezeigt werden soll; die Karte soll entsprechend verschoben werden.
Die Größe des Gerätes ist im ersten Moment unkritisch, wichtig sind Einsatzverfügbarkeit (durch austauschbare 2S-LiPo), guter Empfang und gute Bedienbarkeit.
Da ich ein 5" Touch TFT für Arduino Mega / Due mit SD-Slot und einen Due liegen habe, habe ich ein Ultimate GPS Breakout von Adafruit bestellt und werde während der Masterarbeit ab April mit der Umsetzung anfangen.
Zusätzlich möchte ich als Herausforderung für mich einen Strahlungsdetektor auf Basis einer SBM-20 und einer Einwegkamera einbauen.(http://opengeiger.de/ → “Schwäbischer Flash Geiger”)


Das Systemkonzept sieht bisher so aus:

  • Arduino Due (SAM3X8E ARM Cortex M3, 32bit, 84MHz, 3V3) als CPU (je nach Anwendung im Low Power Mode)
  • Sainsmart 101-50-144 5" Touch TFT LCD 800x400 mit SD-Slot
  • Adafuit Ultimate GPS Breakout
  • 2S-LiPo-Akku
  • SBM-20 mit Flash-Hochspannungsquelle

Ich habe noch einen zweiten SD-Karten-Breakout zu Hause, der für die Nutzung als Logger integriert werden kann.

Außerdem sollen optional weitere Sensoren via I²C angeschlossen und integriert werden können wie beispielsweise Beschleunigungs- und Lagesensorik, Barometer, Thermometer, …


Ich würde mich sehr über KONSTRUKTIVE Kritik und Anregungen freuen, vielleicht hat ja der eine oder andere auch Lust auf solch ein Projekt.

Um Diskusionen über die Sinnhaftigkeit des Eigenbaus vorzubeugen:
Dieses Projekt dient in erster Linie meinem Selbststudium. Ich bin mir bewusst, das man ähnliche Geräte kaufen kann und dass es andere Möglichkeiten gibt, das Projektziel umzusetzen; das möchte ich aber nicht :slight_smile:

Grüße

Psykes

Habe mich selbst schon mit Arduinos beschäftigt, bin aber nicht so tief in der Materie als das ich hier als Programmierratgeber taugen kann.

Meine Erfahrung ist Erstens, das dem Arduino gerne die Puste ausgeht. Hier wäre erstmal zu klären ob der eine längere Sitzung überhaupt aushält. Bedenke, mit Track und sonstigen Daten ist einiges zu puffern, ausserdem ist die SD Schnittstelle gerne mal arg beschränkt und langsam. Es gibt andere Boards mit deutlich mehr Power, ggfs. könntest du auch einen reinen Tragger bauen und ein zweiter µc übernimmt die Anzeige.
Mit grafischer Programmierung kenne ich mich nicht wirklich bei Arduino nicht aus, ich hatte mal, berufsbedingt, eine Schnittstelle zu qt gebaut und genutzt, das war aber nicht meine Welt. Auch nicht sonderlich ertragsreich.

Die I²C Schnittstelle ist kein Ding, das geht mit google Hilfe recht simpel. Da sind die Studis immer ganz enttäuscht wenn wir davon nicht beeindruckt sind wenn Sie sich bei uns vorstellen (Sondermaschinenbauer, die Studis kommen immer wegen Industrie 4.0 vorbei und sind ganz enttäuscht wenn ihr 15€ Arduino nicht alle Probleme löst…)

Auch wenn es “industrietaugliche” Sachen gibt, dein Gerät sollte nachher IP67 abkönnen, da es mal regnen kann oder mal eine Pfütze Anziehungskräfte entwickelt. Dies würde ich nach der “HArdwareauslegung” als zweites angehen.

Guten Morgen,

erstmal vielen Dank für deine Rückmeldung! :slight_smile:

Ja, das mit den Arduinos ist so’ne Sache:
Die meisten unter dem Namen verbreiteten und verwendeten Boards sind ja die ATmega-Arduinos. Diese 16MHz/8bit-Microprozessoren sind nicht die schnellsten, da gebe ich dir absolut recht.
Tatsächlich sind allerdings mit dem Arduino Due und dem Arduino Zero schon seit längerem 32bit ARM Cortex Prozessoren mit 84MHz bzw. 48MHz im Arduino-Formfaktor verfügbar, welche auch von der Arduino IDE unterstützt werden.
Diese Serie wurde wohl noch nicht zu lange durch die Boards der MKR Serie erweitert welche einen neuen Formfaktor einführen, dabei aber out of the box noch über weitere Kommunikationsperipherie verfügen.

Da ich wie im ersten Post angesprochen den Arduino Due verwenden möchte glaube ich tatsächlich weniger, dass die Rechenleistung für dieses Projekt kritisch sein sollte da dieser Chip doch relativ viel Power hat.
Zudem möchte ich die Software gerne mit freeRTOS implementieren, also einem Echtzeit-Betriebssystem. Dadurch können die verschiedenen Aufgaben priorisiert und unabhängig voneinander zu festen Zeitpunkten bearbeitet werden.
Hierfür gibt es zum einen eine Portierung für den Due in der Arduino IDE, zum anderen habe ich im letzten Semester schon auf einem Cortex M4 in der Hochschule damit gearbeitet.
(Hier ist zudem glaube ich der Thread-Titel etwas unklar: Ich möchte das System keineswegs grafisch Programmieren sondern eine grafische Anzeige der aktuellen Position und der Umgebung ähnlich wie bei einem Navigations-System erreichen.)

Alternativ könnte man an dieser Stelle auch einen ESP8266 nutzen, allerdings brauche ich persönlich zum einen kein WLAN und zum anderen hat dieser keine native I²C-Schnittstelle.

Jetzt zu diesem Thema: Mir ist absolut klar, dass I²C speziell auf Boards wie dem Arduino absolut trivial zu nutzen ist, das habe ich im Studium wie auch privat schon ausgiebig getan;
warum ich den Bus angesprochen habe ist eben diese einfache Implementierung und die große Zahl an günstig verfügbaren Sensoren (incl. der zugehörigen Librarys).
Der Gedanke hierbei war wie auch in dem anderen Thread die frei beliebige Skalierung und Ausstattung des Systems zum loggen verschiedenster Parameter ohne aufwändige Soft- und Hardware für kleines Geld.

Gruß

Psykes

Die GPS Module die ich benutzt hatte. konnte man alle über die serielle Schnittstelle ansprechen, da wäre mir I2C egal. Wobei mir auch noch kein ESP8266 Board ohne I2C untergekommen ist. Die Möglichkeiten Grafiken von einem Arduino auf einem Display darzustellen, sind meiner Erfahrung nach ziemlich begrenzt - geht zwar aber sieht nicht schön aus. Hast Du mal über einen Pi Zero nachgedacht? Ich habe zufällig einen hier mit einem GPS Hat drauf :slight_smile: Mit einem Arduino wirst Du die in Deinem ersten Post angesprochene Anforderung “auf Basis von Internet-Karten einen eigenen GPS-Tracker mit Anzeige”, also eine Kartendarstellung, eher nicht realisieren können.

Hi,
in der tat kenne ich nur die 16Mhz Modelle, die sind nicht pralle. Ich merke aber das du hier im Detail besser informiert bist wie ich.Von daher gehe ich davon aus, das du mit Sicherheit schon die ein oder andere Überschlagsrechnung für die Berechnung eines Bildes gemacht hast. Letztendlich wird nur der Versuch klug machen!
Meine Erfahrungen, insbesondere mit den SD Karten sind ziemlich enttäuschend. Ich wäre echt gespannt hier nachher ein Ergebnis zu sehen!

Aber mal ganz “doof” gefragt:
Im Endefffekt soll aussehen wie auf einem “Garmin”?

Schönen Abend zusammen,

@SunCobalt:
Das Adafruit Ultimate GPS wird auch seriell angeschlossen, die I²C-Schnittstelle ist aber da, deshalb könnte man die Nutzung von Sensoren zum loggen von anderen Daten ja einfach mitnehmen.
Laut Wikipedia ist im ESP8266 die I²C-Schnittstelle nur softwareseitig implementiert und auch im Breakout von dem ESP-12E den ich habe finde ich keine I²C-Pins. Es kann jetzt schon sein, dass die nicht fest geroutet sind; tatsächlich habe ich mich mit dem Chip noch nicht wirklich auseinandergesetzt.
Ein Raspberry wäre auf jeden Fall die Alternative zum Arduino Due, wenn es tatsächlich an der Rechenleistung oder dem Speicher scheitern sollte. Allerdings habe ich mit den Raspberrys bisher noch nicht viel Kontakt gehabt und würde es jetzt erstmal gerne mit dem Due versuchen. Den habe ich jetzt einfach hier und die Hardwarekomponenten können mit beiden Systemen eingesetzt werden.

@osm_Ralef:
Tatsächlich werden die stärkeren Versionen der Arduino-Familie wesentlich seltener für DIY-Projekte eingesetzt, deshalb sind die auch nicht wirklich bekannt. Allerdings ist der Due als Nachbau nur unwesentlich teurer als der Mega, weshalb ich das wirklich schade finde.
Das mit den SD-Karten ist ein Thema für sich, das weiß ich. Ich hatte leider noch nicht die Zeit mich in das OSM-Format genauer einzulesen, deshalb habe ich auch noch keinen Überblick darüber, wie viele Daten wirklich gelesen und im Arbeitsspeicher vorgehalten werden müssen. Deshalb ist die Abschätzung, wie viel Rechenaufwand hinter einem Bild steckt auch noch sehr vage.

Und auf deine “doofe” Frage: Ja, im Endeffekt soll das aussehen wie ein “Garmin”, nur eben als Open-Source-Plattform.