Motion remote

Prototype of a motion-sensing bluetooth remote for Android apps.

Similar projects worth following
This is a simplified functional prototype of a handheld motion-sensing controler in a 3D-printed casing. The hardware is based on a simple breadboard, an ESP32 and a USB-powerbank. With the included Android app a threedimensional virtual plane can be moved and rotated.Follow-up project:

MPU6050 DevBoard is used to sense rotational and translational motion of device. Signals are processed with ESP32 to calculate roll, pitch, yaw and position, converted to binary and sent via Bluetooth Low Energy.

Position and rotation can be reset by holding down the pushbutton, a red LED indicates readiness.

Circuit schematic:

Code for ESP32 and Android App can be found in attached github repositories. CAD files for casing are attached below.


Top part of casing

Standard Tesselated Geometry - 162.19 kB - 09/23/2019 at 23:41



Bottom part of casing

Standard Tesselated Geometry - 214.93 kB - 09/23/2019 at 23:41


  • 1 × Breadboard 170x170x170 mm MB/102 Breadboard 830 Point
  • 1 × ESP32 ESP32 NodeMCU Module WLAN WiFi Development Board
  • 1 × IMU MPU6050 development board
  • 1 × USB powerbank
  • 1 × casing 3D printed

View all 10 components

  • Android App

    Simon Rihm10/10/2019 at 19:11 0 comments

    An Android App was created with which the user can activate Bluetooth, pair and connect with the device. By click on "Simulate" a virtual 3D plane is drawn that can be moved and rotated by the controller.

    As can be seen in the video above (in description), corrected roll and pitch are fairly accurate while yaw angle has some drift. Meanwhile integration of translatory acceleration is not very accurate right now. These issues could be solved by using a 9 axes IMU rather than 6 axes.

    The code can also be found in the Github repository.

  • Arduino Code

    Simon Rihm10/10/2019 at 18:51 0 comments

    Software for ESP32: Gather motion data from gyroscope and accelerometer (translational acceleration in x/y/z and rotation rate around x/y/z). Calculate X/Y/Z position and roll/pitch/yaw angles by integrating over time. Drift of roll and pitch angles is corrected by accelerometer measurements.

    The data is compressed and sent via Bluetooth Low Energy in short intervalls. Arduino Code for the ESP32 can be found in attached Github repository.

  • Plastic casing

    Simon Rihm10/10/2019 at 16:07 0 comments

    Designed a rudimentary two-part casing for better handling of the remote for 3D printing. STL files of top and bottom part are attached. Breadboard with powerbank is glued to the bottom part, top part can be loosely plugged.

  • Testing components

    Simon Rihm10/10/2019 at 16:00 0 comments

    This is the first setup to test components and functionality. Basically ESP32 and MPU6050 devboards on a breadboard with some LEDs and a button for input/output. ESP hooked up to a small powerbank for easy wireless access.

View all 4 project logs

Enjoy this project?



Deevesh wrote 09/25/2019 at 04:29 point

What it actually do.?

  Are you sure? yes | no

Simon Rihm wrote 10/10/2019 at 19:20 point

Thanks for your question! I added some more details and a video :)

Basically, right now the device senses motion, calculates position/rotation and sends them via Bluetooth. We developed an Android app to receive the signals and manipulate a 3D plane based on the remote input.

The plan is to develop a VR app for Google cardboard. The motion remote can then function as a controller since the phone is not available as a controller when it's inside the headset.

  Are you sure? yes | no

Dan Maloney wrote 09/23/2019 at 15:09 point

Will this support gestures? I always liked the idea of being able to "throw" a command from one device to another.

  Are you sure? yes | no

Simon Rihm wrote 09/23/2019 at 21:38 point

What do you mean by "throw"?

As of now it broadcasts rotational and translational motion to an Android device. The corresponding app could be surely adapted to support more complex gestures.

  Are you sure? yes | no

Dan Maloney wrote 09/23/2019 at 21:57 point

Imagine you're standing before a monitor with a smartphone, and you do a big sweep up the screen toward the monitor, and the content on the phone ends up on the monitor. You've "thrown" it there. Kind of like that. I've seen it in a few near-future sci-fi shows, and thought it would be cool to actually implement. 

  Are you sure? yes | no

Simon Rihm wrote 09/24/2019 at 21:03 point

Ahh, now I get it. That would be awesome :)

Thanks for your input!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates