Willy-JL d2279c3b85 Merge airmouse from https://github.com/xMasterX/all-the-plugins hai 1 ano
..
lib dbec9cce53 Merge airmouse/lib/lsm6ds3tr-api from https://github.com/STMicroelectronics/lsm6ds3tr-c-pid hai 1 ano
tracking fe2077c82e New formatting hai 1 ano
views fe2077c82e New formatting hai 1 ano
.gitsubtree ff24807dc8 Fix remote fetch order hai 1 ano
CHANGELOG.md 4a0f46b916 Merge airmouse from https://github.com/ginkage/FlippAirMouse/ hai 1 ano
LICENSE 4df7f03091 Add airmouse from https://github.com/xMasterX/all-the-plugins %!s(int64=2) %!d(string=hai) anos
README.md 826319f8de Merge airmouse from https://github.com/ginkage/FlippAirMouse/ hai 1 ano
air_mouse.c d2279c3b85 Merge airmouse from https://github.com/xMasterX/all-the-plugins hai 1 ano
air_mouse.h 826319f8de Merge airmouse from https://github.com/ginkage/FlippAirMouse/ hai 1 ano
application.fam d6e56cf65b Airmouse: Update name for LSM6DSO hai 1 ano
build.sh 826319f8de Merge airmouse from https://github.com/ginkage/FlippAirMouse/ hai 1 ano
mouse_10px.png 4df7f03091 Add airmouse from https://github.com/xMasterX/all-the-plugins %!s(int64=2) %!d(string=hai) anos

README.md

paypal

BMI Air Mouse

Brief

"You can turn anything into an air mouse if you're brave enough"

— Piper, a.k.a. Pez

Naturally, the quote above applies to Flipper as well.

What?

The app allows you to turn your Flipper into a USB or Bluetooth air mouse (you do need an extra module, see the Hardware section below)...

Using it is really simple:

  • Connect the Flipper via a USB cable and pick USB, or pick Bluetooth and pair it with your PC;
  • Hold the Flipper in your hand with the buttons pointing towards the screen;
  • Wave your Flipper like you don't care to move the cursor;
  • Up button for Left mouse click;
  • Down button for Right mouse click;
  • Center button for Middle mouse click;
  • Left and Right buttons for scrolling;
  • Use calibration menu option if you notice significant drift (place your Flipper onto a level surface, make sure it doesn't move, run this option, wait 2 seconds, done).

See early prototype in action.

How?

  • Clone this repository with git clone --recurse-submodules to include the driver implementations.
  • Build the project using ufbt

Hardware

The custom module is using Bosch BMI160 accelerometer/gyroscope chip connected via I2C.

Note: in fact, some other IMU chips are also supported. It's detected via the first found I2C Address.

Chip Expected I2C Address
BMI160 0x69
LSM6DS3 0x6A
LSM6DSO 0x6B

Take a look into the schematic folder for Gerber, BOM and CPL files, so you can order directly from JLCPCB.

Original idea:

What I thought it would look like

Expectation:

What EDA though it would look like

Reality:

What it looks like

Software

The code is based on the original Bosch driver and an orientation tracking implementation from the Google Cardboard project

License

TL;DR: Use the code however you want, give credit where it's due, no warranty of any kind is provided.