SportTracker
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
- Tastenauswertung => Statemachine
- 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:
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