This i'ble is in constant update. If you're planning on doing something don't be afraid to drop a question.
I've always wanted a POV for my bicycle, specially a full colour POV capable of displaying text, images and small animations!
There are some cool POVs commercially available.
- SpokePOV from adafruit industries (and its i'ble)
- Monkeylectric's m132s
- Monkeylectric's recentely announced m464q
Unfortunately, the SpokePOV is only one colour, and the m132s, as I understand, doesn't have the ability to display images. Besides, I think these are a little too expensive for something that I will not use often.
So I though I would try to make my own with components I already had around. This way I don't have to spend any more money to try and play with a bicycle POV.
This project features:
- 16 RGB (Red+Green+Blue) Light Emitting Diodes;
- Arduino compatibility (Suposedely, I'll have to check that later);
- Single layer printed circuit board, suitable for home fab;
- All through hole componentes, suitable for beginners;
- Hall effect sensor, for image synchronization;
- Least number of componentes possible;
- Unfortunately, only one side of the wheel is illuminated (check update).
- Fits 26" wheels, I haven't had opportunity to try it in 20" and 24" wheels.
Update: I updated the board, so you can use only one board for lighting both sides of the wheel! But it won't work correctly in both sides for text...
Step 1: Before starting
- Solder electronics
- Make printed circuits boards
- Understand basic principles of electronics
- Know a little about microcontrollers
Tools
You'll need the basic tools to:
- Make PCB
- Work with and solder electronics
- Hardware and software to program the microcontroller
- 1x ATMega328p / ATMega168 microcontroller - ~4.3$
- 1x TLC5940 / TLC5941, 16 PWM Ouput LED driver - ~4.29$
- 16x Superflux common cathode RGB LEDs - ~13$
- 1x A3213 - 1.5$
- 3x PN2222, NPN transistors - cents
- Assorted resistors, capacitors, tact switches and connectors (check schematic and board layout) - another few cents
Download all the resources
Don't forget to download the schematic and board layout for Eagle CAD, and the source code for the firmware.
attention: TobyTetzi noticed that he download '.tmp' files instead of the .brd and .sch files. It also happened to me. I don't understand why.
I changed back to the original name and it seems to solve it.
rgb_pov_final.brd36 KB
rgb_pov_double_leds.sch278 KB
rgb_pov_final.sch275 KB
bike_pov.zip28 KB
POV_eagle_files.zip146 KBStep 2: Working principle
Well... I'm going to light one colour at a time.
Imagine one line of the image in the wheel. This line is composed by red, green and blue points. These points will light up, in the same instant, one colour at a time. This alternation between the three colours is so fast, that you seem to see only one line.
If you alternate between all these colours, you won't see three lines of different colours, you'll see white.
To control the width of this line in the wheel, we only need to control how many times this line is repeated.
Since the driver IC sinks the LEDs, this method requires common cathod RGB LEDs.
I used cheap 'Piranha'/'Superflux' RGB LEDs from China.
Step 3: Make the printed circuit board
If you don't know how to make a PCB, you can follow the ton of i'bles that are available.
There are a few methods of making PCBs, and many make it a little different within the same method.
I know at least:
- Photoresist - The method that I use. I can achieve great level of detail;
- Tonner transfer - You'll have to use a laser printer;
- Blue thingy transfer (don't remember the name) - I really don't like the process and the detail I achieve.
Resuming all the steps I took:
1 - Print the board layout in a transparency. In eagle go to: ULP -> CAMtoPrint;
2 - Prepare the copper and apply photoresist, like Positiv 20;
3 - Expose the copper with photoresist through the transparency;
4 - Develop the photoresist;
5 - Check for errors;
6 - Etch the board;
7 - Cut the board;
8 - Drill.
Step 4: Solder the components
Follow the schematic and board layout to populate the board.
I suggest you to start with the microcontroller related stuff, and test it first.
Don't forget to solder the jumper wires!
Then solder all the LEDs and TLC5940 and all the remaining components.
Properly secure the batteries, otherwise it'll fly away! (check the video)
Since I didn't have the battery holders that I placed in the board layout, I had to use another kind of holder.
Step 5: The TLC5940 driver
Cool projects that use this integrated circuit:
I will explain how this IC works and how to interface with it. Later... someday I hope.
Maximum LED current
You can limit the current that flows through the LEDs by specifying the value of a single resistor.to c
To calculate the resistor value, you need to decide the maximum value for the current on the LEDs (I_max).
R_iref = 39 / I_max
I used a 2.2k Ohm resistor, which limits the current to 17,7mA.
Step 6: Program the microcontroller with the firmware
I use the USBtinyISP by ladyada.
I also designed this POV to be compatible with the Arduino. You just have to use the FTDI USB-TTL232 cable. But don't take my word for it, test it! (because I didn't).
There is also a TLC5940 library for the arduino by Alex Leone
Currently in this version of firmware you can only display one image, but you can easily tweak it. Also, the image data is read from program memory.
In the future I plan to try a SPI EEPROM connected to the serial port. This way I am able to store tons of images and animations!
In this version there is also a small section of feedback control loop, to synchronize the image to the velocity of the wheel.
How much space do I need for my image?
Depends on the level of detail you desire. With level of detail, I mean the number of divisions of your wheel.
If want to use 100 divisions, you'll divide the circle in lines with 3.6 deg. The greater the number of divisions, the narrower the lines.
For one image of 100 lines:
192 bits for each colour * 3 colours for line = 576 bits / 72 bytes for each line
72 bytes/line * 100 lines = 7200 bytes/image, ~7kBytes/image
Step 7: Install it on the wheel
Now we will install the POV in the wheel.
I wish this POV could be installed in any kind of wheel. Specialy in 20", 24" and 26" wheels. Unfortunately, while I designing the board I didn't have access to any other wheel other than 26".
If you happen to try this POV in any other size, please tell me.
To install the POV you'll need:
- Pieces of foam or rubber;
- Zip-ties or any kind of string
- Magnets;
- Any other stuff you may find useful.
Secure it to the spokes, making sure the LEDs are perpendicular in the wheel.
Hall effect sensor
If you use a cable extension for the sensor as I did, you can place the sensor and the magnet in any place you seem fit.
Make sure that the magnet is in range of the sensor. It is important if you want to display an image.
Step 8: A colourful wheel!
I can now draw images in my wheels, small animations and cool effects.
In the future I hope to make some piece of software that transforms an image into the data matrix that I use in the firmware. Also further develop some kind of interface to the computer and add some kind of memory to store the images and animations.
Update: I now duplicated the LEDs, thus making it visible in both sides of the wheel! This only works when you can mirror the image, i.e. not suitable for text.
Remember, if you feel like to tweak, contribute or develop for this project, you can do it! As long as you distribute it in the same conditions.
Soon... Some videos and some more photos.




















































Visit Our Store »
Go Pro Today »




Estou tendo algums problemas com o codigo! o arquivo bike_pov.zip contem as libraries utilizadas no codigo,mas qual destes arquivo realmente tem o codigo utilizado na gravação? eu tente o arquivo .c mas ele apresenta erros!
''SENSOR_DDR' Was Not Declared in this scope''
Obrigado pela ajuda!
in order of keeping the image upright perhaps at any given speed. or to adjust image with speed.
Althought I have no idea how that would be accomplished :P
okay well an actual improvement might be....
having a contact on the wheel like a copper coated contact disk, so if its 3 wires 3 contact points near the axle (example would be just like slot cars) that way the led light could be the only thing attached to the spokes not big heavy battery packs... if that makes sense. I figure if you had the circuit board on the wheel an it lost contact for a half second it may reset the board or something so just the Led's should be alright.
Also, you are missing a vital point here.., you cannot simply extrapolate based on what you already know. For instance, at those speeds, it is possible that the inherent latency in the system would not allow for the display to refresh fast enough to display the image when you are going 60mph+ for example.
Also, you have no idea whether or not the hall effect sensor will be able to give you accurate reliable readings at those speeds.
I don't have Eagle.
Great! Thanks!
Thanks again!
I truly like to make POV as you did.
I already have AVR ATM8535. But I still don't understand the concept of using sensor in POV circuit. On your project what is the function of hall sensor and to what uC pin do feed it. Please email to: suwarnokaraba@gmail.com.
I am from Indonesia.
Please tell me what program you use to compose and generate color image file. Hex you register in microcontroller ATMega328p / ATMEGA168 microcontroller from RGBike POV project.
D. Sandu by comraex@yahoo.com
Thanks!
I want to mount these to the rim of a car wheel
Would the much high RPM's of the car rim cause problems?
Im not sure if the processor and hall sensor would be able to function fast enough to properly control the LEDs when the car is doing 30 mph or faster.
Maybe some how dividing the input variable of the hall by half would give the microprocessor more breathing room?
i know little about the microprocessor, would it be capable of keeping up with a car travelling 50 - 70 mph?
thanks!
any help would be highly appreciated
-Noah
There is a way to extract from the files! weee
use the exp-project-lbr.ulp
1. What are the values for R5-R7?
2. Can you use 2N2222 instead of PN2222?
JanD
2. You can, if the pinout is the same.
Yes, try to edit it in the rich editor, and see if it does work better
Hello Hazard,
I agree with the others, good project! It's clear that your experience extends well beyond this work, so whatever time you can spare here, I'm hoping to get your valuable input. If it's easier, bruce323g@gmail.com, USA 541-231-1101.
My niece and her boyfriend are doing this to learn some electronics, and I'm helping. This isn't 100% up-to-date but close: http://home.comcast.net/~bruce323/spokes/ . To keep costs low and to get low-level experience, they actually hand-wired onto a 100mil plated proto board that I had available. Lots of work, may turn out to have been a mistake, maybe next time we'll learn to do some etching at home, but anyway they're near hardware completion.
I'm sorry this is so long but I have the following ....(drum roll) ...
"TOP TEN LIST OF QUESTIONS ABOUT RGBIKE":
#10. Can we eliminate the JP3 RXD/TXD connector. Or if you used it productively, how; and is there any issue with it loading RST# at the wrong time and causing debugwire to fail.
#9. Briefly, what's the purpose for switches U$17 and U$24.
#8. For T1-3 we went with P-channel FETs, so we'll modify the code to invert drive polarity. But do you know, when the 328P comes out of reset, are its IO's (hopefully) still tri-state, or are they driven (I hope not low) until programmed otherwise.
#7. We're using 32 LEDs and two cascaded TLC drivers but we haven't analyzed processor bandwidth .... do you know whether your 16 LED design has much bandwidth to spare, or are we almost certainly hosed? We're running ATMega328 also at 20MHz.
#6. For U$18 we went with a crystal, and the external caps as shown on the schematic, but I'm nervous about mechanical, and from the .brd file it looks like you went with a resonator. Is the resonator tolerance adequate and are you inclined to think we should change to the resonator?
#5. When we bought the TLC parts, 5940's weren't available so we're using 5941's. Two differences I remember about 5941's: a) lower current drive, we'll deal with it; b) they don't have EEPROM for dot correction. Did you use the 5940 EEPROM for dot correction and would you expect we MIGHT see problems if we don't? Or maybe we'll make it happen with the 328P's EEPROM somehow.
#4. Do you have experience w/ how low a supply voltage your design can typically handle? (We're using 4 series NiMH's and we have more current load with our 32 LEDs).
#3. Your 16 LEDs are on 350 mil centers; our 32 LEDs (co-linear, same side of the board) are on 300 mil centers to fit the 100 mil proto board. How did you decide on the image's "aspect ratio", so to speak -- (1) distance between the LEDs, vs (2) rotational angle for updating the array. This may not be a clear question but if you have comments (are we hosed?), pls let us know.
#2. If we decided to go with your design as it is, would you ever consider supplying bare boards to folks like us for $$?
AND ....... (drum roll.... ) ...... the #1 question on the TOP TEN LIST ......... Yow, should we be paying you a consulting fee for all this?
Thanks for some or all answers!!!!
Hi! Sorry for the late reply. Here it goes
10 - Supposedly JP3 is pin compatible with FTDI usb-rs232 cable for using with the Arduino and bootloader. Never tried it myself.
I have never used debugwire. Check the datasheet for more information and typical schematic for using debugwire.
9 - Future expansions, like alternating between patterns and such.
8 - Detailed information can be found in the datasheet. Can't remember for sure from the top of my head.
7 - From my calculations when I did this project, I think we can connect 2 TLCs. But not much more :D
6 - I don't know if the crystal can be damaged. Other than that, you can use whatever :) Drift in frequency doesn't really matter in this application
5 - I did not use dot correction.
4 - How low? Depends on the TLC, the LEDs, and the voltage for the micro's running frequency. See the datasheets for the TLC and 328.
I bet it must be over 4V for the 328 to run at 20Mhz. (sometimes it can work with lower voltage than what they say)
3 - I am trying to understand the question..
I took no considerations on that matter :P But I think it worked just fine :D
2 - Sorry, but no. This project is a good exercise and works fine for a toy/hobby. But is not reliable for a final product.
1 - Yes please. Come buy me a beer or two, whenever you come to Portugal
Thanks very much!
About answer#2: I understand. We're sure not thinking of a product, we're just making one for our own use. I was only talking about 2 or 3 bare boards, so then we could make that many, but nothing like a product.
About answer#1: None of us in my family have ever been to Portugal, but it just so happens that my wife and son are going to Lisbon in a few weeks. If you wanted, you could send me your contact info in a Private Message, & they might treat you!