LED Bike Safety Vest
This project aims to design and build a vest that displays data pertinent to a biker's safety to other motorists. As of now, the goals are to display the biker's speed, by how much is the biker slowing down (panic stop or reducing speed?), whether the biker is making a turn (blinkers) and whether the biker has fallen off. Additionally, there is a bonus feature of headlights which will just be some LEDs run through a transistor from a 9V battery. All this information is to be displayed in a large, easily visible 5x16 LED display on the back of the biker's vest. When this project refers to "bikers", the author refers to both bicyclists and motorcyclists.
The LED display will be powered by 10 TPIC6B595 8bit serial-in, parallel-out shift registers. These are high current (150mA) shift registers similar to the 74595 series and they can be found here (http://www.sparkfun.com/products/734). High current shift registers are necessary to handle the ultra bright LEDs (which allow daytime visibility). The brightness of the LEDs can be controlled by connecting the enable pin of the shift registers to a PWM output of the Arduino Nano.
Additionally, the rider will be tethered to the bike through a USB breakaway cable. It will supply power and ground to the wheel speed sensor and hold the wires for speed data and rider status data. The speed data will be supplied by pulses from either a hall effect sensor or reed switch. The status data will simply be a wire shorted to ground. If the rider falls off, this connection will be broken and the Arduino Nano will see 5V because of a pull-up resistor. This will immediately put a panic message on the 5x16 LED display, informing other motorists the rider has fallen and may need help. Both of these mechanisms will be triggered through a interrupt mechanism in the Arduino Nano. In this prototype design, the user input will be controlled through a series of switches.
This project will use an Arduino Nano (http://www.arduino.cc/en/Main/ArduinoBoardNano) for processing the speed data and managing the LED display. All the project components will be mounted on perfboards which will be attached together in a modules and then mountable onto potentially a backpack or jacket. The separation of project components ensures the physical flexibility on the cloth. 9V batteries will power the project; multiple batteries may be needed to handle the current draw of all the LEDs.
Originally the project was to be fastened to a vest, hence the name. After the bulk of the project was finished we decided it was actually more practical if users could wear it whatever ends up on their back. This is because you could not wear a vest over a jacket as easily, and especially not over a bag. We also have thought of mounting internally to a biking backpack or directly mounting it to the bike. The former is relatively difficult for a Build18 project and the latter wouldn't be practical because it would require installation as well as leaving a rather obvious (and moderately valuable) piece of hardware locked to your bike, out in the rain, when you have to go inside without it.
The original concept involved using an array of triggering switches to select the message using interrupt logic to change the message but this ended up requiring more complex logic to hold input long enough for the Arduino to record the value (as it was polling each of the input lines). Instead the message would be determined every cycle (or every couple of cycles) based on the position of the rotary encoder. The rotary encoder avoids these timing hazards as well as have an added benefit of taking up less inputs on the Arduino. The original design required one input pin per message while the rotary encoder, having a binary encoded output, would be a logarithmic number of inputs in terms of the number of messages.