The Flower of Life

Experiment 4: Network

The Flower of Life

Team Members: Naomi Shah, Carisa Antariksa, Mazin Chabayta

Code: https://github.com/mazchab/Life

Project Description

‘The Flower of Life’ is a kinetic sculpture that represents life and death rates of various countries around the world through two oppositely spinning disks. The installation attempts to visually represent populations across countries by the speed at which it spins, while an accompanying screen communicates its quantitative figures. The goal of this kinetic sculpture is to physicalize and merge the ideas of life and death into a single whole shape that is almost pulsating with life.

How it works

A user steps up to ‘The Flower of Life’ installation and enters the name of a country of their choice into one laptop and hits ‘enter’. The quantitative population data of birth and death rates then reflect on a second laptop screen. This, in turn, influences the installation, causing two disks mounted on 360-degree servo motors to start rotation in opposite direction, hence animating the information displayed on the screen. The orange disc represents births while the black disc represents deaths. ‘The Flower of Life ‘signifies the eternal circle of life through its constantly rotating disks.

geometrics

Digital Visualization of the Kinetic Sculpture

Ideation

PHASE 1

Before we split up into groups, a number of us from the cohort decided to approach forming teams differently for this experiment. We decided to meet and do a group brainstorming session so that we may collaboratively arrive at our concepts with each member contributing to as many ideas as possible. Over two days, we mapped out our disparate ideas and ‘workshopped’ with one another to build up our concepts. We developed around 6-7 strong ideas and finally narrowed it down to just a couple that we were interested in exploring. The concepts that were discussed and developed during our self-initiated workshop allowed us to form teams on the basis of what interested us personally.

From the beginning, our group showed interest in using physical computing as an element for this experiment, and after the Cy Keener’s talk a few weeks ago, we were inspired to experiment with physical computing as a form of data physicalization. Furthermore, we were keen on experimenting with global data brought into the classroom that participants could interact with.

PHASE 2

ideation-2

Converging into an idea

Our ideation process began by first assessing the kind of dataset we wanted to visually represent through our installation. We also wanted our project to speak to everyone regardless of where they are from or whatever their background is. In our cohort, we have people from many different parts of the world and we wanted to bring everyone in front of our sculpture and have a relationship with it. Continuing on that line of thought we eventually found the type of data that has a presence inside every one of us: Life and Death through population numbers.

Taking on a task of visualizing life and death can be tricky because they are subjective experiences that can have different meanings to each one of us. However, life and death are natural occurrences that happen every second of every minute all around the world, and we wanted to communicate that. In addition to that, we wanted to avoid a depressing impact on our audience and so we believed the visual representation cannot be unpleasant to look at. Eventually, we decided to use a traditional and well-recognized symbol for life, “the flower of life”. The flower of life is a symbol that’s being used by different civilizations since the 9th century BC. Today, it is usually associated with life and birth.

initialization

Other iterations of the kinetic sculpture

final spiral

Final form of the kinetic sculpture

Planning

High Priority Tasks:

We broke up our tasks on the basis of the core elements of this installation and then categorized them into high and low priority. Our high priority tasks involved deciphering the code that would be the foundation of our project and building the basic prototype of the installation. Our low priority tasks would extend itself to refining the experience of interacting with the installation through beautification and conceptual layering. We regularly assessed our tasks against our time frame.

How to pull data from an API using p5js

This was the first time that any of us had worked with API data. There were two ways we could have approached this. We could either pull up synchronous data from a JSON file locally hosted or pulled a simulation of real-time data from a URL API using asynchronous callbacks. The former would have required us to use Pubnub to meet the networking requirement, while the latter gave us the option of not using Pubnub at all. We needed to find data that best reflected our concept, or allowed us to tweak the concept only minutely, and that would determine whether we would use a locally hosted JSON file or a URL API.

Translating quantitative data visually

We needed to make sure that we were pulling up specific quantitative information from the API data on p5js, that would influence the kinetic sculpture via the Arduino. Our biggest priority was to make sure that the difference in numbers between life and death actually translated to the sculpture to have the disks move at varying speeds and represent populations.

Designing and building the kinetic sculpture

While this project had immense possibilities for visually representing this installation, we chose to keep our fabrication simple and work with materials from the university’s inventory, given the time constraint. We made quick iteration sketches to determine how it would look and how it must be built. We decided to start with just one pair of disks, but make multiple for various countries if time permits.

Low Priority Tasks:

Designing the web pages for input of country and output of quantitative data

