Headline

Motorcycle helmet HUD – in development

Introduction:

Modern motorcycles are far too easy to break the speed limit on (even unintentionally) and the need to regularly check your speed, especially in traffic increases the risk of a crash every time you take your eyes off the road.  And if you are tall like me, then you have to move your head and eyes quite a way down to see the speedo.

To avoid this problem I decided to design and build a very simple head up speed display to be mounted in my helmet.  Something that would sit in my peripheral vision, not obscure my view, and give me easily understood, responsive information about my speed, all without having to take my eyes off the road for even one second.

Ideally the system would also tell me what the current speed zone was.

Requirements:

The system shall:

  • Display the bike’s speed in a non-distracting, easily interpreted way
  • Be easy to use, preferably not requiring cords for connection
  • Be accurate and responsive (minimal lag)
  • Be weather proof and robust
  • Be responsive to the light level of the environment

The system should:

  • Detect speed zones and indicate if the rider is traveling above, or below the speed limit

Design:

The problem posed by the requirements break down into the following primary problems:

  1. Speed measurement – how fast are we going?
  2. Speed display – something simple and easy to interpret

Secondary problems:

  1. Connect the inhelmet components wirelessly to the main unit
  2. Automatically moderate the display brightness to keep it visible, but not blinding
  3. Provide a secondary display to double check the speed reading
  4. Detect speed zones

Computing: given the nature of the problem, it’s safe to say that a single board computer is going to be the foundation of the system.  So I am going to start with a Raspberry Pi 3B.  It should be well up to the task and is very easy to work with.

Speed measurement: GPS seems like the best option for speed measurement.  Adafruit have a good I2C enabled GPS module which I will use.

Speed display: There are a few options for speed display.  But my favoured one is a row of RGB LEDs that light up sequentially with higher speed.  It should be able to be interpreted without having to read, and it’s also much more compact than a numeric display.

Automatic display brightness moderation: Adafruit stock a nice I2C enabled digital light sensor.

Secondary display: a back lit LCD would be favourite for this job rather than an alphanumeric display as it’s more flexible.  Adafruit stock a wide range of these displays

Detect speed zones: there are two options for this.

  1. Direct visual detection and interpretation with a convolutional neural network (very cool, but hard)
  2. Google maps API integration – very easy, but only works if you have internet access, so that means that the whole system needs to be networked via a smartphone.  See: https://developers.google.com/maps/documentation/roads/speed-limits

Housings: each component of the system needs to be encased in a weatherproof housing of some sort.  Custom designed and manufactured housings would be ideal, so I will go with 3D printed parts here

Cables and connectors: this is something of an unknown at this stage.  Prototyping was done with ribbon cable, but that is not suited at all to final use.  Bluetooth wireless between the helmet and the computer would be ideal, so I will look into that

Materials & components:

  • Raspberry Pi single board computer
  • Rasberry Pi camera
  • I2C connected GPS module
  • I2C connected light level sensor
  • Adafruit Feather 32u4 Bluefruit LE (single board computer)
  • RGB LED stick with eight LEDs
  • 3.7volt
  • Backlit LCD display
  • Assorted ribbon cable, connectors, and wire
  • Prototyping circuit board
  • Casings for various components

Tools:

  • Soldering iron
  • Solder
  • Magnifying light
  • Wire cutters and strippers
  • 3D printer for casings

Instructions:

Under development

Notes:

Under development

Finished product:

Under development