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 http://fetlab.rit.edu/720/ for more details on this course.
Step 1: Preparing for SurfCube - Materials
Here are some materials you would need:
- Clear Acrylic Sheets - 36in x 72in x 0.118in
- Arduino Uno
- Adafruit motor shield
- Micro Servo (x1)
- 200 step DC Stepper Motor (x1)
- Sheet of wood
- 150ml Syringe (x2)
- Red, Green and Yellow LEDs (2 each)
- Threaded Rod
- Motor Shaft Coupler
- 12V DC Power Adapter
- Silicone Sealant (x1)
- Lots of Hot Glue!
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:
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
Step 6: Web Interface
For controlling the surfecube we developed a web interface. This web interface communicates with arduino via serial using NodeJS.