We wanted to design the UI for the information input and output pages on both screens to aesthetically complement the installation ‘Flower of Life’. This would give the project an overall sense of finesse and completion while allowing for more engagement from participants.

Multiple disks for representation

We wanted to shortlist a selected number of countries and make a pair of disks for each, representing the population of each of these countries. This would have allowed us to create a more wholesome data visualization through the tangible exploration of data.

Fabrication

Once we had our concept ready, we started to plan our building process. We considered several options for presenting the kinetic sculpture like hanging it on the wall or on a pedestal. However, after realizing that the flower needs to be on eye level in order for the visual effect to be experienced by the users, we eventually decided to build a pedestal about 6-ft high made of wood for stability. Next, we quickly sketched the structure and all its parts and sourced most from our OCAD facilities.

structureparts

Materials Used:

20 inches of acrylic sheets with varying colors
Wood for pedestal and frame around rotating disks

Hardware:

2x 360-degree servo motors
1x Breadboard
1x Arduino Micro
1x External power source with wiring Jumper wires

ideation

We started our fabrication process with a consultation with Reza, the Maker’s lab manager and based on his advice, we made some crucial changes to the structure. He advised using a cross base rather than a square base, which meant the structure is lighter and easier to move around. In addition to that, at this point, we also decide to add a frame around the disks in order to hide the flatness of the acrylic disks and give more depth to the sculpture.

fabrication-1

Fabrication Process 1

For the disks, we were limited to a maximum weight of 4.8kg each, since this is the servo’s capacity. So, although we considered using wood for the disks, acrylic was lighter and more colorful than wood, which is more appropriate for our requirements. After sourcing the acrylic, we utilized the laser cutting machine to performs the cuts on the disks.

fabrication-2

Fabrication Process 2

Since we decided to use bigger servo motors with more torque to handle the size of the disks, we decided to test them ahead of time. During the testing stage, we noticed that the servo motors use too much power from the Arduino board and we had to come up with a better solution for power. We realize that our sculpture is not mobile and instead of investing in batteries, we decided to use the internal power converter inside a wall adapter, stripped a USB cable, connected power and ground to the breadboard and used those terminals as a power source for the servos. That ensured the constant supply of power.

electrical

cut-usbcable-01

Power supply link  + Cut USB cable

In the spirit of last minute complications, one of our disks fell and broke into multiple pieces. We tried gluing it back together, but eventually got them laser cut again on the morning of the presentation.

broken-fabrication

Setbacks

Coding Process

P5 – Serial Connection to Arduino

Since most of the functions are happening in p5, figuring out this portion of the code was a constant challenge. Also, it was the first time we attempt to use p5 to send data over serial connection to Arduino. So, we first divided the p5 code into the main functions needed and then started writing those codes separately. First, we used the examples we had in class for serial connection p5 to Arduino, which gave us some trouble at first, but eventually, we were able to maintain a connection between the two.

P5 – API Call & JSON Objects

This was the first time for us to pull data from a live source. It was a challenge to understand what APIs are and how they work, and how each API is called differently. We experimented a lot with the API callbacks and even explored using weather conditions from a free online weather API. There were a lot of query tests– from placing the .json information into function setup(), and making an asynchronous callback from that data in function draw(). This was a manual way to call the information, but it would not have been a viable option to call that information because the content of the .json file was quite big (information about ~220 countries were listed.) 

json in setup

Placing data in setup()

Aside from trying to work with a .json, we also experimented using a url for the API. This was proven to be successful as we were able to pull data by specifying the correct path.

code-01

Calling data from URL

Eventually, we decided to make the JSON file work. We based the information found online in text (.txt) format and converted it accordingly. After extensive research, the best way to write a JSON array of objects and with each object a set of data that we need to send to Arduino. We learned the correct way to create that file, and then call it from a p5 sketch. This was an excellent learning experience that will be very useful for us in the future. It was then pulled successfully through a chrome webserver extension (200 ok) and the preload function successfully loaded the .json.

P5 – PubNub

Another extremely useful tool that we learned how to make use of during this experiment was PubNub. For our project, we needed the user to be able to insert the country name in order to view that on the servos, and we needed that connection to be wireless. So, we created a PubNub channel called ‘Kinetic Life” and used that channel the ‘subscribe’ and ‘publish’ functions in order to submit commands through the internet. Eventually, we assigned one of the computer to subscribe to the channel in order to receive data, and the other to publish in order to the send out commands. So, computer A sent a call to the JSON file, through PubNub, to computer B, which pulled the JSON and sent out the relevant response, over serial to Arduino.

