Anfänger will GPS Logger bauen

Hallo,

Ich hab kaum Ahnung von Elektronik. Ich hab bislang auch nur mit Raspberry Pi's rumgespielt. Ich wollte mir mal was bauen das GPS loggt. Das klappte mit dem Raspberry eigentlich ganz gut. Aber das ganze ist mir dann doch etwas viel Overkill für so eine relativ simple Anwendung. Noch dazu ist es doch etwas klobig, und mit meinem 20.000 mAh USB Powertank hält das ganze vielleicht sowas wie 15 Stunden. Ich würde das ganz gerne relativ mobil haben wollen da ich es sowohl im Auto, also auch im Flugzeug mitführen will.
Also dachte ich nun an den Arduino ... aber welchen?

Ist der Micro, oder gar der Nano zu klein für sowas? Was ich will:
GPS Modul, MicroSD auf die die Tracks gespeichert werden. Eine Power LED, eine GPS FIX LED (das ist wohl bei dem Ultimate GPS Modul dabei), eine LED die immer anzeigt wenn ein Track gespeichert wurde und einen Schalter zum an- bzw. aus zu schalten. Mehr will ich nicht, mehr brauch ich nicht.

Reicht dafür der Micro? Wie gesagt, ich würde das gerne relativ kompakt halten wollen.

Welches GPS Modul könnt ihr so empfehlen? Ich brauche nicht unbedingt 10Hz Aktualisierungsrate. Wenn es nur 1 Hz sind aber die Genauigkeit, bzw. die Empfindlichkeit besser ist, finde ich das sogar besser. Aber einen Datenpunkt pro Sekunde zu speichern fände ich recht gut.

Mir fallen jetzt auf Anhieb auch noch viel mehr Fragen an, aber die kann ich auch stellen wenn ich erst an dem Punkt angekommen bin an dem das wichtig ist.

Was ich mich aber jetzt schon frage: Wie hoch ist da so der Stromverbrauch? Der Raspberry zieht ja sowas wie 700mA, braucht der Arduino (mit GPS Modul) weniger? Wäre gut :slight_smile:

Das wär es erstmal :slight_smile:
Danke.

Ardarp:
Hallo,

Ich hab kaum Ahnung von Elektronik. Ich hab bislang auch nur mit Raspberry Pi's rumgespielt. Ich wollte mir mal was bauen das GPS loggt. Das klappte mit dem Raspberry eigentlich ganz gut. Aber das ganze ist mir dann doch etwas viel Overkill für so eine relativ simple Anwendung.

Reicht für sowas kein Smartphone?

Ardarp:
Noch dazu ist es doch etwas klobig, und mit meinem 20.000 mAh USB Powertank hält das ganze vielleicht sowas wie 15 Stunden. Ich würde das ganz gerne relativ mobil haben wollen da ich es sowohl im Auto, also auch im Flugzeug mitführen will.

RaspberryPi ist nicht für den mobilen Einsatz geeignet, auch wenn das viele gerne machen würden. Aber ~500mA Stromverbrauch sind für einen Akku recht viel, wen dieser lange halten soll. Im Flugzeug könntest du große vermutlich Probleme bekommen. -> Für die Kontrolleure ein ungeprüftes und vermutlich nicht identifizierbares Gerät -> Fernzünder :kissing:

Ardarp:
Also dachte ich nun an den Arduino ... aber welchen?

Machbar ist das erstmal eigentlich mit jedem Arduino. Aber in Hinsicht auf dem Stromverbrauch wäre ein Pro Mini ganz gut. (USB Adapter mitbestellen!)

Ardarp:
Ist der Micro, oder gar der Nano zu klein für sowas? Was ich will:
GPS Modul, MicroSD auf die die Tracks gespeichert werden. Eine Power LED, eine GPS FIX LED (das ist wohl bei dem Ultimate GPS Modul dabei), eine LED die immer anzeigt wenn ein Track gespeichert wurde und einen Schalter zum an- bzw. aus zu schalten. Mehr will ich nicht, mehr brauch ich nicht.

Reicht dafür der Micro? Wie gesagt, ich würde das gerne relativ kompakt halten wollen.

Ja

Ardarp:
Welches GPS Modul könnt ihr so empfehlen? Ich brauche nicht unbedingt 10Hz Aktualisierungsrate. Wenn es nur 1 Hz sind aber die Genauigkeit, bzw. die Empfindlichkeit besser ist, finde ich das sogar besser. Aber einen Datenpunkt pro Sekunde zu speichern fände ich recht gut.

Mir fallen jetzt auf Anhieb auch noch viel mehr Fragen an, aber die kann ich auch stellen wenn ich erst an dem Punkt angekommen bin an dem das wichtig ist.

