This is a project I have been interested in for many years: A signal indicator for cyclists. Cycling is one of my favorite activities. As a commuter cyclist I’m on the road a lot, and safety is always on the back of my mind. When you ride your bike on the road alongside cars, trucks and buses, the chances of you walking out of an accident is very slim. One of the most important things you can do to avoid an accident is to be seen! So about 3 years ago I decided to build a wearable signal indicator for cyclists called Smart Turn. I was able to make a prototype of Smart Turn using a Lilypad Arduino and a BlueSMiRF Silver Bluetooth module.
Using the Bluetooth module I was able to control the lights on the jacket using my phone. This prototype had three major issues:
- The jacket was hideous and cumbersome to wear.
- The lights were not bright enough to be seen effectively.
- The cell phone battery drained after only a few hours of use.
Because of these problems the first prototype was not very practical, and I never actually ended up using it on the road. Since I was busy with school at the time the project was shelved. After school ended I slowly got back into this project and now I have built a second prototype that fixes all the problems I had with the first version.
The new Smart Signal is a belt. The major advantage of this is that you can wear it around your waist or around your backpack if you happen to ride with a backpack on like I do. The second improvement is using Neopixel RGB LEDs instead of regular LEDs. The Neopixels are significantly brighter than regular LEDs, and they can be connected serially and controlled with only three connections. The third major improvement is using a Bluetooth Low Energy (BLE) module to control the lights. Using BLE helped increase the battery lifetime significantly over the previous version. The fourth major improvement is having a separate controller attached to the handle bar of the bicycle rather than using a phone. This controller was physically actuated with the brake lever, and is much more reliable than using the accelerometer of the phone to detect braking.
Inside Smart Signal belt
I used enamel wire to make the connections between the three LED sticks. I found this to be more reliable than using conductive thread. After making all the connections, I sandwiched the LED sticks and enamel wire between two pieces of fabric and sew the fabric together. Holes were cut out to expose the LEDs. The rest of the components including the Li-polymer battery are placed on the small red case which links the belt to the belt buckle.
The following schematic shows the components of the Smart Signal belt. It consists of three main components: A BLE113 breakout board for wireless control, an ATTINY85 for controlling the Neopixel LEDs and Neopixel LEDs.
The Neopixel LEDs can be programmed with just one data pin. The only timer available with the BLE113 module is 32.768 kHz, not sufficient to meet the timing requirements of the Neopixels. So I decided to use a ATTINY85 to control the LEDs. The BLE113 breakout board, which I talked about in my previous post, includes a Li-polymer battery charger.
The following is a flow chart showing how the Smart Signal operates.
Upon startup the BLE module starts advertising that it is a Smart Signal device and that it is available for connecting to a master. This allows the controller that sits on the handle bar to find and connect to the Smart Signal belt. Once a connection is established, the Smart Signal belt stays in idle mode until a signal state update is received from the controller.
There are four lighting modes: left turn signal, right turn signal, brake and off. Brake signal overrides any of the turn signals. The BLE module sets the status of two output pins (sw1 & sw2) according to the signal state received from the controller. The ATTINY reads the sw1 & sw2 pin statuses and activates the correct lighting mode.
Smart Signal Controller
The controller is attached to the handle bar of the bicycle. The turn signals are activated by a slide switch. I used a momentary switch to detect the brake position as shown in the image below.
The controller also has a BLE113 module, which connects to the BLE module of the belt. If the BLE module of the controller detects a change in any of the switch positions, it will send the appropriate command to the Smart Signal belt.
The second prototype is functional, and I do use it on the road. The only gripe I have with it is that the controller is very specific to the orientation of the brake handles of my bicycle. So it is not easily transferable between bicycles. The next step for this project is to update the controller to make it universal. But for the time being I am glad to have a Smart Signal device that I can use in my daily commute. Here is a short video that shows what the Smart Signal belt looks like in action:
Let me know if you have any questions, thoughts or suggestions. Thanks for reading!