P5 – Mapping Data

One of the main lessons learned in experiment 3 was the correct way to map values. It allows us to view any data, no matter size or complexity, in a simple output either on screen or for Arduino. Although it is a simple line of code, used correctly, can be a powerful tool. 

Arduino – Data Receiving & Output

The code for the Arduino was fairly simple and straight to the point. After opening a serial connection between P5 and Arduino, it is fairly easy to tell Arduino to receive that data and output it through the servo. However, we quickly learned that servos are not as simple as they may seem and hacking them might not as easy of a task. After several sessions of trial and error, we were able to control the speed and direction at which the servos rotate, and based on the data coming in from the p5 sketch.

fritzingsketchbb

Final Circuitry

 

Presentation Day

presentation

Strengths Observed:

We invited participants to come forward and input the name of a country of their choice and see the disks spin as a visualization of the birth and death rates. We observed that many people put in names of countries they come from or have roots in, and expressed surprise over some of the data that came forward. Furthermore, many participants reported feeling mesmerized by the design of the disks that gave the effect of an optical illusion.

Limitations Observed:

Each time a participant input the name of a new country, we had to manually reset the Arduino. It would have been more effective to either have a reset button or allow the discs to rotate only for a specific time before a new country name input was fed into the input box. This would have improved the user experience considerably.

Furthermore, multiple discs representing various countries would have been much more effective as a data visualisation, allowing a comparison to arise between birth and death rates across different geographical regions. Not only would this have been more visually striking, but would have also allowed participants to reflect on growing or declining populations across the world at the same time.

Finally, gaining more control over the speed of the servos would have also contributed to making the experience of deciphering the contrasts between birth and death rates more pronounced. While we did succeed in influencing the speed slightly, it would not perhaps be obvious had the participants not been looking out for it.

Feedback from Participants:

Creating multiple disks for effective Data Visualisation

Creating multiple disks to represent different countries would have been more impactful because of a comparison that would arise, while also looking more striking aesthetically. This is something that we did intend to do initially. However, troubleshooting the code at every stage of the process occupied much of our time, without giving us the time to build further on our fabrication.

Improved Data Input

Participants were instructed to input a capital letter at the start of every country’s name, which would then show the quantitative data and allowed the disks to spin. One of the limitations of our dataset was that it yielded results only if the data input was written in this specific format. A few options provided during the feedback session was

  1. Creating a drop-down menu instead of allowing participants to type it out, hence avoiding mistakes with capital letters.
  2. Creating a map interface to make it more striking, immersive and also aesthetically pleasing

Future scope:

Making interactive data visualisation tangible and experiential can be a fantastic way to immerse participants in large datasets that would be missed if it lay in the form of passive, quantitative information. Not only does the data physicalization give the opportunity to participants to immerse in different contexts, but can also tell an effective narrative through the data that it represents.

It has the ability to inspire a sense of wonder at how its underlying technology allows us to explore, create and communicate with each other in new ways.

The ‘Flower of Life’ is the first prototype at achieving this ambitious goal. This experiment can be further forwarded using diverse data sets and interactions to tell a narrative about our world’s growing population, especially in the context of climate change and depleting resources. While digital data visualisation may be effective in allowing interactivity as well, the tangible and tactile interaction through an installation can allow for a more immersive sensory experience.

Another possible outcome of the ‘Flower of Life’ could be a call to action upon interacting with the installation, focusing on not what we already intuitively know, but where this knowledge could take us in the future.

References

Flower Of Life – A Thorough Explanation. Retrieved November 26, 2018, from https://www.tokenrock.com/explain-flower-of-life-46.html

Population API. Retrieved November 26, 2018, from http://api.population.io/

Servo Won’t Stop Rotating. Retrieved November 26, 2018, from https://arduino.stackexchange.com/questions/1321/servo-wont-stop-rotating

Servo 360 Continuous Rotation. Retrieved November 26, 2018, from https://www.sparkfun.com/datasheets/Robotics/servo-360_e.pdf

Toddmotto/public-apis. Retrieved November 26, 2018, from https://github.com/toddmotto/public-apis

Weather API – Free Weather API JSON And XML – Developer API Weather For Website – Apixu. Retrieved November 26, 2018, from https://www.apixu.com/

Wolfram, S. (2002, January 1). Note (d) For Why These Discoveries Were Not Made Before: A New Kind Of Science | Online By Stephen Wolfram [Page 872]. Retrieved November 25, 2018, from https://www.wolframscience.com/nks/notes-2-3–ornamental-art