Was ich mich aber jetzt schon frage: Wie hoch ist da so der Stromverbrauch? Der Raspberry zieht ja sowas wie 700mA, braucht der Arduino (mit GPS Modul) weniger? Wäre gut :slight_smile:

Das wär es erstmal :slight_smile:
Danke.

Empfehlen kann ich keins. Habe keine GPS Module im Einsatz. Schau dir mal die Threads von Rudirabbit an. Der bastelt da mit solchen Teilen in Verbindung mit einem ferngesteuerten Auto.

Wofür muss man jede Sekunde die GPS Kordinaten loggen? GPS ist keinesfalls wirklich stromsparend.

Der Arduino braucht, wenn man ihn richtig nutzt, fast keinen Strom. <40mA
Jedoch ist der Verbrauch stark abhängig vom GPS Modul.

Schau dir mal die Threads von Rudirabbit an. Der bastelt da mit solchen Teilen in Verbindung mit einem ferngesteuerten Auto.

Also ich bin das nicht.

Wie schon angeprochen, diese GPS Module ziehen alle relativ viel Strom.
Die Stromversorgung ist das Hauptproblem.

Denkbar wäre ein Lipoakku mit Solarzelle und entsprechendem Laderegler.
Je nach Wetterlage könnte man damit die Laufzeit verlängern.

Ardarp:
Ich hab kaum Ahnung von Elektronik.
...
Was ich mich aber jetzt schon frage: Wie hoch ist da so der Stromverbrauch?

Der Stromverbrauch wäre auf jeden Fall deutlich niedriger als beim Raspberry und die Masse des Stroms würde nicht vom Arduino verbraucht werden. Den dicksten Strom zieht die SD-Karte (nur bei Schreibvorgängen, also je mehr Du schreibst, desto mehr Strom braucht es), und vom GPS-Modul, das alleine beim GPS-Tracking ständig 40 mA verbrauchen kann. Wobei das GPS-Modul bei hoher Datenrate für GPS-Fixings mit 1 Position pro Sekunde mehr Strom zieht als in einem Eco-Mode (abhängig vom GPS-Modul), wo der Verbrauch des GPS-Moduls dann vielleicht bei 15 mA liegt.

Allerdings: Wenn Du so etwas aus Arduino und Standardmodulen zusammenbaust und hobbymäßig programmierst, wird sowohl die Baugröße als auch die Klobigkeit als als auch der Stromverbrauch ganz deutlich oberhalb dessen liegen, was handelsübliche "GPS Tracker" bieten, die es standardmäßig zu kaufen gibt.

sschultewolter:
Reicht für sowas kein Smartphone?

Prinzipiell schon. Aber ich hab bislang keine guten Apps für sowas gefunden, und der Smartphone Akku hält dann doch keine 5 Stunden durch. Und zumindest bei meinem ist es so, das ich immer das GPS Signal verliere wenn ich den Akku in der Hosentasche hab.

sschultewolter:
RaspberryPi ist nicht für den mobilen Einsatz geeignet, auch wenn das viele gerne machen würden. Aber ~500mA Stromverbrauch sind für einen Akku recht viel, wen dieser lange halten soll. Im Flugzeug könntest du große vermutlich Probleme bekommen. -> Für die Kontrolleure ein ungeprüftes und vermutlich nicht identifizierbares Gerät -> Fernzünder :kissing:

Mit Flugzeug meinte ich kein Verkehrsflugzeug. Da hatte ich es mal mit dem Handy probiert, aber in so einem Faradayischen Käfig kommen diese ganz schwachen GPS Signale eh nicht an :slight_smile:
Ich meinte das im "eigenen" Flugzeug. Ich mache gerade eine Pilotenlizenz und bin damit bald fertig, und da würde ich gerne meine Flüge tracken.

sschultewolter:
Wofür muss man jede Sekunde die GPS Kordinaten loggen?

Wenn ich bei >200 km/h im Flugzeug unterwegs bin, mach ich ja in einer Sekunde doch einen größeren Weg als in einem Auto bei 50 km/h. Daher will ich min. 1 Hz damit die Tracks dann "schön" sind.

jurs:
Den dicksten Strom zieht die SD-Karte (nur bei Schreibvorgängen, also je mehr Du schreibst, desto mehr Strom braucht es)

Kann man das denn anders lösen? Gibt es sowas wie internen Speicher der weniger strom verbraucht? Falls ja, dürfte aber sehr klein sein, oder? Den würde ich beim Loggen voll kriegen noch bevor der Akku leer ist.

