Introduction: Kaly 2.0 Electric Skateboard Ground Effects/Underglow

The right lights can really enhance the night riding e-xperience. A slow rainbow fade under your deck, not only increases your visibility for extra safety, but also injects some good vibes ambiance into your ride flow.

DISCLAIMER: This build is currently in version 0.1, and is still being road tested for durability. So far, however, it's withstood double-digits in miles traveled, multiple curb drops, and off-roading through gravel.

The design choices I made were based on the following criteria...

  • Skateboards are under LOADS of STRESS, and anything you attach has to withstand the abuse
  • All alterations to the Kaly board are NOT PERMANENT, and reversible

I didn't have to drill any holes in the deck, and I didn't have to permanently glue anything to the board. And with that in mind, I thought it made sense to attach all the electronics, and batteries to the top of the deck, using existing tapped holes, leaving only the LED strips attached to the underside.

I didn't want to anything I added to affect the way I ride, or interact with the board. This meant 2 things...

  1. I didn't want anything in the way of my feet
  2. I didn't want anything in the center of the board, because I like to carry my board under my arm.

It's for those reasons I decided to place the components on the head and tail of the deck. I also separated the components for the front, and rear LED strips so there's no wires running down the center of the deck.

I realize some of this may be overkill, considering I could have opened the existing battery pack, and perhaps found some space to hide components, whether for just running wires down the length of the board, or perhaps even fitting all the required electronics in there, as well. However, I really didn't want to break the existing silicone seal, and risk breaking something that's working perfectly. Plus, with this design, it should be easier for almost anyone to add it to their own board.

NOTE: This project will take most hobbyists several weeks to complete, as it requires 3D printed parts.




  • Electric Drill
  • Soldering Iron
  • Wire cutters
  • Heat Gun or a lighter, if you're cheap, like me, ;)
  • Dremel, or tiny saw, for squaring off some holes in plastic
  • Tiny screwdriver
  • Computer

Step 1: Get Your Parts 3D Printed

You can use the 3D .obj I've created on TinkerCAD.

FULL DISCLOSURE: I've tweaked the design a bit, and haven't had a reprint with the new updates, so, some alterations may be required. These tweaks include...

  • Thicker lids, from 1/16" to 1/8" due to my foot applying upward force to the lid when my shoe would occasionally clip the lid, and the lid would bend, and will most likely snap in the near future. This could also be mitigated by gluing the lid if you don't care about reopening the case once everything installed.
  • "Pre-drilled" holes for the 8mm bolts to hold the parts on the deck. I took care to get the measurements as accurate as possible, but it's possible you may need to dremel, or increase the hold diameter a bit

If you don't have your own 3D printer, there are plenty of printing services out there. The most popular, but also most expensive option is Shapeways, where you can get your parts printed in a variety of materials, and colors. I used Print-A-Thing, which is by far the cheapest option, as it's not a single point of printing, but a network of individual printers across the world. So, quality may vary, but it's worked for me, so far. I had my parts printed in black ABS plastic, but you should free to try other materials and/or colors. The ABS parts I received are falling apart VERY SLIGHTLY, kind of like a stitch coming free out of your favorite shirt, and pants. I imagine it's hold up for a few years, but when I do a reprint, I'll try PLS, instead.

Step 2: Drill the Necessary Holes in Your 3D Printed Parts

You'll need to drill a few holes, even after the printing process. Hopefully on a future revision, I'll update the 3D model even more, so this step becomes unnecessary, but for now, this is where we are. You'll need to drill...

  • a couple holes for the teeny screws to hold the lid on, both in the lid, and the base, i used a 5/64 drill bit, but depending on the screws you choose, you may need to adjust the drill size slightly
  • 4 - 6 holes on the "posts" inside of the base to hold the LiPo charger in-place, so you can charge your battery without having to open the enclosure. again, i used a 5/64 drill bit here, and we caution against going any larger, as one of the holes destroyed a post to an unusable state. But, with a slow steady hand, you should be okay with 5/64"
  • a 1/2" hole for the toggle switch
  • 2 1/4" holes for the LiPo charging port. after which you'll need to either use a dremel or a small saw to remove the small bit between the two holes, to form a rounded corner rectangle shape
  • 6 3/64" holes, 3 on each side, to feed the LED strips wires into the enclosure

Step 3: Program Your Arduino to Your Liking

I prefer a slow rainbow cross-fade, but hey everyone is different. You do you.

At the very least, use the Ardiuno application to connect to your Arduino. If you're using the Pro Mini, which is more expensive, but easier, simply connect the board to your computer with a standard MircoUSB to USB cable. If you're using the Pro Micro, which is cheaper, you're going to need a USB to serial adapter, like this or this.

