Creating a presentation control ring with a TinyS3, C++ and TinyML
Find a file
2024-08-16 22:30:44 +02:00
1IMU-BLE-Communication/BLE_IMU_comms.ino Sensor fusion implemented 2024-06-25 12:15:23 +02:00
2BLE-Serial-Communication Perpendicular angle calulcation added 2024-08-16 22:30:44 +02:00
3 Sensor fusion Sensor fusion implemented 2024-06-25 12:15:23 +02:00
4 Computerside API Perpendicular angle calulcation added 2024-08-16 22:30:44 +02:00
5 Cursor-Calibration Perpendicular angle calulcation added 2024-08-16 22:30:44 +02:00
Ringinator Perpendicular angle calulcation added 2024-08-16 22:30:44 +02:00
.gitignore Initial commit 2024-04-16 16:34:21 +00:00
LICENSE Initial commit 2024-04-16 16:34:21 +00:00
README.md Update README.md 2024-07-17 16:27:11 +00:00

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.

  1. Maximum compactness Everything needs to be small, the software should be minimalistic (ideally as much processing on the TinyS3 as possible)
  2. 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
  • Pyalsaaudio 0.11 (on Linux) or PyCaw 20240210 (on Windows)