Whether you're going to that thing in the desert, or just keeping safe and visible around town, you can definitely find an excuse to light some stuff up! This tutorial is going to focus on LED strip lights, but I'll start with a bunch of options you might not be aware of. Then, we'll cover:
- Choosing your LED strip
- Supplying power and (optionally) a smart controller
- Designing your system
- Useful tools
This tutorial is for general lighting purposes; if you're building a huge LED installation or matrix, you'll probably need a more specific tutorial for that.
This is a work in progress, gathered from years of experience teaching workshops at Noisebridge and lighting my own art. Here are some references while I build it out, which use different microcontrollers with Arduino code:
- glowHacker – Arduino controller (LightBlue Bean), 12V non-addressable LED strip, transistors, various circuit designs.
- tinyGlow – ATtiny85-based Arduino bike lights with 5V NeoPixels.
- NeoPixel LED basics – From my "Hackster 101" series; uses an Arduino Uno or 101.
- Modulo and If Statements – Tips for programming NeoPixel animations in Arduino; uses a DigiSpark controller.
- Merlin Armor – Light-up armor project, uses a Digispark and later a Teensy controller, running Arduino.
- Portable Thundercloud – Adafruit Feather running Arduino code, with NeoPixel string lights.
- There are also a ton more tutorials in the Bikes category on Hackster!
- Zonker Harris took one of my workshops and later made this cool IKEA lamp mod and tutorial – with ATtiny85 and NeoPixels, lots of detail :)
In case you missed it, all of the tutorials I linked directly use Arduino, so the code and controllers are interchangeable, although the process of programming them may vary.
Sweet, let's jump in!
- Strips – These typically come in 5m lengths. NeoPixels (WS2812s), DotStars (APA102s), or non-addressable LEDs (I'll call these "NALs") – see below for more.
- String lights
- Individual units
- Electroluminescent devices:
- EL wire
- EL tape
- EL panel
- Basic rope lights
For the purposes of this tutorial, we'll focus on LED strips, particularly NALs and WS2812s. (I've used DotStars once or twice, but I prefer the others.)
Commercial 12V RGB strip ("NALs"). Generally available on Amazon and other outlets, these will run you about $15-20 for a 5m strip. You can chain them together if you have a strong enough power source – the full 5m may take up to 2 amps. These run on 12 volts, but you can also run them off of a 9V battery with a barrel-jack attachment.
These LEDs are not individually addressable: the whole strip will be a single color at a time. They generally come with an infrared remote control, which allows you to change the color, or choose a pattern (cycling through different colors) and control the speed. Since it's infrared, you need line-of-sight to use the remote, but it makes your bike easy to spot in a crowded area!
Different brands may use different remotes. But if your group all has one type of controller, you can easily change each other's bikes to match your own, for infinite #squadgoals style points.
You can also get rid of the built-in controller and either power the LED strips directly, or create your own system. I'll go into Arduino-controlled systems below.
They have 4 contacts: usually +12v and B, G, R (in varying order) for blue, green, and red. The nice thing is that if you're only using one color, or two adjacent ones, you only have to run two wires! This makes your life SO MUCH BETTER.
You can get these in non-coated versions, or with a silicone coating on top that makes them waterproof. They also usually have a weak adhesive backing. (You can buy replacement 3M backing, too.)
NeoPixels (WS2812s). "NeoPixels" is the name Adafruit uses to distribute these. They won't run on power alone – you have to add your own controller – but that's pretty easy if you're familiar with Arduino. (I've linked a couple of tutorials below.)
These guys run on 5 volts. They have 3 contacts: GND, Data, and +5V. If you bought some from a different brand than AdaFruit, check which line is which. There are some special power considerations you'll want to read. You can power your NeoPixel strip separately from the controller, which can come in handy.
NeoPixels are individually addressable, so you can program your own per-pixel animations, leading to some pretty cool effects. Some of the tutorials listed above have animation programming examples, as does the NeoPixel library for Arduino.
You can get them on a black or white flexible PCB strip, to match your aesthetic :)
Their "waterproof" version doesn't have silicone coating, but rather the bare strip is run through a clear silicone sleeve. I think it's much less aesthetically pleasing, and you have to attach it with zip ties, but it works!
- Need waterproof? This depends on whether you're lighting up an indoor space, a vehicle, a wearable, or "other" (for example, an indoor bar still needs waterproof lighting).
- Silicone sleeve vs. on-strip clear flexible coating
- Check your strips to see how many LEDs per meter you get. More LEDs per meter = more power, but a smoother effect.
Voltage: Some options include...
- 5v – run off a rechargeable phone power bank
- 12v – run off a rechargeable power bank or drill battery, or a 12v lamp battery, or an 8-pack of AA batteries.
- 9v – you can run most 12v strip lights off of a 9v battery; this can be easier to replace in the field.
- If you're doing custom-programmed lights, make sure you pick a compatible power source. (You can control higher-powered lights from a controller through a transistor – see below.)
- Remote: Many commercially-available, 12V strips come with an infrared remote control. These include selectable colors and animations.
- Power switch: Sometimes, you just want a basic on/off to control a static color pattern. And that's cool too.
- Programmed animations: If you want to run your own animations, grab a controller.
- Individually addressable? You'll need NeoPixels (or DotStars, which we aren't covering here).
- For indoor systems with NALs, you can simply use the 12v wall-plug power supply that comes with it.
- Disposable vs. rechargeable batteries?
- 5-volt rechargeable phone banks are super useful.
- You can generally use a 9v battery to run "12v" LED strips. They'll be a little dimmer, but at night, it doesn't really matter.
- ATtiny85 – Low profile.
- DigiSpark – An ATtiny85 holder board with some power regulation and broken-out pins. Convenient, but can't handle too many LEDs on your strip.
- Teensy – Lots of brainpower, a bunch of pins.
- Adafruit Trinket – Pretty small, comes in 3.3V and 5V logic versions. New (M0) Trinkets (and a few other Adafruit boards) can be programmed in CircuitPython, which could be more convenient! I'll be exploring this in future.
- Adafruit Feather – A bit more sizable, but useful if you have it lying around. Lots of "Feather wings" are available, to provide extra functionality.
- For vehicles/wearables, I do not recommend WiFi-dependent controllers like the Particle Photon, unless you do the extra legwork to make them WiFi-independent. For home installations, the Photon is great because you can control it from anywhere!
- Handlebars – One row of LED strips typically won't be bright or directed enough to use as a headlight, but you can use it here for a cool effect. Add a headlamp for safety.
- Ground-effect lighting – I LOVE putting LEDs on the bottom of tubes, bike racks, and so forth! It diffuses the light and makes it look like you're riding a hoverbike... So cyberpunk. :)
- Forks – Careful where you put the wires for your front fork. Be sure to use zip ties to attach here; you don't want strays getting into your wheels!
- Bike rack
- Wrapped around tubes – IMO, this looks kinda tacky, but if you're going for maximum visibility, it works.
Inflection points (esp. for wearables): Be aware that solder joints get stressed from too much bending. Plan and reinforce accordingly. You may want to add a length of speaker wire.
Power placement: My favorite spots are...
- Under seat – You can tuck 2 cylindrical 5v power banks in there, secured with zip ties or a 3D-printed enclosure. Same for 9v batteries. Backups are always good!
- Bottle in bottle cage – Easily removed if you don't want thieves getting at your battery.
Color placement: Red on the back, blue on the front? Sounds good to me. You can do this by programming NeoPixels, or splicing together NALs. Note that, as your power drains, the low-power (red) ones will stay on longest.
Animation flow: If you want a "flowing" animation from front to back, or top to bottom, arrange the lights to make the programming easy.
- Power switch? Where? This may depend on whether you'll be removing your battery completely or leaving it attached to the bike. Under the front of the seat works well, if your batteries are under there too.
- Transistors? If you're switching a 12v source with a 3.3v or 5v controller, make sure you know in advance how to wire up your transistors. My glowHacker tutorial has a solid rundown with some examples.
- Bridge colors? If using NALs, how will you get the colors you want?
- Splits and joins: These are a pain to work out on-the-fly; design it beforehand.
- Insulate joints from metal frame
- Strain relief
- Useful for insulation
- Reinforce with zip ties if you're taking it to the playa (or elsewhere hot)!
Wire: go for something flexible and resilient.
- Speaker wire: Tough and flexible, good for NALs, where you may only need two wires.
- Ribbon cable: Easy to get in long rolls, with 4+ wires connected. Keeps things tidy.
- Silicone-coated hookup wire: Good for wearables! The silicone coating is flexible and doesn't melt when you solder to the wires. So nice ✨
Transistors: Get ones that can handle the power you're shoving through! Some can't deal with 9-12v.
- Power switch?
- Mode switch?
- Button for switching programmed modes?
Soldering irons: Get a portable iron so it's easy to solder things or make repairs directly on the bike, especially when out in the field.
- Butane: Super useful, fast to heat up, but not plane-friendly.
- Battery: More portable, but a little more heavy/awkward.
- TS-100 or other USB: Somewhat spendy, but worth it! Often has built-in failsafes, like touch or movement sensors, to turn it off when idle.
Cutting wires: Cut your wires longer than expected, especially if you're splicing them together.
Cutting LED strips: Cut them down the middle of the copper contacts. Dense NAL strips will have a set of contacts every 2 inches (5cm). NeoPixel strips typically have a set of contacts between each pair of LEDs, so they can be used individually.
Stripping waterproof NALs: Once you get fairly practiced, you can peel the flexible circuitry away from the silicone coating and then snip off the coating about 4mm.
- Wire to wire – Strip wires 3mm, tin the exposed ends, slide heat shrink over one wire, lay them overlapping each other lengthwise, and solder.
- LED strip to strip – Use little wire snippets to connect tinned strip contacts together; use heat shrink or hot glue to cover the joint. Make sure the joint is fastened down to something, to prevent flexing.
- Wire to strip – Strip the wires, tin the strip contacts, and use a big piece of heat-shrink to cover the end of the strip; inject hot glue to shrink the tubing and seal the joint.
Building onto the frame: If you're comfortable with building directly on the bike, I think it's the easiest way to wind everything through and make it really robust. Otherwise, just make sure you attach everything well and measure twice before you cut!
- Built-in adhesive – If using NAL strips, you can peel off the paper backing and use the 3M adhesive for temporary placement.
- Hot glue – For NALs, I run beads of hot glue along each edge, filling in the gap between the cylindrical bike frame and the flat strip.
- Zip ties – Don't rely on adhesives if you're going to the desert!! Use a fastener, like zip ties. They aren't as pretty, but if you're using NeoPixels in a silicone tube, they're pretty much your only option anyway. Cut the ends down really far, and turn them so they don't snag you!
- Electrical tape – This also works for the NeoPixel strips, and blends in a little better than zip ties.
All right! That's it for now! Check back for more pics and videos, and stay safe (and fabulous!) out there. :)
...And just for reading to the end of the tutorial, here's a silly prize for you – my Micro:bit-powered EMOJI TAILLIGHT!