Persistence of vision - the phenomenon of the eye by which an afterimage is thought to persist for approximately one twenty-fifth of a second on the retina.
What is Night Rydazz?
Night Rydazz is a project team at the Georgia Institute of Technology for Computer Science 3651: The Art of Prototyping Intelligent Applications. The project team was assigned to design and build a device that uses computerized components with both sensing and actuation.
The Night Rydazz device is a bike wheel lined with LED's that will detect the speed of the bicycle and flash the LED's, timed accordingly, in order to display designs, patterns, or text as the rider rides through the city in style.
The end goal of the project is to allow a bicycle rider to add designs or text in the wheel of his bicycle while riding at night. To do this, we will line the spokes of one bicycle wheel with LED's that will blink on and off, depending on the speed of the wheel, in order to provide the illusion that the lights are making solid designs.
Motivation: why build it?
Two of bikers' most important issues of the riding experience are style and safety. No one wants to ride an ugly, junky bike. No one wants to get run over by a car, either. The LED bike wheel light directly addresses both of these issues. The device will not only allow the user to ride in style, impressing friends as well as street-goers, but vastly increase visibility and thus the safety of the rider.
Required parts and technical specifications
The Arduino Fio is a micro-controller that can be powered by a lithium ion battery, can send and receive data wirelessly using XBee transmitters, and can charge a battery when powered by USB.
XBee 1mW Chip Antenna
The XBee is a wireless transmitter that fits in the Arduino Fio.
XBee 1mW Wire Antenna
The XBee is a wireless transmitter. This Wire Antenna model is used to allow the computer to transmit and receive.
XBee Explorer Dongle
The XBee Explorer Dongle provides a USB connection between the XBee and the computer.
Polymer Lithium Ion Battery - 110mAh
This Lithium Ion Battery provides 110mAh at 2C continuous discharge.
Joe Knows Electronics 5mm Clear Blue LED (25 Pack) HQ Series
These blue LEDs provide 10,000 mcd at 20ma. Forward voltage 3-3.2v.
Hall Effect Sensor
The Hall Effect Sensor allows the Arduino to detect changes in a magnetic field. This sensor is latching.
The bike wheel is that thing on your bike that rolls along the ground.
clear acrylic sheet
A clear sheet of acrylic (plastic) to cut in order to build housing for the components.
other various hardware to put the components together
This includes: metal brackets to mount the magnets, solder, wires, heat shrink tubing for the wires, electrical tape, fasteners (velcro strips, zip ties), a metal plate to mount the Hall Effect Sensor
Division of work hours
Man hours: the SCRUMM projection of hours contains the estimates of work hours that it will take for the project to reach completion.
Estimated task work time:
Hall Effect Sensor mount design:
Designing circuit schematic:
Power supply system design and battery purchasing:
Choosing and purchasing micro-controllers:
Choosing and purchasing magnets:
Building team website:
Choosing and purchasing LED's:
Building circuit board:
Wiring components together:
Designing LED, Hall Effect Sensor, and micro-controller mount:
Fabricating LED, Hall Effect Sensor, and micro-controller mount:
Developing software to control micro-controller:
Mounting components to bike wheel:
Developing software to program LED's:
So you want to build this, do you?
Much of the project was spent choosing parts, designing components to fit together, designing circuits, and things that only need to be done for the first time in building the prototype. Therefore, if you wanted to rebuilding this yourself, you could potentially save time by learning from our mistakes and using our schematics and designs. Similarly, if we were to rebuild this project, we could repeat the process much more quickly than the first, knowing our initial problems and having the project already layed out. If you were to rebuild this based on our prototype, the process may look something like the following:
New estimated task work time:
Collecting and ordering electronic components online:
Putting together circuit board, downloading software:
Learning how to use the Arduino:
Wiring components together:
Fabricating LED, Hall Effect Sensor, and micro-controller mount:
Mounting components to bike wheel:
Implementing our code and GUI:
Step 1: Order the parts —
Order the electronic parts online and head down to your local hardware store to get the other various supplies.
Step 2: Cut out the acrylic housing containers —
Use the Illustrator file on the design page to cut out the custom acrylic housing for the LED's, and design and build a similar container for the Arduino circuit boards and battery.
Step 3: Wire the components together —
According to the schematic above, wire the components, soldering the components inside the LED container and connecting the wires to the Arduino board.
Step 4: Mount the pieces to the bike wheel —
Attach the LED container. Attach the micro-controller housing. Attach the magnets to the frame and the Hall Effect Sensor and battery to the spokes. This part may require improvisation since all bike wheels are a little different.
Step 5: Connect everything —
Connect the LED's to the micro-controller. Connect the Hall Effect Sensor to the micro-controller. Connect the battery to the micro-controller. Connect the other battery to the Hall Effect Sensor.
Step 6: Tidy up and secure components —
We used heat shrink tubing and velcro straps to do this, but don't hesitate to use other methods if you think they will work better. Don't forget that the wheel will be spinning at high speeds, so everything should be secured tightly onto the wheel to avoid catastrophes.
Step 6: Download software —
Download the software and code to get the display functioning.
Step 7: Create some cool designs! —
You want to impress everyone, don't you??
Step 8: Ryde off into the night —
Don't forget your helmet!
Daniel Farmer is a third year CS student specializing in People and Intelligence. He loves kayaking, music and visiting with friends. His major goals in this project include learning to put physical form to ideas and developing a sense for clean functional design.
James Jett is a third year CS major. His threads are AI and devices. He is a very boring person.
Andrew Nemchik is a 3rd year CS Major. His threads are devices and media. He hopes that this project will be the new pet rock in terms of popularity. He also enjoys learning new instruments and listening to oldies music.
Russell Strauss is a third year Computational Media student from the lovely little town of Dacula, Georgia. He loves riding his bike, knitting awesome things to wear, sunny days with warm weather, and taking ridiculous pictures. He loves building things and has a head full of ideas.
Overall placement of the device on the bicycle
The device will be placed on the back wheel of the bicycle. Since the LED's and other components run off of a lithium-ion battery, it stands independently, attached to the spokes of the rear wheel.
Detailed placement of components
In the design, all components are placed on the spokes of the wheel, with the exception of the magnets activating the hall effect sensor. The battery, Arduino, LED construction, are all placed on the spokes and spin freely.
Before designing how the components would fit together, it was imperative to draw out a circuit schematic. If we don't know how the components will be wired together, where the wires will be, and which components are connected to each other, then how should we design the components' housing?? We came up with the following schematic as the best solution:
The components labeled "D" are wired to the different pins on the Arduino. The pins are connected to the LED's through transistors and 1.5K resistors. The component labelled "S" is the Hall Effect Sensor.
Building Design Phase
In order to attach the components to the wheel, we created housing for the components to fit into and mount onto the spokes of the wheel, made out of clear acrylic. We bought a clear sheet of acrylic, designed a finger joint box that fits together, then glued the parts of the box that received more stress, although it worked pretty well without the glue as well. We used a laser cutter to cut the pieces out of the acrylic and then snapped them together. The design was as follows:
To use the original Adobe Illustrator file, click here.
Circuit board housing
Due to difficultly getting into the lab with the laser cutter and limited time, we didn't create the same sort of housing for the Arduino circuit boards and battery as we did for the LED's, but if we had more time, we would have. Instead, we made a rough and quick wooden box, glued together with holes drilled into it to house the boards. A panel slides in and out to allow for the removal of the boards and battery. We then strapped this to the spokes using zip ties for a fast but durable attachment. It did the job just as we needed it to.
How it Works
As the wheel spins, the hall effect sensor passes under the two magnets, momentarily switching it's output. Using the time between two consecutive switches, we determine the wheel's speed. Based on this speed and the time since the last switch, we determine the position of the LED display on the wheel. Once the position is determined, we merely have to determine which pixels are on at the wheel's current position and light them up. Lighting the pixels at each location on a quickly moving wheel gives the impression of a constantly lighted pattern - a phenomenon known as persistance of vision.
Building the Prototype
Once we planned everything and got the component housing ready to put together, it was only a matter of building the prototype and mounting it onto the bike before we could start programming and implementing functionality. The first step was to solder all of the components together within the LED mounting container. The clear box has a center panel with holes cut into it for each LED, transistor, and resistor. The components could be easily inserted into their correct holes and then soldered together. With such a small space for all of the components to fit into, it was difficult to construct everything without crossing wires and shorting the circuit since it was all done by hand, but luckily we did so without much difficulty--we just had to take our time in meticulously constructing the circuit.
As you can see, part of the container broke during testing, which explains why part of it is tied on, rather than fastened the way we designed it. After constructing the housing for the LED's we made a simple wooden box for the circuit boards and battery to fit in.
Hall Effect Sensor and rare earth magnets
We mounted the Hall Effect Sensor as labelled on the circuit schematic, and began testing by taping it to one of the spokes and sticking the magnets onto the bikes frame (which was made of steel). After a few hours of trial and error, we still had no luck getting the sensor to accurate and consistently send a signal, so we had to figure out the problem. To put it simply, the sensor just wasn't picking up the magnetic field strongly enough, even when the sensor passed very close to the magnets. It worked even less consistently when the bike wheel was moving at a semi-high speed. We got metal brackets to mount the magnets to the bike and a metal plate to mount the Hall Effect Sensor to try and get more consistent results, but didn't have too much luck.
With a little research and a little trial and error, we discovered that the steel plate behind the Hall Effect Sensor would magnify the sensor's sensitivity and help catch the magnetic field. We were initially powering the sensor with the Arduino's 3.7v supply - below the sensor's rated 4v minimum. To fix this, we added a 9v battery. Problem solved. This is why you can see the battery attached with only velcro--we hadn't really planned for it. It was simply a solution to the problem we discovered as we built the prototype. If you're planning on implementing this yourself, you might want to spring for the 5v Arduinos as they would be able to power the sensor without the need for an external battery.
Once we got everything put together, wired, and mounted, we used heat shrink tubing to clean up the wires and velcro straps to tie everything down more securely.
And here was our first successful test run! Unfortunately, it's difficult to see because of the way that YouTube processed our 60fps camera shots.
Programming and Gaining Functionality
The coding for the project is divided into two distinct parts - the code that runs on the Arduino on the bike wheel and the code for the GUI Design Editor. Here's the code for the Arduino and here's the code for the GUI.
Coding the Arduino proved to be much less difficult than was initially thought. Since the Arduino API is very closely related to Processing, it is easy to use for people familiar with C++ or Java. The biggest challenge we faced was using the calculated speed of the wheel to determine when pixels should flash. To do this, we used the speed and the time elapsed since the speed was last updated to determine how far around the circle the LEDs were. Once we knew that, we only needed to index into our pixel arrays to determine what lights should be on and which should be off.
GUI Design Editor Programming
James did this.
Hall Effect Sensor
The biggest single struggle we had working on this project was getting the Hall Effect Sensor to consistently detect the magnets when it was traveling at high speeds. Our initial approaches were flawed in two major ways.
First, we were not supplying the sensor with enough power. We had a lot of trouble finding the appropriate specifications for our exact sensor, but most of the ones we could find suggested that the sensor should work with 3 volts or less. We supplied the power from the Arduino's 3.7v supply, thinking that it would be plenty. When we finally did find the specs for our sensor, we found out that we needed at least 4 volts. A 9v battery was easily accessible, so we slapped that sucker in to the circuit, tied our grounds together and moved on.
Second, we were not wiring the sensor into the Arduino correctly. Our initial understanding of the sensor's output was that the signal would switch between the input voltage and ground. With this in mind, we wired the sensors output line straight into the Arduino. This worked in our test runs at very low speed, but anything over one rotation per second and we didn't get a consistent switch. As it turned out, the sensor actually switches between float and ground. To fix our sensing issues, all we needed was a 1KΩ pull-up resistor between the supply voltage and the output pin - this change is reflected in our circuit diagram on the Design tab.
Two LED sets
Although more apparent in the videos than seeing the prototype working in-person, having LED's on only one half of the wheel causes the display to blink while spinning. The problem is that from the time that the display moves from one 180 degree arc of the wheel--in other words, one half of the wheel--to the other, the first half cannot be lit up until the display makes its way back around. So to fix this, if the wheel had two sets of LED's directly across from each other, the image would be much more persistent and eliminate any blinking.
A possible improvement that many testers have asked for is the ability to display the bike's current speed in the wheel itself. This is possible, but would require a fairly intensive coding effort to allow the Arduino to generate characters for display without the aid of a full size computer.
Several people have also mentioned that the system could act as a replacement for a standard bike computer -- reporting speed, distance, pace and other valuable information to the rider. Because the controller is already outfitted with a wireless chip, we could even design a display to mount to the bike's handlebars that would show this information live, as well as allow the rider to change designs on the fly. We already have a partial implementation of features that allow the user to see the current speed and distance travelled if he is in range of a computer with an XBee transceiver.
Generate self-reliant power
In theory, having batteries attached to a mechanism that constantly runs off of an independent energy source is redundant and inconvenient. Ideally, we could set it up so that the device pulls power from the pedals/spinning of the wheel and stores the energy to keep a charge.