The Haptic Feedback Shift Knob is a replacement for a manual transmission shift knob that adds haptic and visual feedback to help drivers shift appropriately. An Android application monitors the vehicle's speed, RPM and accelerator pedal position. Based on this information, the application calculates and then indicates to the driver when he or she should shift by vibrating the shift knob. After feeling the haptic "pulse" the driver can then appropriately respond. The embedded electronics in the shift knob are based on the Arduino Pro Mini with an on-board FTDI chip and USB connector. The Shift Knob was originally designed and developed by Zac Nelson at Ford.
This project is contained in four different GitHub repositories:
Shift Knob 3D Design:
The shiftknob-3Ddesign repository contains
STEP files for the 3D printable
shift knob housings as well as documentation for creating your own physical
shift knob design that works with the shiftknob hardware. Different vehicles
and haptic feedback motors require different housings and those housing files
can be found and uploaded here.
The shiftknob-hardware repository contains Eagle schematics and PCB layouts for the shift knob embedded hardware.
The shiftknob-firmware folder contains Arduino source code to run on the embedded system as well as other firmware versions for differing applications.
The shiftknob-android repository contains the "Shift Indicator" Android application which calculates the vehicle shift point and transmission gear position and sends this signals to the Shift Knob embedded system over USB using the FTDriver library.
The manual transmission shift knob is a relatively plain component in most of today's vehicles. They come in all shapes and sizes, sold all across the globe, and yet almost all of them lack any "smart" capabilities. The shift knob is a great space for innovation.
Most new manual transmission vehicles have a "shift indicator" light on the instrument cluster that tells the driver to shift for best performance and/or fuel economy. While useful, this HMI requires the driver direct his or her attention away from the road. This can pose a driver distraction, so the idea came, "Why not send haptic pulses through the shift knob to tell the driver when to shift?" The device could behave much like a cell phone in vibrate mode.
Most haptic feedback devices such as cells phones and game controllers use a motor with an eccentric mass to generate the vibration effect. The size of the motor and eccentric mass is dependent on the weight of the device and type of vibration desired. For this particular case, it was determined that a large eccentric mass would be needed with a rotation speed less than 10,000 RPM. If the rotation speed is too great, then the "feel" may be undetectable or irritating. If too slow, then it may in distinguishable from the vibrations of regular driving.
Example vibration motors:
For this particular version, two different housings were designed using the two different haptic feedback motors listed above. The first housing shown at the top of the page uses the XBox 360 vibration motor and the housing version shown below uses the 10,000 RPM Toy Motor.
GitHub Directory: shiftknob-3Ddesign
The shift knob housing was designed to meet 3 goals:
For more details, files, and drawings please see the README.
GitHub Directory: shiftknob-hardware
The Shift Knob PCBs are based off the Arduino Pro Mini allowing developers to use the open source Arduino platform to program and easily interface with the ATmega328 microcontroller. The PCB has 3 RGB LEDs, a 7 segment display, and a connector to attach the vibration motor. The brightness of the LEDs and the power to the vibration motor are all controlled with MOSFETs. The 7 segment display is controlled by an 8-bit shift register. Additionally, a linear 5V regulator is on-board in case the user wants to power the device from the 12V vehicle power rather than the 5V USB power.
The Haptic Feedback Shift Knob receives commands over USB from an Android application connected to an OpenXC Vehicle Interface. The Android application can calculate the shift point for best fuel efficiency or performance. In performance mode, the user can set a specific RPM shift point. In fuel efficiency mode, the application dynamically calculates when the driver should shift based on the pedal position and the current transmission gear.
Once the shift point is determined, the Android application sends the corresponding command to the shift knob. The embedded shift knob microcontroller energizes the haptic feedback motor based on the received command and sends a pulse through the driver's hand. The microcontroller also controls RGB LEDs and a 7 segment display which is used to show the current transmission gear position and provide shift knob color control.