Skip to content

Handlebar buttons

In my Navigation Setup i like to use buttons on my handlebars to control the navigation app on my phone. I have done so by connecting an Arduino to the phone using bluetooth, and connecting buttons to the Arduino. Button presses are converted to keystrokes on a (virtual) bluetooth keyboard. Most apps have a way to take keystrokes as a control, for example to zoom in, center or pan.

This page describes outlines how to set up your handlebar buttons

General idea

Most navigation apps on Android can be controlled by sending keystrokes to them:

  • Kurviger (read here). Enable via Menu > Settings > Application > External input device > Keyboard
  • Osmand+ (read here). Enable via Menu > Configure profile > General Settings > Other > External input devices > Keyboard. Then Apply and choose to apply to all profiles. I also prefer to disable autozoom since we’ll be doing that from the handlebars

Of course you can use existing media players and use the vol -/+ to zoom in and out, like this. Although you’re done quickly; you’re very limited to the use case and have to revert to hacks to make other stuff work. On the other end of the spectrum there’s the Carpe Iter solution, which I think is the way to go, but it’s not cheap.

What if you can use programmable buttons, so you can choose the keystrokes they send to your phone? This gives you a lot of freedom to make it just like you need it. The good news is that an Arduino chip can help you with this, specifically an Arduino that comes with a bluetooth chip included, like the ESP32.

Demo of the handlebar controls

Build this yourself

If you want to build a set of buttons yourself, head over to github where you can find 3D files, Arduino code and instructions: https://github.com/joostbijl/navibox