In the Arduino application, set your board to "Ardiuno Pro", your processor to "Atmega 328", and your port to "USB". If you use the code I wrote, you'll need to install the NeoPixel library, and remember to set your number of pixels to whichever length you cut. On the Kaly 2.0, I got 5 pixels on each strip to fit nicely. And finally, set your PIN to whichever you fancy, I used the 6th digital PIN.

Here's the code I used...

// NeoPixel Ring simple sketch (c) 2013 Shae Erisson // Released under the GPLv3 license to match the rest of the // Adafruit NeoPixel library

#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> // Required for 16 MHz Adafruit Trinket #endif

// Which pin on the Arduino is connected to the NeoPixels? #define PIN 6 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino? #define NUMPIXELS 5 // Popular NeoPixel ring size

// When setting up the NeoPixel library, we tell it how many pixels, // and which pin to use to send signals. Note that for older NeoPixel // strips you might need to change the third parameter -- see the // strandtest example for more information on possible values. Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 100 // Time (in milliseconds) to pause between pixels

void setup() { // These lines are specifically to support the Adafruit Trinket 5V 16 MHz. // Any other board, you can remove this part (but no harm leaving it): #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // END of Trinket-specific code.

pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) }

long red = 255; long gre = 0; long blu = 0; void loop() { //pixels.clear(); // Set all pixel colors to 'off' long COLOR = pixels.Color(red, gre, blu); //#define COLOR pixels.Color(red, gre, blu) // The first NeoPixel in a strand is #0, second is 1, all the way up // to the count of pixels minus one. for(int i=0; i<NUMPIXELS; i++) { // For each pixel...

// pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255 // Here we're using a moderately bright green color: //pixels.clear(); pixels.setPixelColor(i, COLOR); }; // Send the updated pixel colors to the hardware. delay(DELAYVAL); // Pause before next pass through loop if (red == 255) { if (blu > 0) { blu -= 1; } else if (gre < 255) { gre += 1; } else { red -= 1; } } else if (gre == 255) { if (red > 0) { red -= 1; } else if (blu < 255) { blu += 1; } else { gre -= 1; } } else { if (gre > 0) { gre -= 1; } else if (red < 255) { red += 1; } else { blu -= 1; } } }

Step 4: Wire Up Your Electronics

This step assumes you have a basic knowledge of electronics, and soldering, as I won't be getting to deep into the details, here. But basically, what you want to do is this...

  1. Connect the power. I used an 18650 battery cell from Adafruit, which will already have a 2-pin connector attached to it, and will easily plug into the LiPo chargers 2-pin power port. Easy Peasy. Each cell is powering 10 LED's, all of which are only ever showing 1 - 2 colors, which is about 20 - 40 mAmps, which should be at least 5 hours of power, *crosses fingers*.
  2. Connect the toggle switch. I placed mine between the negative lead of the battery, and the ground of the LED strips, and the ground of the Arduino. You can also place the switch on the positive end of things if you so desire.
  3. AFTER pulling the led wires into the enclosure through drilled holes, solder them directly to the battery. The power output on the Ardiuno maxes at 150mA, and will not be enough to power your LED's, which should be pulling ~400mA. Finally, solder the data lead from the strips onto the Arduino pin associated with your program, in my case, it was digital pin 6.
  4. Don't forget to add your shrink before soldering, folks. Unless you enjoy short circuits, or gummy black tape, yuck.
  5. Fit everything into its proper place. The switch should fit snuggly into its hold your drilled. The LiPo charger can be screwed onto its posts at the very top of the enclosure, and the MircoUSB port should be accessible from outside of the enclosure. The battery will fit next to the toggle, at the bottom of the enclosure. With a little wire bending, the Arduino should fit snuggly between the battery, and the LiPo charger.
  6. Put on the lid, squeeze all the wires in (it's cramped, but doable), and screw the lid down.

Step 5: Stick the LED Strips to the Underside of Your Deck

This part was tricky for me to get right, because I wanted whatever I did to be reversible. So, what I came up with is a 2 part solution, using tape + a bonding agent for the silicone. Attach strips of double-sided vinyl tape to the underside of the flanges of the deck. This will form a sufficient bond with the fiberglass of the deck, but not the silicone sheaths of the LED strips. To attach the LED strips, apply a thin layer of glue that is appropriate for silicone, which means something with cyanoacrylate in it. I used Loctite brand super glue, but i've read that some people swear by using SilPoxy.