SportTracker

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

von Ralf Hochhausen

Einleitung

Beim SportTracker Projekt geht es darum, einen GPS-Tracker zu bauen, der noch ein paar erweiterte Funktionen für ein Lauftaining bietet. Es soll also etwas ähnliches wie ein Garmin Forerunner dabei herauskommen (wahrscheinlich nicht ganz so klein aber dafür selbstgemacht ;-)). Darüber hinaus ist das Projekt eine Spielwiese um verschiedene Dinge mit dem STM32 Controller auszuprobieren:

  • Erste Erfahrungen mit einem RTOS (in meinem Fall µC/OS II)
  • Speichern von Daten auf SD-Karte mit FAT Dateisystem
  • Ansteuerung von TFT-Displays
  • Auswertung von GPS-Daten
  • Batteriebetrieb & Low Power Modes (endlich mal wieder Hardware entwickeln :-))

Als Features habe ich mir die folgenden vorgestellt:

  • Einfache GPS-Tracker Funktion
    • Logging der Daten auf SD-Karte im GPX-Format
  • GPS-Maus Funktion
    • NMEA Daten werden einfach über einen UART wieder ausgegeben
  • Trainingsunterstüzung für
    • Bahntraining
    • Tempoläufe
    • Lange Läufe
    • virtuellen Laufpartner
    • Speichern von Trainingsprofilen auf SD-Karte
    • ...
  • Pulsmessfunktion
    • Alarmfunktion
    • Anzeige und Tracking
  • ...

Software

Aktuell läuft die Software in einer Crossworks for ARM Umgebung ohne Makefile. Ziel ist es, auf kurz oder lang auf ein Makefile umzusteigen und dann z.B. mit Yagarto GCC weiter zu arbeiten.

Die STM32 Standard Peripheral Library wird aktuell bis auf wenige Funktionen (SDIO Interface) nicht verwendet. Hintergrund ist weniger es besser machen zu wollen als den Controller wirklich im Detail zu verstehen zu lernen. Über kurz oder lang soll diese Library komplett entfallen.

Die Software ist noch sehr stark zusammengestrickt, d.h. im Moment läuft alles noch über einen Debugger und es kann nichts über Benutzertasten gesteuert werden. Die folgenden Funktionen sind schon grob erstellt:

  • GPS NMEA Daten einlesen und parsen
  • Ansteuerung einer SD,Karte über SDIO,Interface mit FAT (FATFs)
  • Speichern der Position in GPX-Datei
  • Entprellen von Tasten

Hardware

Im Moment läuft alles noch auf einem Keil Starterkit mit STM32F103ZE Controller. D.h. ein Schaltplan mit Layout ist noch nicht erstellt.

Controller Pinning

Der Controller des SportTrackers ist aktuell wie folgt beschaltet:

Pin Nr. Pin Port Config Funktion
70 PB11 USART3 GPS Receiver NMEA Dateneingang
73 PB12 GPIO LED Output: GPS Receiver Position fixed Status
74 PB13 GPIO LED Output: Tracking aktiv Status
76 PB15 GPIO LED Output: Sign of Life (Blinkende LED)
98 PC8 SDIO Micro SD Card: D0
99 PC9 SDIO Micro SD Card: D1
111 PC10 SDIO Micro SD Card: D2
112 PC11 SDIO Micro SD Card: D3
113 PC12 SDIO Micro SD Card: CLK
7 PC13 GPIO Taster Input: Lap/Reset
116 PD2 SDIO Micro SD Card: CMD
117 PD3 GPIO Joystick Input: Down
92 PG7 GPIO Joystick Input: Select
93 PG8 GPIO Taster Input: Track Start/Stop
128 PG13 GPIO Joystick Input: Right
129 PG14 GPIO Joystick Input: Left
132 PG15 GPIO Joystick Input: Up

(Das Pinout entspricht natürlich im Moment der Vorgabe des Demo Boards)

ToDo

  • Software
    • Softwarearchitektur entwerfen
    • Alle Einzelfunktionen sinnvoll verknüpfen
    • Sportfunktionen entwickeln
    • Pulsmesser
      • Woher einen Sensor nehmen???? => Watterott kann im Moment nicht liefern
    • MMI entwickeln
      • Tastenauswertung => Statemachine
        • 09.09.2012: Tracker Steuerung ist implementiert
      • Display-Ansteuerung => Menüsystem
    • Uhr mit Kalender entwickeln
    • Fehlerhandling
  • Hardware
    • Netzteil für Batteriebetrieb entwickeln
    • USB Ladefunktion entwickeln
    • Schaltplan und Layout in Eagle erstellen

Downloads

Den jeweils aktuellen Sourcecode lade ich immer auf meine Webseite:

www.ralf-hochhausen.de

Siehe auch

History

06.09.2012: Version 0.6 ist online:

  • Start/Stop GPX logging über Taster (aktuell nur ein Logfile möglich)

09.09.2012: Version 0.7 ist online:

  • Aufnahme von bis zu 10 Tracks pro Tag (max. 10 aufgrund des Dateinamens)
  • Aktueller Track wird fortgesetzt bis zum nächsten Reset
  • Einfügen von Track Segmenten