Wednesday, October 23, 2013

Car HUD Version 2.0

To clarify: I'm not entirely convinced this design is better than version 1, so for our purposes, "version 2" merely means it was built after version 1.




Major differences that I experimented with:


  • I took out the lens completely.  Although I do love the concept of collimation, I wanted to see what it would look like if the display wasn't focused at all.
  • The glass combiner is a simple two-way mirror instead of a fancy teleprompter mirror.  This cuts down on the cost considerably, at the expense of having a darker tint on the glass.
  • The combiner is low in the driver's field of vision, so it is less distracting:
  • The Arduino is wrapped in black paper, for aesthetics.
  • The glass is mounted to a holder made out of wood with super tape, which eliminates the distracting suction cups:
The wood holder



I have had this design in my car for about a month now, and these are some of my conclusions:

  • Having a lens definitely makes the display safer.  Not only does it cut down on transition time when you glance at the display, you can actually see the road better in your peripheral vision.  If I just kept staring straight at the display while driving, I would be able to see the road significantly clearer if the display was collimated.
  • The fact that the display is so low in the driver's field of vision almost negates the effect of a heads-up display.  A HUD is supposed to overlay information so that it seems part of the real world.  This display is in the same line of sight as the top of my hood, which I do not normally look at when driving.  I think a better placement of glass would be slightly higher so that it overlays the road instead of the hood.
  • The display is much closer to the windshield, which creates an unwanted second reflection off the windshield.  In the future I can fix this by blocking that path of light with cloth or paper.

-Bill


Questions or comments? Email me at abnormalbill@gmail.com!

Tuesday, August 13, 2013

New 7-Segment Display

I just received my new Serial 7-Segment Display in the mail!

Sparkfun's updated version of this display features a more compact design, and comes with an ATMega328 preloaded with the Arduino bootloader, which I'm going to use to program my HUD without the need for the physical Arduino.
Figuring out the programming using an FTDI breakout board

Without the Arduino, the display unit will take up less room and be easier to mount than in version 1.0.

Stay tuned for more updates!

Friday, June 28, 2013

Car HUD Version 1.1

I've updated the design of the heads-up display, with everything mounted with suction cups over the dashboard.

Some problems with the previous version (1.0) that I aimed to fix are the following:
  • My knee would often hit the Arduino
  • The combiner was rather high in my field of vision
  • My hand sometimes obstructed the display when using my turn signal
So the Arduino is now on the passenger side and the lens is right above the radio:
Whole setup

One thing I don't like about the new setup is that my bad engineering skills created a suction cup right in the middle of my field of vision:
Driver's view, notice left suction cup considerably higher than the right

Arduino and Lens

Lens

Arduino in a cardboard case

Support for the combiner mount provided by
white plastic rods (cut from plastic hangers)

I'm not convinced that this design is better than version 1.0, but it does get the job done.

Be on the lookout, version 2.0 is in the building stage right now with lots of upgrades!

-Bill

Saturday, February 16, 2013

How to Build a HUD for your Car

Hello all, this is the Car Heads-Up Display (HUD) Version 1.0: Researched, constructed, and installed in approximately a month on a 2004 Toyota Highlander.  This is what it looks like in action:

Overview

HUDs are built-in on some modern luxury cars, but if you not lucky enough to have one, here's how to make your own, DIY-style. My model uses the car's OBD-II port to connect to an Arduino microcontroller, which is programmed to display the car's speed on a 7-segment display.  A fresnel lens is used to optically collimate the display, which is projected onto a piece of combiner glass. The difference between this and most third-party HUDs is:
  • Optically Collimated - This means the display is focused at infinity, so the driver does not need to refocus his eyes from the road.  The display looks like it is floating in space right where the road is.  Most third-party HUDs are not collimated.
  • Utilizes a Combiner Glass - This specially-coated piece of glass allows for virtually seamless viewing of the outside road simultaneous with the display, as opposed to cheap "reflective films."
Here is the full setup:
Overview of the setup

Shopping List

  • Arduino Uno - $20
  • OBD-II cable - $50 - This one comes with an Arduino library, so it's easy to program with
  • 7-Segment Display - $13
  • Arduino Protoshield - $10 - to easily mount the display on top of the Arduino (this is optional, you can just use perfboard instead)
  • Power switch - $0.50 - really cheap and makes it easier to turn the power on/off instead of unplugging the wires every time
  • Large Fresnel Lens - $1.80 - It really doesn't matter which one you buy as long as its at least ~220mm long
  • Teleprompter Glass - $15 - Get the 7" by 4" custom size
  • 4 Suction Cups - $3 ($1.50/pack of three) - You can use any suction cups you want, just make sure they can hold the glass safely (these are rated for 3lbs)
  • Total Cost: $113.30

Supplies Needed

  • Soldering Equipment
  • Hookup Wire
  • Lots of Cardboard
  • Duct Tape
  • Pliers

Prerequisites

  • Some Soldering Experience
  • Some Arduino Experience Suggested

Building

Step 1: Solder the Circuit

Connection labels on the protoshield
Solder these connections onto the protoshield to be mounted on the Arduino:
  • OBD:
    • Yellow wire to D0
    • Blue wire to D1
    • Red wire to 5V
    • Black wire to GND (through the power switch if you have one)
  • Display:
    • VCC to 5V
    • GND to GND
    • RX to D6

    Step 2: Upload the Code

    Go here and download the code, then open it with the Arduino program, connect your Arduino to your computer, and upload the code.

    Step 3: Build the Arduino Holder

    Pick a place in your car to build the holder for your Arduino.  Keep in mind that it should be about 10 inches away from the lens, and it should be out of the way of your hands and legs when you drive.
    I built my holder into an existing compartment below the steering wheel
    Duct tape and cardboard are extremely cheap materials to use, and they hold up pretty well. Next, put the Arduino on top and connect it to the OBD wires.  I soldered headers onto my protoshield for easy connection with the OBD wires.
    The fully-soldered protoshield mounted on top of the Arduino

    Step 4: Mount the Combiner Glass

    Bend the hooks of the suction cups to cradle the glass like this:
    Angle the glass until you can see the reflection of the display, then tweak the suction cup hooks to hold the glass in that position.
    If the suction cups hooks aren't long enough, just cut out a segment of a wire clothes hanger and bend it around the suction cup.
    After you finish, you might want to pull on the glass a little bit to make sure the suction cups will hold.

    Step 5: Mount the Lens

    The fresnel lens is very flimsy by itself, so I recommend taping some support around the edge.  You can use cardboard, popsicle sticks, or anything you find around the house.  Wooden kabob sticks worked well for me.

    Now that the lens is nice and sturdy, you need to figure out the exact position the lens should be in to collimate the display.  This can be tricky to get exactly, but you're looking for when the display is the most magnified without being blurry.  I found this the easiest way to do it:

    Look through the combiner glass and through your windshield at an object far away (let's say a tree).  Notice how when you focus on that tree, the display splits into two images because your eyes are no longer focused on it.  Now place the lens right over the Arduino and then slowly move the lens up towards the combiner.  Still focusing on the tree, you should see the two images of the display gradually get closer to each other.  When the two images meet, stop moving the lens and mark its position.  That means that the display is now focused at the same location as the tree.
    Light beams showing how collimation works
    Now build a holder with cardboard and duct tape to hold the lens in that exact position.
    When in doubt, more duct tape
    The lens will probably be bigger than you need, so just use scissors to trim off some of the edges where it's not needed.

    Congrats!

    You now have a working heads-up display.  Go for a test drive to see how well it works, and email me at abnormalbill@gmail.com with questions or comments.