After watching the neon lights going popular, and their lighting effects, we thought of building an RGB tube that can be super cheap and affordable for many. In general, the mood lights available in the market are quite costly, especially for students who wish to work or play games in a nice ambience. Also, for developers like us, we rely on the computer most of the times, so how great it would be if we built a desktop application to control it and make it available.
What it does
It is an RGB blaze light of universal colours. You can choose any primary as well as the mixture of RGB values to make your own colour. Even the application contains many optimized colours in swatches so that you can choose from them, which makes your life easier.
How we built it
The whole project is basically of two parts, one hardware and the other the software. The hardware consists of the RGB addressable LEDs WS2812, and these LEDs can be addressed individually via a single wire data pin. Here we have used 51 numbers of them. An Arduino nano for controlling the LEDs and receiving the signals from the computer transmitted via the serial cable using the serial(UART) protocol. An old LED tube from scrap is used for the casing. An old PSU of a computer is used for powering the unit, and the 5v rail is used from the PSU. Coming to the software, it consists of the application that will be used to change the colour of the LEDs to the desired one. The application is built using the SWING framework in JAVA. By implementing the changeListener to the colourChooser, it returns the colour values in the form of 8bit RGB whenever the colour is changed. With a few String parsing and trimming, we send the values to the Arduino nano using the serial port(UART). Arduino nano contains a program that receives the data sent from the application and lights up the LEDs accordingly.
Challenges we ran into
Powering the LEDs were a bit tricky. Since each LED draws 60mA and we are using 51 numbers of it, so minimally, we have to power them with a 5v, 3A of power source, and we don't have that kind of source. So we hacked an old PSU from a computer because they can deliver a high amount of current, and was successful in running it. Another issue was setting up the UART communication between the Arduino and JAVA because the LEDs have to change the colour very fast. Hence, serial communication has to be very high speed. It was set to 2000000 bps and finally got it running correctly. Lastly, unable to visualize the sent data from the application to the Arduino directly. Thus it created a delay in debugging the project.
Accomplishments that we're proud of
First of all, starting the PSU by hacking it was a great thing. Without it, we would not be able to power our LEDs. Now we have a good power source too, that has 3.3v, 5v, 12v. Another accomplishment was bridging the communication between the Java application and the Arduino without having any easy debugging method. Finally, running the LEDs smoothly without any lag, and both the programs running stably without any miss of colouring.
What we learned
We learned to use an old PSU by simply connecting the reset wire(ours is green here) to the ground. We also learned how to set up communication between one hardware(here it is the computer) and the other(Arduino) using UART protocol. Now we can develop relatively better-embedded systems projects. We also learned a bit about advanced addressable LEDs.
What's next for Blaze
We will be making an inbuilt power converter inside the tube so that we can directly plug it into the AC mains. We will also be attaching Bluetooth to the LED tube and going wireless. And lastly, we will try integrating a music control into the application so that the colour and intensity of the LEDs can react with the change in music.