Creating a presentation control ring with a TinyS3, C++ and TinyML
1IMU-BLE-Communication/BLE_IMU_comms.ino | ||
2BLE-Serial-Communication | ||
3 Sensor fusion | ||
4 Computerside API | ||
Ringinator | ||
.gitignore | ||
LICENSE | ||
README.md |
Ringinator
The repository for my 3D-printed ring-shaped motion-control presentation control and pointer device written in C++ and TinyML and implemented with a TinyS3 microcontroller
Goals
The goal is to develop a prototype device shaped like a ring that can be used to control presentations and as a laser pointer using only motion controls.
- Maximum compactness Everything needs to be small, the software should be minimalistic (ideally as much processing on the TinyS3 as possible)
- Wirelessness
Planned commands:
Shaking your hand while pointing at the screen | Shaking your hand while pointing down | Pushing your finger towards or away from the screen | swiping your hand left and right | circling with your finger (counter-)clockwise | WIP | |
---|---|---|---|---|---|---|
Activating the laser/computermouse mode | Disabling the laser/computermouse mode | left and right clicking | changing the volume | changing the slides forwards and backwards | pointing your figer up for 2 seconds |
Project roadmap
- April: Hardware & Networking
- Creating a Typst template
- Creating the model for the ring
- Wiring the components together
- Soldering the components together
- Creating the hull containing the components
- Establishing a connection between the TinyS3 and the PC
- May: Software:
- IMU-Visualization
- Sensor-fusion
- Computer-side API:
- Mapping the individual commands to keys
- Gyroscope calibration routine
- Mouse coordinate mapper (Euler Angles)
- Calibrate the mouse
- Setting up TinyML
- June: Training and evaluating the models
Protoype
Requirements
- Python 3.9 or higher
- Pynput 1.7.6