SurfCube: an Ambient Display for Wave and Tidal Data




Introduction: SurfCube: an Ambient Display for Wave and Tidal Data

SurfCube is an ambient display for presenting wave and tide data for surfers, or for those that live near the coast. This allows a user to keep track of the ocean/sea tide and wave conditions at a set location with a glance. It is also designed to be visually pleasing and unobtrusive.

Basically, this device consists of a tank-like case that contains water. There is a breathing backlight which is used for indicating the water temperature. The water waves are created using a mechanical actuator that is controlled using a micro-servo. The water level in the display case is controlled using a separate pump mechanism, which can pump water in/out as per requirement. This device is controlled using an Arduino. The two parts (water pump and display case) will be explained separately on the next steps.

Check out the cool video of the device in action! You can also see this project on Github, which is where you will find all the relevant code, as well as the design files for all the laser cut and 3D printed pieces.

This project was developed as part of the "Designing UX for Internet-Enabled Devices" course at the Rochester Institute of Technology. Visit for more details on this course.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Preparing for SurfCube - Materials

Here are some materials you would need:

Also note that for this project you'll need access to a 3D printer and a laser cutter.

Step 2: Assembling the Water Pump

  • Step 1: cut a wood sheet with 40cm by 15.5cm. This can be done using a laser cutter. The piece you get will be used to hold the stepper motor and the syringes togehter.
  • Step 2: Download and 3D print the following files:
  • Step 3: Connect the stepper motor to the threaded rod using the motor shaft coupler.
  • Step 4: Put all the pieces together (including the syringes) on top of your wood piece as seen in the picture. Use a pencil to mark on the wood where you need to drill. Note that only the syringe plunger holder won't be attached to the wood.
  • Step 5: Drill the wood where you have the marks and attach all the pieces using bolts.

With this assembly you will be able to push/pull the syringe by turning the threaded rod. =)

Step 3: Assembling the Cube

The display case consists of 2 main parts, the water tank and the wooden box.

Making the water tank:

  • Step 1: The water tank is made using the acrylic sheets, which were cut and rastered using a laser cutter. The white/translucent effect is created by rastering one side of each piece. Use the surfcube.svg file to laser cut your pieces.
  • Step 2: Once cut, the sides can be glued together using hot glue, which works really well for this.
  • Step 3: Hot glue does a decent job of holding the contents of the cube, but it is not water tight and usually always leaves gaps, especially in the corners. For this, you will need the silicone sealant. Apply the sealant on all the inner edges, especially on the bottom. Once this is done, your container should be water-tight.
  • Step 4: Next is make the wave actuator, which will be controlled using a Micro Servo. This is a small rotation servo that moves from about 0 to 160 degrees. For converting the rotational motion to linear motion, a Scotch-Yoke mechanism can be used. This part can be 3D printed.
  • Step 5: Glue the holder part of the actuator to the inside of the wall. Make sure that the actuator can move in a smooth motion, without any resistance.

Making the wooden case:

  • Step 1: Similar to the tank, you can laser cut the pieces using a sheet of wood. It is advisable to sand down the edges and corners till they are smooth.
  • Step 2: One of the pieces forms the backside of the display case. This piece will accommodate the LEDs that provide the breathing backlight. In order to fit this component, you will have to raster an indent into the wood.
  • Step 3: Connect the LEDs and resistors with the respective wires, and then fit them into the indent in the wooden side.
  • Step 4: Glue the appropriate sides together using hot glue. You could glue the base and back side together as one piece, and the 3 smaller sides together as a second piece. The second side can be used for opening the internal parts of the display and for adjusting parts, if necessary.
  • Step 5: Glue the display case to the base of the wooden case, so that the final display is one case.

Step 4: Arduino Wiring

For controlling the motors we use the Adafruit motor shield which simplifies the task. The steps are:

  • Step 1: Connect the shield to your arduino;
  • Step 2: Wire the motors as described here (pages 25 and 30);
  • Step 3: For having the breathing effect on the LEDs we need PWM capable pins from the arduino. In this case we used the pins 3, 5 and 6 for red, yellow and green respectively. Don't forget to add a resistor between your LEDs and your arduino.

Step 5: Firmware Upload

For uploading the surfcube firmware download the surfcube.ino file, open it on your arduino IDE, compile and upload it. If you are a terminal lover like me you can use the Makefile provided instead. Note that for using this makefile you'll need to install Arduino-Makefile.

Step 6: Web Interface

For controlling the surfecube we developed a web interface. This web interface communicates with arduino via serial using NodeJS.

  • Step 1: Download the web_ui folder to your computer;
  • Step 2: Install the dependencies by running `npm install` inside the folder;
  • Step 3: Run the server by executing the `node server.js` command;
  • Step 4: Open the localhost:3000 address on your browser and enjoy your surfcube =)

Be the First to Share


    • Backyard Contest

      Backyard Contest
    • Silly Hats Speed Challenge

      Silly Hats Speed Challenge
    • Finish It Already Speed Challenge

      Finish It Already Speed Challenge


    DIY Hacks and How Tos

    Nice. This is a really fun way to monitor the ocean. And I love the mini wave machine.