This project was carried out by Pierre Amelot, Marc Estruch Tena, and Michael James as part of the Carnegie Mellon University Graduate class "Making Things Interactive". It was made over the course of a month and consisted of creating a visualization artwork that would be hung at someone’s home. This visualization would show personal data of the owner, such as weekly spendings or the number of hours spent on Facebook, that the owner would like to be aware of while not necessarily willing to disclose this data to someone else. Someone unfamiliar with the meaning of the piece could enjoy the artwork without knowing what data is displayed. In addition to the data visualization part, our goal was to create a piece that was pleasant to look at and to see evolve.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Materials
The following materials were used to complete this project:
Syringes 10ml 3D printed parts to hold syringes on place 20 m of clear Polyurethane Metric Tubing, 4 mm OD, 2.5 mm ID 10x Servo motors MG995 16 Servo Shield Laser cut acrylic pieces Raspberry Pi 3 4’x4’ Plywood to be cut
Step 2: Showing the Data
In order to show the data, we decided to use tubes filled with colored water. Using syringes at one end of the tubes, we can change the amount of water that can be seen in each tube. The overall amount of water visible would map to the amount of data that we want to visualize (e.g. full tube being 2 000 dollars spent over the last week, while empty tubes would be 0 dollars spent). In order to have a large range of values to display, we decided to use a total of 10 syringes with about a two meters-long tube connected.
Step 3: Moving the Syringes
We ideated a system, working like an arm, that transforms a 180° circular movement of a Servo into the linear movement we needed to displace 10ml from a syringe.
To make sure the syringes stay in place while we move the servos we designed and 3D printed a base to tie them with zip ties.
Once the different syringes are attached to the 3D printed parts, we screw them into a piece of wood that would be also used as an elevation to place the syringes at the same level as the top part of the servo motors MG995.
Finally, we glue the wood board with the syringes to the center of a larger piece of plywood that we will use to attach the tubes on the other side. Then, we screw the servo motors so that they won’t move.
Step 4: Adding the Tubes
Once the syringes and servo motors are in place, we drill 20 holes along the two long sides of the bigger wood, 10 on each side. These holes are used to bring the tubes to the front of the wood. After leaving 1.5 meters hanging in the front of the plywood, we put them to the back to leave the end open on the inside part.
With these 10 tubes of 1.5 meters, we tried different arrangements that could provide different looks.
We first tried to do different loops for each tube to show like a bar graph.
However, as it didn’t have the final result we wanted, we decided to change the arrangement for a more chaotic arrangement where the tubes are randomly placed over the board. Additionally, we painted the board in white to provide a greater contrast with the water that will feel the tubes.
Step 5: Filling the System With Water
As we wanted to have contrast of the water against the white background, we decided to use food colorant to dye the water. We did several iterations and mixes of different colors (blue and green) to try to achieve the best result. However, all of these combinations when added to the tubes had a very light color. For this reason, we finally used some drops of blue food colorant with black water (blk brand) to create a darker blue.
Once you have the right mix of water and food colorant, you can add the water into the syringes and then connected the tubes to fill them with the water.
Step 6: Moving the Water
We used a Raspberry Pi 3 using NodeJS to move the Servo motors. As we want to control 10 servo motors at the same time, we used a shield that allowed us to control up to 16 servo motors.
Additionally, as the conversion from circular movement to linear movement is not linear, we computed the curve of the movement to be able to set the water in the tubes to the right amount.
The code to control the syringes can be found in the following link: https://github.com/michael-james/waterviz