joi, 22 octombrie 2015

Glass covered swimming pool powered by Rainbowduinos


            Since this is my first post, i will post a short Youtube video to show  you the ending result of what it's all about. Many apologies  for the quality of the video: It was a test video, and i am not in the location to make another one. Soon a more detailed video and more pictures will be added to my blog.

       As you can see in this video, this is a swimming pool converted in a dance floor. It is all covered in blocks of glass each weighting  up to 98 kg, except for the stairs and the sides which weight less. Surrounding each block of glass we added a  RGB led strip with common anode. 
       For this project i used almost 450 meters of RGB strip , 2 Rainbowduinos , 64 power Mosfet transistors , 64 bipolar transistors ,a few capacitors and some resistors.
       The initial project was inspired  by (Lampduino - an 8x8 RGB Floor Lamp) project found on
        Since i have not found a way to connect 2 Colorduinos together and control them with the same interface, i used 2 Rainbowduino_v3.0, which  are  pin compatible with the Colorduinos. This little Atmegas 328 implementations are some excellent pieces of hardware. I wish i could say same the same thing about the software.

           As long as the code goes for this little devices, i have used this code. Initially i wanted to learn C# for the programming of the Colorduino, but since the internet provided me the tools and i was constrained by time  i decided to go with the Rainbowduinos instead of the Colorduinos.
           Programming the Rainbowduino was very easy, using the Arduino IDE. Since the Rainbowduino includes aleready the USB to Serial interface, there was no need to connect a TTL interface like i did on the Colorduino.
            On the PC side i used Pixel Invaders Software, which after many hours spent on the internet looking for a good way to control both Rainbowduinos from a unified software interface, i decided it was the best path to go. Unfortunately, this software is also having some lacks, but i overcome those with a small hack. The music mode, is very terrible. Honest. No matter how hard i tried to adjust the colors in this mode, it always gives me back some mixed and not clear RGB colors.  In the end, i ended up using a simple Music visualization software combined with Pixel Invaders Screen Capture mode. Basically, a Milkdrop like software is displaying some colors on the screen, and Pixel Invaders capture the screen, controlling the 2 Raibowduino after that pattern. Both are started by a simple batch file located on the desktop of the controlling PC. It was a "ugly hack" but it is doing the job great.
            Back to the Rainbowduinos, another problem  using this devices, was that each controller is capable of outputting a few miliamps of current on each output of its multiplexers.
            To understand this better i will post the simple schematic of a common anode RGB matrix compatible with the Rainbowduino ( or Colorduino):  

                                                            A common RGB matrix

            As we can see in this schematics, the Rainbowduino ( or the Colorduino) controls each RGB led by applying a small positive current (+)  to the common anode on the row the LED is located and negative (-) on the cathode of the corresponding  column of the LED.  
            To control a 12 volts RGB strip instead of each LED, we just need to increase the current of each output of the Rainbowduino. 
           Another thing to look out for was to keep the polarity of the output, for compatibility with the RGB strip which was  common anode led strip. The circuit  i came up with is the following: 

R1-R4 -10 Kohm
Q1 - Power P channel Mosfet (eg. IRF 9540)
Q2- generic NPN small power transistor (eg. BC171)
Q3- Power N channel Mosfet (eg. IRF 540)
Q4- Generic PNP Transistor ( eg . BC177)

              As you can see, i have drawn the schematics for both the part that increase a anode current (violet) and the part who increases the cathode current (blue). Now, we just need to multiply the violet 8 times and the blue 24 times. (for each controller).
             Each Rainbowduino (or Colorduino) has 8 anode outputs ( NPN transistor + P channel MOSFET)  and 24 cathode outputs (PNP transistor + N channel MOSFET). So that is a total of 32 MOSFET's and bipolar transistors for each controller. Think of this PCB's  as exoskeletons for the Rainbowduino's. 
             Normally , the plan was to design the PCB in Eagle, using double layer PCB, and SMD components, but due to the lack of  time, being a part time project,  i used prototype board and build this 2 PCB's. The PCB's were assembled using no schematics, because of the simplicity reasons. This is my first version of the PCB, and many cross wires were used.

 v.1 Test PCB .  Mounting the N channel Mosfet and the 
PNP transistors , with the 10 k resistors.
You can see in the middle the pins for the 
Rainbowduino (Colorduino )

Top View of first image

           You can see the Colorduino i used at first is fitting perfectly in the pins soldered on the prototype board.

Fitting a Colorduino on the board

            Soon i started adding the P channel Mosfets and the NPN bipolar transistors, using the same schematics , but with reversed polarity's:


         In this picture everything on my first version of  controller is added to the prototype board. I even added a 7805 voltage regulator and a few capacitors.

          At first i tested the controller with the RGBmtx software. Instead of LED's i used RGB strips and later just for a test H4 car light bulbs. The Mosfet's remained cool and that completed my test proving my design works.
          Later i started work on the second controller (because i had to drive 128 RGB strips). I have not used a PCB schematics on this version either, but i learned from the mistakes of the first one:

                                              Second PCB, with the 24 N channel Mosfets,
                                                                     PNP transistors
 and the 10 k ohm resistors

Adding some strap wires and the Rainbowduino (Colorduino)


The almost finished PCB backside.
(without the 7805 ic )

Upper side

              Next, i tried to fit the whole project in a small UPS case. I meant to mount the 2 RGB matrix in the front of the box, as a control light. I never got to do it because of time reasons. The final project has Rainbowduino's and a USB hub has also been fitted in the box.

                                                  Fitting the 2 controllers inside a old UPS box

            Like i sayd,  a 7805 ic was used for each of the board to stabilize the voltage to 5 volts,  supplying voltage for the Raibowduino and the USB hub i used to connect the 2 boards. Since the 7805 is a very common voltage regulator, i will not post the simple schematics. A simple google search on "7805  voltage regulator" will supply all the information needed.
           In the end, this 2 controllers were used to control almost 450 meters of RGB strip. The total current draw from the power supply ( a 450W PC power supply) was almost 8 AMPS on white colors, which draws the most current, since white is composed of all 3 RGB colors. I did not use any type of heat sink on the MOSFET's because practice show that the heat is barely noticeable even after a whole day of run.

                                                        The story behind this project:
             I let this at the end because is the less important part of this blog.
             I used to work in Romania in well known IT service , repairing IT equipment, mostly laptops. Due to many factors regarding mostly on how thing are heading in this country i decided to continue my life in a different place. I was proposed by good friend of mine Ielin Milorad, which i must remark that is a very skilled person when comes to designing things, to take on a last freelancer project before i leave the country. The project involved designing a light system to put a beautiful swimming pool already covered in large blocks of glass "in unique light". So we both decided to take the project as freelancers. I have done some fast research on google (about 5 minutes) and came across the Lampduino project project found on I have knew there must be a way to control strips instead of single Led's.  I did think at a different approach to control  multiple LEDS from  a small controller, in the beginning so we had a starting point.           
            We were told that many company's came with their own plan to illuminate this swimming pool, but out idea was one of the best. At fist , they require us to make a demo. So we did:

         The initial  project  involved just lightning the stairs, but we soon take the option into consideration to cover the whole swimming pool.


          The hard size was actually lifting the heavy blocks of glass, that up to 98 kg each. So we got the same team that created this glass covered swimming pool to help up with the heavy lifting. We were very lucky, because since they build this, they also knew how to tear it apart in order to mount the LED strip. Over 450 meters of  RGB strip was used and over 3 km of wire. Each of the wire were soldered to the strip, in order to avoid using connectors.   
          Like i said at the beginning, i will post many detailed picture as soon as i get them myself. "The important things", the schematics and the concept of using an Rainbowduino/Colorduino to power more current demanding lights is already shared. I hope it will help somebody in his own personal design.