jurs:
Allerdings: Wenn Du so etwas aus Arduino und Standardmodulen zusammenbaust und hobbymäßig programmierst, wird sowohl die Baugröße als auch die Klobigkeit als als auch der Stromverbrauch ganz deutlich oberhalb dessen liegen, was handelsübliche "GPS Tracker" bieten, die es standardmäßig zu kaufen gibt.

Ich habe ja die Hoffnung das es so günstiger ist, und außerdem macht sowas mehr spaß als einfach nur was kaufen was sofort funktioniert :slight_smile:

Ich hab ein Ublox Neo am Arduino Mega.
Das Ding läuft mit nem 1600er Akku (7.2V) rund drei bis vier Stunden. Allerdings hängen da noch ne ganze Menge mehr Geräte dran, unter anderem nen nicht eben stromsparendes Display.
Dafür schreib ich (derzeit) so gut wie nicht rum auf der SD-Karte.

Du könntest noch was sparen, wenn du, anstelle der lustigen LED`s eventuell nen kleines Oled-Display anschliesst. Die Dinger brauchen echt nicht nennenswert Strom, und nen paar Pünktchen blinken lassen können die auch. Zudem noch bisselwas anderes ausgeben, Batteriereserve oder so.

Ardarp:
Gibt es sowas wie internen Speicher der weniger strom verbraucht? Falls ja, dürfte aber sehr klein sein, oder?

Ja. Die Controller haben ein internes EEPROM. Das hat aber bei den kleinen Prozessoren nur 2kByte und ist nur begrenzt beschreibbar.

Es gibt externe Chips (EEPROM oder FRAM), aber die die angenehm zu handhaben sind (sowohl vom Speicher als auch der Gehäuseform) sind auch nicht groß. 1MBit = 1024kBit = 128 kByte gibt es in DIP4. Man kann mehrere an einen Bus anschließen, aber ob dir das reicht ist fraglich.

Ich würde an Deiner Stelle mal ganz grob von einem Stromverbrauch von ca. 80 mA Deines Gadgets ausgehen, davon ca. 40 mA für das GPS-Modul und nochmal dasselbe für Controller und SD-Modul.

Die Stromversorgung auslegen mußt Du aber für mindestens 400 mA, denn so eine SD-Karte kann locker mal über 300 mA beim Schreiben verbrauchen, allerdings dann nur während einer sehr kurzen Zeitspanne, während der tatsächlich geschrieben wird.

Wenn Du diese 80 mA z.B. von einem Akkupack 3AA Mignon Akkus über einen 5V-Step-Up Wandler bereitstellst, der aus der wechselnden Akkuspannung eine stabile 5V-Spannung macht, errechnet sich die mögliche Betriebsdauer ganz grob wie folgt:
Akkuspannung ca. 3
1.4V fallend bis auf 31.0V = im Schnitt 31.2V = 3.6 V
Mit einem StepUp-Wandler bei 70% Wirkungsgrad auf 5V gebracht zieht der Wandler aus dem Akku:
80mA*5V/3.6V/0.7 = ca. 160 mA

Bei einer angenommenen Akkukapazität von 2000 mAh entspricht das einer Circa-Betriebsdauer mit einem 3xAA Mignon-Akkupack von 2000 mAh / 160 mA = 12,5 Stunden.

Das dürfte hinzubekommen sein, z.B. mit einem Arduino Pro Mini Board, einem uBlox Neo-6 GPS, einem SD-Kartenmodul mit Pegelwandler, einem 5V-StepUp-Wandler und einem 3*AA Akkupack. Und einem entsprechenden Programm.

Das dürfte allerdings viel Bastelei und Programmierung für jemanden bedeuten.

Und das bei einem riesigen Angebot von GPS-Trackern mit unterschiedlichem Funktions- und Leistungsumfang, die man im Handel direkt als Fertiggerät erwerben kann.

@Jurs
Super wie du neue Leute motivierst es doch mit einem Arduino zu machen :smiley:

Klar, solche fertigen kann man überall kaufen, aber die sind eben fertig und nicht selber gemacht. Zumal mir gerade noch eingefallen ist das ich dann auch noch einen Beschleunigungssensor dran machen will :slight_smile:

Überleg es dir gut.
Du willst ein handliches Gerät mit wenig Stromverbrauch. Da ist jedes Extra eines zu viel. Um aus nem Beschleunigungssensor vernünftige (menschenlesbare) Werte zu bekommen, ist eine ganze Menge Rechenarbeit nötig- dann wird der Dino auf Vollast laufen.

Ich gehe mal einen Zwischenweg.

Hab mir jetzt einen Uno R3 bestellt. Dazu ein GPS Logger Shield. Das hat direkt das Ultimate GPS Modul und einen MicroSD Slot. So wie ich das verstehe muss ich die praktisch nur zusammenstecken und programmieren. Und dazu noch ein kleiner Beschleunigungssensor. Bin mal gespannt ob ich das hin kriege, aber ich bin guter Dinge :slight_smile:

Das Ultimate GPS wird übrigens von Adafruit gebaut und hat laut denen nur einen Verbrauch von 20mA.

@Ardarp: Hat so ein Sportflugzeug einen erlaubten Zugang zum Bordnetz ?

Hi rudirabbit,

Ja. Zumindest in dem Flugzeug in dem ich aktuell lerne (und später chartern werde) gibt es einen Zigarettenanzünder mit 12V. Ich glaube zumindest das es 12V sind, habs noch nie ausprobiert. Aber ich denke so ein Anzünderanschluss sollte doch standardmäßig 12V haben. Könnte also so einen KFZ USB Stecker anbringen und den Arduino darüber betreiben.
Allerdings würde mir dann eher etwas vorschweben das ich mobil betreiben kann, und bei Gelegenheit über solche Anschlüsse gleichzeitig laden kann. Ich peile eine maximale mobile Laufzeit von 24 Stunden an.

Hi,

Ich hab das Ultimate GPS Shield auf den Uno gesteckt und gelötet. Ich denke es funktioniert prinzipiell. Wenn ich das GPS auf Direct Seriel (oder so) stelle, dann krieg ich die NMEA daten im serial monitor angezeigt.

Dann bin ich im tutorial weiter gegangen, hab das GPS auf Soft Serial gestellt, dieses parsing sketch hoch geladen und wieder den serial monitor angemacht. Aber nun krieg ich nur schrott angezeigt ... nichts wirklich lesbares.

Nur ganz ganz viele ŷ zeichen ... und zwischendurch andere zeichen. Aber scheinbar nicht das was es ausgeben soll.

Weiss da jemand weiter? :slight_smile:

EDIT: Ok, habs. Musste im Terminal die Baud auf 115200 stellen. Jetzt krieg ich vernünftige ausgaben.

Hallo,

Ich nochmal. Alles funktioniert bislang ... fast.
Ich hab inzwischen den ADXL335 Beschleunigungssensor angeschlossen und prinzipiell funktioniert alles.

Der Sensor gibt 3 Werte aus. Eine Zahl für x,y und z. Ich wollte nun im Sketch den Betrag ausrechnen, denn das ist ja nichts weiter als ein 3D Vektor.
Also, wurzel aus x² + y² +z².
Entweder verstehe ich C nicht so ganz, oder irgendwas läuft da falsch, denn mit den Werten
x = 417
y = 342
z = 352

gibt es mir als Betrag 146.768 zurück, statt richtigerweise 644.016

Ich berechne das ganze mit

total = sqrt((x*x)+(y*y)+(z*z))
Serial.println(total, DEC)

Warum gibt es mir falsche Werte aus?

Der Datentyp von x, y und z hätte geholfen. Wenn das int ist hast du einen Überlauf. Sollte unsigned long sein.

Hallo Serenifly,

Ja, daran langs.
Die x,y,z variablen waren als int deklariert, und offenbar überschreiten die Zahlen beim Berechnen diese Grenzen für ein int.
Hätte nicht gedacht das es bei einer Berechnung schon probleme gibt. Dachte das Problem gibt es nur wenn man die Werte quasi in die Variable speichern will. Als double deklariert funktioniert alles problemlos.

Warum unbedingt unsinged long?

ok, double geht auch. Aber vor dem Ziehen der Wurzel sind es ja noch Integer und der UL Bereich sollte ausreichen. Geschmackssache.

Aber woher soll der Compiler wissen das er mit was größerem Rechnen muss? Der kennt das Ergebnis ja nicht. Wenn du zwei int miteinander verrechnest ist das Zwischenergebnis demnach auch int.

Ok, nächstes Problem:

Ich versuche erst nur mal die Werte abzuspeichern die entstehen wenn sich der Beschleunigungssensor nicht bewegt.
Ich hab mir den code fürs schreiben auf SD zusammen kopiert. Die Datei wird auf der SD Karte auch erstellt, aber die ist immer leer.

Da die Datei ja problemlos erstellt wird, denke ich mal das der code dafür hier nicht relevant ist.

Am Ende hab ich ein

logfile.write(total);
logfile.flush();

total ist hier noch vom typ double. Macht das ärger? Beim kompilieren gibt das zumindest keine Fehler.

Du musst Dateien mit close() abschließen. Sonst sind sie Schrott. flush() schreibt lediglich den 512 Byte Puffer im RAM auf die Karte. close() macht das mit.

Und dabei close() oder flush() NICHT nach jedem einzelnen Wert machen. Sonst wird das sehr langsam.