|
| 1 | + |
| 2 | +# GPS Fitness Tracker |
| 3 | +A fitness tracking device that monitors physical activity by counting steps and recording GPS-based workouts, providing real-time statistics and storing workout data. |
| 4 | +:::info |
| 5 | + |
| 6 | +**Author**: Maraloi Ioana \ |
| 7 | +**GitHub Project Link**: https://github.com/UPB-PMRust-Students/acs-project-2026-Ioana-Maraloi |
| 8 | + |
| 9 | +::: |
| 10 | + |
| 11 | +<!-- do not delete the \ after your name --> |
| 12 | + |
| 13 | +## Description |
| 14 | + |
| 15 | +This project implements a fitness tracking device using a microcontroller programmed in Rust. The system operates in two modes. In daily mode, it detects steps using accelerometer data, estimates distance and calories, and displays real-time information on a screen. In training mode, activated via a button, it uses GPS data to track position, compute distance and speed, and record the route. The recorded data is saved in GPX format for later analysis. |
| 16 | + |
| 17 | +## Motivation |
| 18 | + |
| 19 | +I chose this project because it combines several important aspects of embedded systems, including sensor data processing, GPS-based measurements, and real-time data display. It provides a good balance between hardware interaction and software implementation, while also covering topics such as data acquisition, processing, and storage in a practical context. |
| 20 | + |
| 21 | +## Architecture |
| 22 | + |
| 23 | +<!-- |
| 24 | +Add here the schematics with the architecture of your project. Make sure to include: |
| 25 | + - what are the main components (architecture components, not hardware components) |
| 26 | + - how they connect with each other --> |
| 27 | + |
| 28 | +The system is centered around a processing module running on the STM32 microcontroller. It receives data from the sensor, GPS, and control modules, processes it, then sends the results to the display and storage modules. |
| 29 | + |
| 30 | +Main architecture components: |
| 31 | +- **Control Module** – handles button input and mode switching |
| 32 | +- **Sensor Module** – provides motion data for step detection |
| 33 | +- **GPS Module** – provides position, speed, and time data |
| 34 | +- **Processing Module** – computes steps, distance, speed, calories, and workout state |
| 35 | +- **Display Module** – shows real-time activity information |
| 36 | +- **Storage Module** – saves workout data for later analysis |
| 37 | + |
| 38 | + |
| 39 | + |
| 40 | +## Log |
| 41 | + |
| 42 | +<!-- write your progress here every week --> |
| 43 | + |
| 44 | +### Week 5 - 11 May |
| 45 | + |
| 46 | +### Week 12 - 18 May |
| 47 | + |
| 48 | +### Week 19 - 25 May |
| 49 | + |
| 50 | +## Hardware |
| 51 | + |
| 52 | +The system is built around an STM32 Nucleo development board, which interfaces with multiple peripherals for sensing, display, and storage. |
| 53 | + |
| 54 | +An MPU6050 accelerometer module is used to detect motion and enable step counting. A NEO-6M GPS module provides location data for tracking distance, speed, and route information. |
| 55 | + |
| 56 | +A 2.4" display is used to present real-time data to the user, including activity statistics and system status. User input is handled through push buttons, allowing mode switching and interaction. |
| 57 | + |
| 58 | +Workout data is stored using a microSD card module, enabling later analysis. Additional components such as LEDs are used for status indication, while a breadboard, jumper wires, and resistors are used for prototyping and circuit connections. |
| 59 | + |
| 60 | +### Schematics |
| 61 | + |
| 62 | +Place your KiCAD or similar schematics here in SVG format. |
| 63 | + |
| 64 | +### Bill of Materials |
| 65 | + |
| 66 | +<!-- Fill out this table with all the hardware components that you might need. |
| 67 | +
|
| 68 | +The format is |
| 69 | +``` |
| 70 | +| [Device](link://to/device) | This is used ... | [price](link://to/store) | |
| 71 | +
|
| 72 | +``` |
| 73 | +
|
| 74 | +--> |
| 75 | + |
| 76 | +| Device | Usage | Price | |
| 77 | +|--------|--------|-------| |
| 78 | +| [STM32 Nucleo-U545RE-Q ](https://www.st.com/en/evaluation-tools/nucleo-u545re-q.html) | The microcontroller | provided by university | |
| 79 | +| [ILI9341 2.4 inch display ](https://www.emag.ro/modul-lcd-2-4-240x320-pixeli-spi-controler-ili9341-3-3v-nykhqe-lcd-2-4-spi/pd/DNPYPD2BM/) | display for user interface and real-time data visualization | 80 RON | |
| 80 | +| [MPU6050 GY-521 accelerometer module](https://www.emag.ro/modul-giroscop-mpu-6050-gy-521-accelerometru-arduino-3-axe-2-1-cm-x-1-1-cm-x-0-3-cm-albastru-c7/pd/DL3G1QYBM/) | Measures motion and is used for step detection | 32 RON | |
| 81 | +| [MicroSD Card Module ](https://www.emag.ro/modul-de-expansiune-micro-sd-card-de-memorie-tf-pentru-arduino-dh000036/pd/DP8QQL3BM/) | Reads and writes data to the microSD card for storing workout logs | 19 RON | |
| 82 | +| [GPS Module NEO6MV2 ](https://sigmanortec.ro/Modul-GPS-6MV2-p125423363) | Provides location data for tracking distance, speed, and route | 30 RON | |
| 83 | +| microSD Card 8GB | Stores workout data and GPS logs | 5 RON | |
| 84 | +|Push buttons| User input for mode switching and interaction| 8 RON | |
| 85 | +| LEDs | Status indication and debugging | 5 RON | |
| 86 | +| Breadboard + Jumper Wires | prototyping and connecting components | 30 RON | |
| 87 | +| Resistors | Used for LEDs and buttons | 10 RON | |
| 88 | + |
| 89 | +## Software |
| 90 | +| Library | Description | Usage | |
| 91 | +|---------|-------------|-------| |
| 92 | +| [embassy-rs](https://embassy.dev/) | Async embedded framework for Rust | Peripheral handling and task management | |
| 93 | +| [embedded-graphics](https://github.com/embedded-graphics/embedded-graphics) | 2D graphics library | Drawing text and graphics on the display | |
| 94 | +## Links |
| 95 | + |
| 96 | +<!-- Add a few links that inspired you and that you think you will use for your project --> |
| 97 | + |
| 98 | +1. https://embedded-rust-101.wyliodrin.com/docs/acs_cc/category/lab |
| 99 | +<!-- 2. [link](https://example3.com) |
| 100 | +... --> |
0 commit comments