NeoPixel Party Bike - Update With Radio!
by TechnoChic in Circuits > LEDs
10518 Views, 116 Favorites, 0 Comments
NeoPixel Party Bike - Update With Radio!
My Epic Journey To A Very Blinky Bike ✨
Let me tell you the whole story about how I built my LED NeoPixel bike - the idea, the prototypes, the animations, the setbacks, the code - the everything.
This project inspired my "Creative LEDs" tutorial series. If you want to learn how to make your own custom LED animations and projects, start watching my series here.
Supplies
PROJECT SUPPLIES:
(some links earn commissions)
Neopixel LED Strip with Alligator Clip Connector: Adafruit, Newark
micro:bit Controller: Amazon, Newark
LiPo Batteries for micro:bit: **Double check polarity before buying! (get 500 mAh or more) *Be careful with Amazon batteries, many have the incorrect polarity for micro:bit Amazon, Newark - 500 mAh, Adafruit
LiPo Battery Charger: Amazon, Adafruit, Newark
micro:bit Cases: double-check the version before buying! Amazon, Newark
Other Accessories:
Watch the Video
A video is worth a thousand photos. Watch now and please subscribe!
Design Goals
As a designer, I was rarely inspired by LED projects because they can look tacky tacky tacky. But in the case of my local light-up bike rides, the whole point was to be big, bold, and flashy! So, making an LED bike was finally the right use case for me to explore NeoPixel LEDs as a creative material.
LED projects look cheap when the pixels aren't placed thoughtfully - like my LED fur vest - it's an off-the-shelf product and has large splotches of dark throughout the vest, so it doesn't look very good. I wanted to do better.
Since I like design with simple shapes and lines, I decided to configure my LED strips to create the classic silhouette of the bicycle frame - just in lights. I wanted to put in the work to make my project look purposeful, dynamic, and clean.
Choosing LEDs
I wanted to define my bike as a "pixel bike" by not diffusing the LEDs at all.
So for my LEDs, I chose 30 pixel-per-meter, waterproof NeoPixel strips. (Common pixel densities are 144, 60 and 30 pixels per meter). My bike will be viewed from far away, and I wanted each pixel to be perceived separately even at a distance. So having fewer pixels is a win-win-win: it’s cheaper to cover the bike, consumes less power, and gives me that "individual pixels" aesthetic.
Light Stick Fabrication
I started by measuring the bike and creating a map of the lengths in my notebook.
I made three continuous strips on each side of the bike, cutting two of the strips in the middle and making joints by soldering 3-wire cable in between pixels to continue the line in a new direction. (Labeled A, B, and C, in photo 2)
The plan was to connect each strip and its mirror image to the same pin on the Arduino, so I had 3 sets of “twin strips” of LEDs to control. (I also added one more strip on the handlebars, for a total of 4 microcontroller pins - more on that later.)
Using Rope Light Channels to Keep Everything Straight
I chose to attach the LED strips to rope light channels so that I could “draw” the straight lines of the bike silhouette even where my bike was curved. I placed the LEDs inside the channels and added some heat shrink to keep them in place.
Attach With Velcro Cable Ties
Then, I used velcro cable ties to attach the strips to the bike for a strong but removable connection.
LEDs in the Bike Wheels
I decided to make three sticks of LEDs in each wheel to add colorful light patterns inside. The strips needed to be viewable from both sides, so I connected 6 strips together - all to the same pin.
I connected all of the power, ground, and data wires from each stick, then connected them to the wires from the other sticks, and finally added one connector to plug into my microcontroller.
The 1st Arduino Controller, and Music Reactivity!
Natasha's LED Bike, Version 01
This was version 1 of this project (the Arduino Version).
I published a tutorial about it here.
I started with the examples from an Arduino library named “Fast LED” to get my pixels turned on and animating super fast, then added a number pad to let me select the animation, and put it all in a box powered by a USB power pack. I also experimented with making the animations sync to music - check out the link above for more!
Switching to Micro:bit
In Version 1, I used the Arduino Nano 33 IOT to communicate between the main controller and the wheels, but was having trouble getting the radios to stay connected.
BUT THEN…. I discovered that the micro:bit and MakeCode interface had a super simple and very reliable radio. I also knew that I wanted to teach my bike club how to create their own LED light setups, so block coding was the way to go to introduce absolute beginners to coding NeoPixels.
So, I switched the whole project over to micro:bit.
Building a New Controller for Micro:bit
I would need to redo the NeoPixel strip connections, so I used it as an opportunity to switch to connectors that were more durable and waterproof. I soldered all of the new connectors to a proto-board with resistors to smooth out any spikes in the data line. (This is recommended by the Adafruit NeoPixel uberguide.)
I wrapped all of the connectors in a huge piece of weather-resistant heat shrink to make one big durable connector. Then, I soldered all the connections to the Pimoroni pinbit breakout board which I chose for it’s small form factor. I also added a small 8-pixel NeoPixel stick to display the current animation so I could see what animation was playing while riding my bike.
Putting the New Controller Together
I laser cut a few pieces of acrylic to house the micro:bit, NeoPixel strip, breakout board, and my lipo battery. Plastic standoffs hold the pieces together, and I added a velcro loop to attach the whole assembly to the bike.
To my surprise, this controller is the part of the bike that I get asked about the most - the tiny LED stick illuminates the acrylic and it looks really cool from far away! I love how a design feature that I made for user feedback ended up being an aesthetic win too - what a happy accident!
A Tiny Pouch for the Electronics
I created a small pouch from tablecloth material and duct tape to give the electronics a place to live in each wheel.
Setting Up MakeCode for NeoPixels on Micro:bit
In Microsoft MakeCode, I named each of the 4 strips after the pin they were connected to and set them up as a NeoPixel strip with the number of LEDs on each. I also created ranges of LEDs - that’s helpful when you want to animate part of a strip separately from the rest.
Using Hue, Saturation, and Luminosity instead of the built-in color picker lets me set and change the color using the numerical hue from the color wheel, and playing with changing the luminosity lets me animate the brightness of the LEDs and make fades, comet, and wave type effects.
I also defined my favorite colors and made a color chart for my bike group so that we could explore creating animations that show the same color when we sync up. You can see this chart on my blog.
Just like in my tutorial series, I experimented with different animations and organized them into functions so that I could select the animation using the built-in micro:bit buttons on the controller. To learn more, check out my Creative LEDs video series.
My NeoPixel Helmet
I added one more piece to the puzzle - my helmet! I originally used my white helmet and added string NeoPixels inside each of the holes.
The helmet was also the perfect starter project that I could use to teach NeoPixels to my group, and to you (did you watch it yet? check out my tutorial series!). Wrapping a single pixel strip around the helmet was not only super simple, but it would help new coders understand the “rotate pixels” block as the pixels are literally in a circle!
What’s Next for Natasha’s LED Bike?
Next, I’d like to create a NeoPixel jacket or cape and maybe some more accessories too! And, I want to improve on the controller, potentially adding a button matrix to make a more robust interface for changing animations. And, I want to explore more interactive animations that better utilize the radio and make the bike into a true VU meter that reacts to music!
What else should I consider adding? Let me know below!
Join In!
If you’ve ever wanted to make something with LEDs I hope you’ll follow my
“Creative LEDs” tutorial series and make something awesome!
Creative LEDs is not just a series, it’s a community! Join the conversation on Discord to share what you’ve made and ask questions about how to get there.
See you there!
I want to keep going with this project, so please subscribe to follow along:
Please Subscribe on YOUTUBE :)
Thanks for reading about my project!
<3
Natasha