Motion Reactive Surfboard LED Strips

3,614

30

5

Introduction: Motion Reactive Surfboard LED Strips

About: I am a physicist, part time maker and electronics enthusiast. My projects revolve mainly around daily-use items, toys and decoration with a focus on unconventional mechanisms and high standard of design.

Recently, some friends and I discovered river surfing. Living in Munich we are lucky to have three surfable river waves among that the famous Eisbach surf spot. The downside of river surfing is that it is quite addictive and so I rarely find time for my other hobbies including building electronic projects. This was until a friend of mine came up with the great idea to equip a surfboard with LED strips for our first night-surfing session. Our plan was to not only light up the surfboard but also install a gyroscope to have them react to the motion of the board.

Supplies

  • 5m WS2812B LED strips, IP68, 60 LEDs/m
  • Arduino Nano
  • MPU6050 3-axis gyroscope (e.g. ebay.de)
  • 18650 battery (e.g. ebay.de)
  • TP4056 battery charger with over-discharge protection circuit (e.g ebay.de)
  • 3.7V to 5V step-up module, >1.5A (e.g. ebay.de)
  • Tupperware box
  • 3 pin, superseal connectors (e.g. ebay.de)
  • epoxy glue
  • silicone
  • 3M dual lock tape (e.g. ebay.de)
  • hotglue
  • cable binders

Step 1: Preparing the Surfboard

We used a really cheap 7' foam board for this project which was the first board that we bought for the small Eisbach wave (also known as E2). We wanted to attach one long LED strip all along the side of the surfboard. As the first step, we removed the uppermost foam layer with a rotary tool. It is advised to use a respiratory mask for this as the procedure left my friend's apartment completely covered in a layer of blue dust. Having the LED strip countersunk in the surfboard helps to prevent damages when you accidentally bang the board against the wall which happens a lot during river surfing.

Step 2: Gluing the LED Strip

Attaching the LED strips was not easy as many glues do not stick well to the silicone that is covering the strip. After some failed attempts with hot glue and multipurpose glue we finally settled on a high viscosity two-component epoxy. We also had to shorten the LED strip a bit sealed the end with silicone. Unfortunately, after the first surf session also the epoxy came loose again so we are planning to cover also the top of the strips with silicone or transparent epoxy.

Step 3: Preparing the Electronics

Originally, we wanted to use a powerbank to provide the 5V needed to power the Arduino and LED strips and. However, most powerbanks automatically switch-off when the current draw is below a certain threshold which is a bit of an inconvenient feature. In the end, we replaced the powerbank with a 18650 battery, a TP4056 board, and a 3.7V to 5V step-up module. Make sure to choose a boost converter that can handle the current draw of the LED strips or adjust the brightness of the LEDs accordingly. Our 1.5A step-up module turned out to be not powerful enough when setting the LED brightness to >50%.

As it turns out it was not the step up module that limited the output current but the over-discharge protection onboard the TP4056 module. I replaced it with a TP4056 module without over-discharge protection.

All electronic components were mounted on a perf board and connected on the bottom with silvered copper wire. I also added a slide switch after the boost converter.

Step 4: Watertight Enclosure for Electronics

My plan was to make a nice 3D printed enclosure for the electronics and read up some helpful tutorials on how to design watertight 3D prints (see here and here). Unfortunately, I did not manage to get the lid of the enclosure truly watertight using either a rubber o-ring or silicone and gave up after three failed attempts. In the end, we just put the electronics in a Tupperware box, made a hole for the cable, and sealed it with hot glue and silicone. If I had to redo it I would probably just purchase an IP68 rated enclosure with a cable feed-through.

Step 5: Arduino Code

The attached Arduino code is quite simple and builds upon the FastLED and Adafruit MPU6050 libraries. The LEDs react differently when the following motion is detected.

  • left/right turn: a colored dot sweeping back and forth on the side where the board turns to
  • standing: FastLED's "confetti" animation
  • pumping: blinking rainbow pattern
  • surfing straight: FastLED's "rainbow with glitter" animation

Step 6: Connecting Everything

We did not want the electronics to be permanently attached to the LED strip but have some connector in between. After searching some time for IP68 rated connectors we finally decided to use so-called superseal connectors. These are only rated as IP67 but they are less bulky and cheaper than most of the IP68 connectors we found. In addition to the sealing that comes with the connector we also resealed them with epoxy.

Finally, the electronics box was attached to the top of the surfboard with 3M dual lock tape and secured with cable binders. In the end, it all looks a bit improvised because we were really keen on getting things done fast so that we can try out the board.

Step 7: Surf On!

We just barely finished the board in time to try it out for our first night-surfing session. In the end almost everything went wrong. When we came to the wave the only people with a floodlight just left. Also, we realized that the LED strips turn off after about one minute because the current draw was too high for the step-up module. After quickly re-hacking the board by connecting the battery directly to the 5V input of the Arduino and LED strips and securing everything with lots of sellotape we were also lucky that some more people with a floodlight arrived at the river. The board was working and we had an awesome surf session.

Afterwards, we saw that the silicone hose covering the LEDs had quite some holes, the epoxy came loose and the connectors were not watertight so it is kind of a miracle that the LED strips were working all the way to the end. Now it is time to repair and improve the board for the next surf night.

Step 8: Update

I also attached a small LED strip to my 5' board for season's closing day at Floßlände.

The LED strip was put in a transparent PVC hose and sealed with silicone. I attached the hose with cable binders and self-adhesive cable binder holders to the board.

The electronics were put in an IP68 certified box with cable feedthrough. The box was attached with double-sided tape. Everything was holding well but I was also able to remove it afterward.

Be the First to Share

    Recommendations

    • Toys & Games Contest

      Toys & Games Contest
    • Box Challenge

      Box Challenge
    • Colors of the Rainbow Contest

      Colors of the Rainbow Contest

    5 Comments

    0
    kiewie.gaddie
    kiewie.gaddie

    8 months ago

    Sorry. Me again.
    Do you maybe know why the code does not work when
    #define NUM_LEDS is set above 252 !
    I have a 300 LED stip (5 meter), and would like to use all of them!
    The stip has an external 5 amp power supply, and I can turn then all on/off with some of my own code.

    >> UPDATE
    Low memory was the problem. After removing all the "Serial.print" commands from the code I freed some memory, and managed to get the 300 LEDs to work.
    However. It's not running very smooth. I guess this is a MPU problem.

    0
    mosivers
    mosivers

    Reply 8 months ago

    Glad you worked things out by yourself.
    Btw, I recently found that the TP4056 module is actually what limits the output current, not the step-up module as suspected first.

    0
    kiewie.gaddie
    kiewie.gaddie

    8 months ago

    Trying to get it working here with no luck.
    Code had been uploaded to the nano. Getting a warning "Low memory available, stability problems may occur" however this should not be the problem.

    Powering up the LED on the Nano turns green and the LED on the MPU6050 red.
    Nothing on the LED strip turns on :-(

    >> UPDATE
    Nevermind.. I got it working.
    Data to LED's needed to be connected to PIN D6 and NOT PIN D7 as shown in the picture diagram above, OR you can change the Arduino code and set it to PIN D7