Recently, I came across WS2812 Individually Addressable RGB LEDs This means that every single LED can be controlled separately and programmed to output different colors instead of the standard RGB strip where all the LEDs light up the same.
RGB mouse pads available in the market are very expensive. So, I decided to make a cheap RGB mouse pad using Arduino and WS2812 RGB LED Strip.
Let's get started!
Step 1: Things You Will Need
- WS2812 RGB LED Strip (1 meter will be enough)
- Arduino Nano
- 10mm and 3mm acrylic sheet
- USB Cable
- Super Glue
Step 2: Dimensions
The dimensions are:
- 30 x 20 cm for 10mm sheet
- 29 x 19 cm for 3mm sheet
- Inner dimensions for the 10mm sheet are shown in the picture
3mm sheet will be placed on top of the 10mm sheet as shown. This will leave a 5mm border from all the sides which makes the light visible from the top. Trust me, it will look awesome!
Step 3: Cutting the Sheets
Cutting the outer dimensions is relatively easy. Just score along the lines using an acrylic cutter or any sharp object. Score the acrylic several more times along the same line, then place the acrylic on the edge of the table and use light, quick pressure to snap the piece in two.
Cutting the inner dimensions is tricky if you don't have the proper tools which is the case for me. I did the painstaking job of drilling holes along the lines. Then I completed the cuts using a hacksaw. This method leaves pointed edges. Using a file, flat smooth out the edges. It doesn't need to be perfectly flat and level and it won't be visible and light would pass through it anyway. Just make sure that it is flat enough so that LED strip can sit flush with the sheet.
Step 4: Putting Them Together
Peel off the protective paper. Lightly sand the surface of the 10mm acrylic sheet using fine grit sandpaper. This diffuses the light and lights up the border which we kept instead of just passing straight through the acrylic.
Place the two sheets one above the other keeping a margin of 5mm from all sides. Using super glue, stick the two sheets together. Just put a few drops of glue at the joints and the glue seeps in automatically. Do the same for all 4 corners.
Stick Neoprene fabric (mostly used for making mouse pads) on the top of 3mm acrylic sheet. This makes the mouse move smoothly and also hide all the electronics and imperfections below it. I didn't find any at the time of making it so I used a black card paper instead. Works fine but will be replacing it after a while.
Drill a 4mm hole all the way through the sheet for the USB cable to pass. The hole diameter may vary depending upon the thickness of your cable.
Step 5: Powering WS2812 RGB LED Strip
Let us consider one LED from the strip. Each color with full intensity draws 20mA. With all the colors lit with full intensity (i.e. White color), one LED will draw about (20mA + 20mA + 20mA = ) 60mA. The maximum current draw of your strip will be = 60mA * Number of LEDs in the strip. In my case, the number of LEDs = 22. Therefore, the maximum current draw will be 1320mA. But the onboard voltage regulator of Arduino is capable of delivering a maximum of 800mA. In such case, the strip should be powered using an external power supply. Make sure that the ground of the power supply and Arduino are connected together.
A mouse pad which requires an external power supply other than USB? This doesn't sound right!
But here's the trick. A RGB mouse pad is well known for its 'Rainbow' animation. This is what we will be using in this project. There is no White in a rainbow! This means that at any point in time, no single LED will be fully lit with all the colors. For a 22 LED strip, the maximum current draw which I measured with this animation is 150mA which is well within the range. That is why it is possible to power the strip directly using Arduino Nano.
Step 6: Time for Electronics
With the mechanical build out of the way, its time for some electronics.
Place the required length of the LED strip as shown in the picture. Hold them temporarily using some tape. Now, using super glue, stick all the LEDs to the acrylic sheet.
Grab the USB cable and cut off one end. There will be four wires inside the cable. As we will be using USB just for powering the Arduino we are interested in Red(+) and Black(-) wire. Snip off the remaining two wires as we won't be needing them. Pull the cable through the hole which we drilled.
Make the connections as shown in the schematic.
Step 7: Time to Code
Download the code and open it using Arduino IDE. Before you upload,
- The data pin of the strip can be connected to any of the digital pins. I have chosen pin 4. Make the necessary changes in the code if you use another pin.
- Enter the number of LEDs in the strip.
Hit upload and enjoy your cheap but awesome RGB gaming mouse pad!
Thank you for sticking till the end. Hope you all love this project. Let me know if you make one for yourself. Subscribe to my YouTube channel for more upcoming projects. Thanks once again!