Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/revalew/master-thesis
This is my Master Thesis project - "Step estimation from motion sensors" w/ RPi Pico W
https://github.com/revalew/master-thesis
estimation-algorithm master-thesis micropython raspberry-pi-pico university
Last synced: 3 months ago
JSON representation
This is my Master Thesis project - "Step estimation from motion sensors" w/ RPi Pico W
- Host: GitHub
- URL: https://github.com/revalew/master-thesis
- Owner: revalew
- License: gpl-3.0
- Created: 2024-07-14T18:40:21.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-07-19T11:50:21.000Z (5 months ago)
- Last Synced: 2024-10-10T22:22:20.419Z (3 months ago)
- Topics: estimation-algorithm, master-thesis, micropython, raspberry-pi-pico, university
- Language: Python
- Homepage:
- Size: 19.1 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Master thesis project - "Step estimation from motion sensors" with RPi Pico W
## Overview
The aim of this project is to create a circuit to measure and analyse the data from two different IMUs (Inertial Measurement Units) to determine the accuracy of the step estimation algorithm (multiple if there is time).
## Required / used components
The project will make use of a variety of components:
- [Raspberry Pi Pico W](https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html) (access point, web server, reading sensors, driving TFT display) running [MicroPython](https://micropython.org/download/RPI_PICO/) with various [CircuitPython Libraries](https://learn.adafruit.com/circuitpython-libraries-on-micropython-using-the-raspberry-pi-pico/overview),
- [Pico-10DOF-IMU](https://www.waveshare.com/wiki/Pico-10DOF-IMU) as the first IMU,
- [ST-9-DOF-Combo](https://learn.adafruit.com/st-9-dof-combo) as the second IMU,
- [Pico-UPS-B](https://www.waveshare.com/wiki/Pico-UPS-B) as a power source,
- [3.5inch_TFT_Touch_Shield](https://www.waveshare.com/wiki/3.5inch_TFT_Touch_Shield) to display the measurements and battery level,
- [Pico-Dual-Expander](https://www.waveshare.com/pico-dual-expander.htm) to hold some components together w/o soldering,
- 3D printed enclosure for the device to protect the circuit (custom design).## How to connect the components
Simple list of connections in [`~/.BACKUP/project_circuit_simple_diagram.pdf`](./.BACKUP/project_circuit_simple_diagram.pdf)
## Project structure and important locations
This project consists of many files and directories, the most important of which are described below:
- Directory [`~/.BACKUP/`](./.BACKUP/) containing the backup and important files that should not be transferred to the Pico:
- Adding the CircuitPython compatibility layer - short tutorial in [`~/.BACKUP/adafiut_libs/README.md`](./.BACKUP/adafiut_libs/README.md) (with required libraries in the same directory),
- Raspberry Pi Pico W board pinout in [`~/.BACKUP/pico-pinout.svg`](./.BACKUP/pico-pinout.svg),
- Firmware used in the project in [`~/.BACKUP/RPI_PICO-20240602-v1.23.0.uf2`](./.BACKUP/RPI_PICO-20240602-v1.23.0.uf2),
- [`~/.BACKUP/code/`](./.BACKUP/code/) for old / sample / backup code,
- **(LINUX USERS: MicroPico Extension for VSCode)** script used to resolve user permissions in [`~/.BACKUP/solvePermissions.sh`](./.BACKUP/solvePermissions.sh),
- [`~/classes/`](./classes/) directory containing all necessary classes for easy development,
- [`~/lib/`](./lib/) directory containing all the CircuitPython libraries that may be needed in the project,
- [`~/src/`](./src/) directory contains all the resources needed for the web server,
- **[`main.py`](./main.py)** as the main file of the project and the program to be executed on startup.## Progress
### First major success:
I managed to create an asynchronous web server that handles clients and reads sensor data at the same time (based on a scheduler, multithreading-coming-soon™). Notable achievements of this release:
- Pico acting as an access point,
- Handling of asynchronous requests,
- Added translation layer for CircuitPython,
- Reading IMU sensor data using the CircuitPython library (Adafruit "LSM6DSOX + LIS3MDL 9 DoF" Sensor),
- Control the device from a web page,
- Live UI update and synchronous data retrieval.