light in a box.
chroma is a simple box. It lights up when you want it to. Whatever color you want, whenever you want.
chroma is an app controlled dual edge lit box; made possible by the edge lighting abilities of acrylic.
chroma costs under $25 and weighs just over 200g.
2 types of rainbow effects with speed controllers
manual color control
3 favourite color presets
completely self contained
Step 1: Supplies
to build your very own chroma, you will need these materials:
- 75x12 wood strip
- 20x8 wood strip
- 3mm thick A4 acrylic sheet example
- bluetooth LE (4.0) module (HM10) example
- 2600mAh portable phone power bank (keep the size in mind) example
- arduino nano
- usb cable for arduino
- 2x 8 LED neopixel sticks example
- sticky tack
- pva wood glue
- hot glue + gun
- other tools as needed
*all measurements are estimations
Step 2: Disassembling the Power Bank
First off, why would I be using a power bank instead of a real battery?
The reason I chose to use a power bank was because of the cost. They are just so extremely cheap! The cable, charging circuit and battery was a grand total of $5 including shipping (this wasn't even from china).
But the power bank itself isn't the smallest thing. To make it smaller I just unscrewed the little canister case it came in. And out popped a little lithium charging board with a single cell battery; awesome!
Step 3: Acrylic Enclosures
- cut 2 identical pieces of wood in the dimensions: 110x70x12
- cut 2 pieces of acrylic that are slightly larger than the pieces you cut before. This will require the use of a grinding cutting disc instead of a wood cutting disc. A grinding blade will stop the acrylic from cracking when cut.
- use the wood glue around the edge of the acrylic to glue it to the wood piece, making sure it covers the whole side.
- clamp them together until the glue dries
- sand down the edges of the acrylic to the wood.
you should now have what is shown in the last picture of this step.
Step 4: Wooden Side Pieces
the wooden side pieces go between the two pieces you made in the previous step. These side pieces then need to be glued down to 1 piece (not both of them) so they resemble the second picture (do not put a piece on the back yet). After the glue had dried you can then sand it back so the bottom piece.
Step 5: The Lights
possibly the best step of all, installing the lights. This involves soldering some short wires from 1 of the neopixel sticks. These connections will need to be made from first stick's the GND and 5V (or VIN) to the second's GND and 5V respectively; then the data OUT to the data IN. Now on the first neopixel stick you need to just solder some male headers to them.
If you know what you are doing then feel free to go ahead and connect the lights up to an Arduino and run some test code to see the lights flash.
After that is done, use hot glue to hold down the first led stick in the middle of the front of the piece you made previously, as close as possible to the front wood divider (see the third picture).
The next part is slightly tricky as it requires a bit of guessing.
What you will be doing is re-creating what you just did but on the other piece of acrylic and wood with the second, unglued neopixel stick. What I did was measure the width of the wood strip and then make a marking line on the second piece of acrylic and wood. I then guessed the middle position of the piece and glued the stick on.
Step 6: Wooden Stoppers
A small addition before the nearing completion is 2 small pieces of wood that act as stoppers for the door on the back chroma. These can be any width, but need to be the the same or less the distance away from the edge as your wood width is.
For example, if you are using 12mm wide wood strips the stoppers will need to be less than 12cm away from the edge so that the piece that is inserted doesn't inset into the box.
Step 7: Circuitry
This is a really simple circuit. First connect power to the BLE module and the first neopixel stick. Then connect the data IN from that neopixel stick to D9 on the Arduino Nano using a female -> female connector.
Now connect from the BLE module:
RX -> D10
TX -> D11
and that's the entire circuit!
Step 8: A Compact Box
To be so compact, chroma has to make use of the space available. This means making the use of all the space available. So this is the step that will show you just that, how to fit all this stuff into such a small space. The first thing that can be optimised is the USB cable.
Mine was 1m at the start but that simply cannot fit in the space provided. It is best to get a small cable to start with or if you are like me then you just cut off the middle and solder the connections together you can get a shorter cable in no time!
Next the challenge was to fit everything into the box. These were the guidelines:
- The box must be able to be closed on all sides
- The battery must be accessible and easily taken out for charging
- everything must fit inside the box (obviously)
- Nothing should short something else
So taking all this into account I came up with (after much trial and error) the design shown in the 5th picture (sorry for the blurry picture). There needs to be a spot at the front of chroma to allow for the neopixel stick to fit in properly. There is also a piece of card (in this case bubble wrap card) to seperate the Arduino from the neopixel sticks so they don't short each other.
The bluetooth module is hidden inside the Arduino nano's header pins. and when the battery is taken out it pulls the charging circuit out with the usb cable. It is a very cool design if I do say so myself.
Then for transport and times sake, I just put a rubber band around the box to hold the top on while it wasn't glued.
Step 9: Glueing It Together
Finally! the last step in the sticky process of glueing. This is a simple step really, just make sure to align the top to the side pieces as best you can (sanding is always required) and use wood glue to glue it all down.
Make sure to clamp the piece together to allow for a clean stick, or even just use something heavy and put it on top of the box while it dries.
Step 10: The Back Door
The back door (in this case) is just a wood strip that is slightly smaller (lengthways) than the hole it needs to fit in. Just cut the piece from the same wood as the side strips. It should fit snugly (but not too tightly) in the back hole that has been created.
Step 11: Finishing Touches
- To add stability to the back door and secure it in add some sticky tack on the wood pieces holding it from going in.
- Sand down the edge until they are all smooth, crisp and sharp.
Thats it for the hardware side of things.
Step 12: The Code and App Configuration
The code for the Arduino is available here:
Requires the SoftwareSerial and Neopixel libraries. Both are available for download in the Arduino library manager.
You will be presented with two types of controllers - sliders and buttons. These all send "codes" as text that the Arduino then deciphers and then does something. This is the setup I have (and what the code I provided supports):
The way this list will works is: Title | Type (S/B) | Subtitle | Code | Min | Max (min&max only for sliders)
RED | B | n/a | 876
GREEN | B | n/a | 877
BLUE | B | n/a | 878
RAINBOW | B | Full | 1
RAINBOW | B | Individual | 2
Effect Speed | S | Affects: Rainbow | Slider | 1 | 1000
MANUAL COLORS | B | On/Off | 55
Red | S | Manual | RedSlider | 0 | 255
Green | S | Manual | GreenSlider | 0 | 255
Blue | S | Manual | BlueSlider | 0 | 255
The way you use these controls is this: The first 3 buttons are the master colors. They will be displayed when there is no effect currently being shown; these can be changed in the code to other colors. The rainbow effects are as the name implies; with their speed chosen by the next slider, the effect speed. The 4th last button, manual colors allows for manual color choosing, with the color being affected by the R,G and B sliders below it. Manual colors will override the master color until you tap it again. It is in a sense a toggle switch instead of a momentary switch.
Step 13: All Done
That's it, have fun with your coolest new desk toy, Chroma!
Be sure to leave an "I made it" comment below with a picture of yours and also make sure to vote for this instructable in the contests.