Inspired by Loek Vellkoop, I recently chopped up a scrap kid’s bike to see all the materials I could reuse from it. One of the elements that really struck me was the wheel rim after I had taken all the spokes out.
Solid, made from steel, and perforated with precisely spaced holes, I thought it would be cool to light it up with LEDs as an accent lamp, or just something cool to trip out on. So, that’s what I did, and I’m proud to say that I whipped it together in an afternoon while my family was out shopping.
These are Neopixel-compatible addressable LEDs. I was introduced to them by the amazing Scott McIndoe who used them on a similar LED ring project, a flexible infinity mirror. For this project, with the size of the rim, I only used 14 of them. I could have doubled up and used all the holes in the rim, but I only used half. I figure I can use the rest on the second rim.
Small Arduino Board
I ended up using an Adafruit Pro Trinket 5v, which works great and fits inside the rim. But in full disclosure, I was using an Adafruit M0 board first, which also worked fine and is even smaller, but I somehow fried it after soldering and desoldering connections so many times. This code really should work with any common Arduino board though you may need to change the Neopixel output pin in the code to accommodate your board.
The hardest part of this whole project was figuring out a way to power it that I’d be happy with. I wanted it to be portable, so I needed an elegant way to cram a battery in rim. By using a small LiPo battery and this board, I’m able to fit a battery into the profile of the rim that I can recharge over the Trinket’s micro USB port. So if battery power gets low, I can just connect the whole rim up to a USB power adapter or power bank and load it back up.
The battery back pack also has an easy way to wire in a power switch. Any switch would do, but I had this black, pre-wired one from Adafruit that worked out nicely.
For removing the spokes from the wheel. Be sure to wear safety glasses too.
For making the existing spoke holes wide enough to fit the lights.
Holds the lights in place and mounts the electronics in the rim. I used black glue sticks (https://amzn.to/2JvKuYv) to match the color I painted my rim.
Spray paint (optional)
If your rim isn’t a color you like. I recommend roughing up the existing paint on the rim before you paint over it. This will help the new paint stick better.
Deburring Tool (optional)
Helps to smooth off the jagged bits from the holes you made bigger.
Soldering Iron, solder, wire, etc.
Just, you know, soldering stuff.
Helping hands (optional)
With these tiny boards and connections, a nice helping hands tool is useful. I enjoy these ones made by RaptorLoc.
Pop a tire off an old bike. The front tire is the easiest to remove. In this particular case I used a kid’s bike which had a smaller rim that worked out nicely. I’m not sure if this would look as cool with a larger rim, but maybe.
Using high leverage cutters (don’t forget the safety glasses) I snipped my way through all the spokes and removed the tire, tube and lining.
Using a step bit in a drill or impact driver, make the holes you want to use in the rim big enough to fit each LED.
For this experiment I only used half the rim holes, alternating every other one. With my rim size, I found this spaced the LEDs out just enough to take out the slack in the LED cable. That said, using all the spoke holes would have worked too. It just means more lights, and more power, which cuts down on battery life.
As far as hole size goes, I had the lights handy to make sure I got each hole wide enough. On my first pass I made the holes just big enough for the tip of each light to poke through. But, then I thought it might look cooler to have more of each light reach through, so I made the holes a little bigger.
Either way, just know that you don’t need to get the sizing perfect. Really it’s the hot glue that holds each light in place, not pressure.
After getting the holes the right size, I used a deburring tool to smooth off the jagged pieces left behind.
This is an optional step, but my rim was Pepto-pink and I thought rainbow lights with a pink rim just wasn’t my style (though, I do rock a Hello Kitty car). So, I roughed up the gloss of the rim with a little sandpaper and hit it with some matte black primer. You can do what you like.
In case you missed my earlier confession, I had some trial and error getting a combo of board and code that I liked. My first attempt used a Trinket M0 board wired up to a removable 18650 in a battery holder. This code will work for that combo too, but I found the 18650 battery solution too bulky. When I ditched it for a small LiPo pack and a recharging board, I somehow fried the Trinket in the process (a shame, because I love those boards).
Fortunately I had some Trinket Pro (5v) boards handy. Overkill for this project, but they fit right inside the rim with no problem.
In the diagram, you can see how I wired it to the LED lights and the battery charger breakout. Even though the little battery board is designed to stack on the Trinket, I wired it up to keep the profile low and keep it and the battery in a separate section of the rim. This way, it’s more like a chain of electronics, than a stack. Be sure to use enough wire so that each part of the chain can fit in a different section of the rim.
Also, note that I wired up a little tactile switch to the battery board. This lets you turn the battery on and off and the board has a nice, built-in spot for it. The only trick is that you have to scratch away a little copper trace on the battery charging board if you want to make use of the switch feature. So, don’t forget to do that.
My choice to use pin 4 on the Pro Trinket came from my first attempt with the M0, which uses that pin specifically for LEDs. But really, there’s nothing special about that pin on the Pro Trinket, so use whichever one you want, just remember to make the code match.
I’m using the FastLED DemoReel100 example sketch (https://github.com/FastLED/FastLED/blob/master/examples/DemoReel100/DemoReel100.ino) to make this happen. The code is stock except that I changed the data pin from 3 to 4. My version with this slight modification is included as a file here.
You’ll need to add the FastLED library to your Arduino software by going to Sketch>Include Library>Manage Libraries and then search for “FastLED”. Then, click Install to install the library.
You can find this same code in the FastLED Examples folder that’s installed with the Library, but as I said, you’ll need to make sure the code defines the data pin to 4 (or whatever pin you connected your LED data wire to).
And play around with it. You can comment out parts of the demo to have it skip sections. You can make the delay between demo modes longer or shorter. You can increase or decrease the number of LEDs on the strand. Lot’s to tweak.
Also, in order to add the Pro Trinket (or any Adafruit Arduino board) to your Arduino IDE software, you’ll need to tweak a setting to have the Adafruit board library included. It takes five seconds and the instructions to do that are here.
I think that covers it, but if I missed something leave me a comment.
With the code uploaded, your battery connected, and the power switched on, you should see your lights all blinky and awesome. If not, time to troubleshoot.
If it checks out, time to glue the LEDs into their holes, starting with the LED closest to your board.
Before gluing, you could carefully count out exactly how many LEDs you need from the strip and cut away the remaining LEDs. Knowing me, I’d miscount, so I glued them in first before cutting away the extra.
I used hot glue to place each LED in each hole, keeping an eye on consistent depth and angle. It takes a minute for the hot glue to set each time, so be patient.
Also, for light projects like this I typically like to use black hot glue. It helps create a light-tight seal and generally looks less like a hot glue craft project. That said, it’s messy stuff, and in the end I found that the casing around these LEDs let a lot of light out of the back anyway, so it doesn’t really matter. Do what works for you.
When you’re ready, use hot glue to carefully mount the boards, button and battery inside the well of the rim in the space between the LEDs.
Be sure to place a nice, fat pillow of hot glue between any bare electronics and the rim, since the metal is conductive and can short out the project if it comes in direct contact.
Also, make sure to leave the micro USB port of the Pro Trinket exposed and accessible to that you can charge the battery up later. To ensure a good fit, I recommend having a cord already in the USB port when you glue it in, just to make sure you have enough clearance.
If you screw up and glue things in wrong, you can always use a little Isopropyl alcohol solution to undo the hot glue bond. Just be careful not to get alcohol on your Trinket’s chip, or it may fry.
The coolest thing about using bike rims for a project like this is that unless you scrapped a unicycle, you probably have a second one to play with. I’m already planning my second build using the other rim. I think I’ll use more lights and tweak the code for a different effect.
If you build your own version of this, I’d love to hear about it. Post about it in the comments or send me a message.