Jessica Lieuson's profile

IAT 320 Assignment 3 - Fluid Light

CONCEPT
The concept behind this project is the fluidity between human and water movement.  An umbrella is one of the most overlooked and underapprecaited objects in Raincouver (Vancouver).  I wanted to use this object that we use in our every day lives and express the beauty behind the sweeping movements that affect the flow of the water on the surface of the umbrella's skin.  Because I am using an object that is used regularly, whatever actions I transfer sensor data from should be of high afforability, and should feel natural.  I want this project to be more an visualised expression and physical manifestation of movement, rather than a push and play project.
 
In order to do this, I used an accelerometer/gyroscope sensor to read the movement of the user carrying/using the umbrella, and used LED strip lighting to output the fludity of the movements, as well as a vribration motor that signaled abruptness in movement..
SKETCHES
The original plan was to create an umbrella that reflected the movement of human interaction with water.  In the particular case of an umbrella, the more the user tips to one side, the faster and more the water sitting on the surface will fall to that side.  In relating to the original concept, the way the water moves across the surface of the umbrella is directly related to the human movement underneath the umbrella.  The lights become visible show of the beauty and fluidity behind that movement; the faster the user tips, the faster the light dribbles to that side.
 
Ben, my TA, also suggested flipping the umbrella upside-down, to show the user "cupping" the water instead of "sliding" it.  However, due to material constraints, this was not feasable with the umbrella I picked up,  If I had a double jointed umbrella, with a circumference of less than 2m, covered in transparent vinyl, it would have been feasible.  In relating to the original concept, the umbrella would have become a cup, and water, represented by the light levels, would have been something sloshing around in it.
 
In order to fulfil the motor component, I decided upon using a small pager motor that warned the user when they were tipping too far for the umbrella to be of practical use.  Once the gyro and accelerometer sensed that the user was tipping too far, it would trip the buzzer mounted on the handle, reminding them to right the umbrella back to a proper position.  This idea, also helped with by Ben, was also supposed to warn the user of tipping the water too far out from its "cup" in the flipped umbrella form.  In relating back to the concept, it was to warn the user that there was no more fluidity in the user's movements, just brute force.
 
The original concept application included the opening/closing movement of the umbrella that would act as a on/off switch.  I could not figure a way of doing this without ripping the wires apart, so I left it as is.
 
I also thought about using the colour of the lighting to reflect something about the fluidity of the water.  I was considering using the abruptness of the change in movement (the acceleration) to change the colour (faster = hotter colours, and slower = cooler colours).  I also considered using the temperature sensor setting on the sensor to change the colour of the lights. I ended up deciding on the accleration to change the colour of the lighting as it mapped better to the concept of the piece.
MATERIALS
Lining up the addressable LED strip along the edge of the umbrella.  The LED strip is an older model, with each addressable chip, the LPD6803Sè, controlling three sucsessive LEDs, instead of one/LED.  I chose this LED strip over the newer, more expensive LED strip for economical reasons.  I also chose this LED strip over the Neopixel strip as it came with a rubber casing and the Neopixles did not.  I found that the rubber casing added extra durability and some waterproofing.
 
The umbrella itself was a challenge to source.  I needed an umbrella that was transparent, smaller than 2meters in diameter (I only had 2 meters in LEDs), long stemmed (the collapeable ones would destroy the electrical components while folded up), and cheap.  Since I originally wanted to flip it, I also needed to find one that would flip, which proved to be near impossible without breaking the bank (and mine is pretty broke already).
This is a accelerometer/gyoscope/temperature sensor, an MPU 6050, on a GY-521 breakout.  I decided to use this over a conventional accelerometer because I wanted specific positional measurements; not just if it was moving or not.  I had to research deeply into how to use it.  It turned out to be quite complex, and the code needed was also very complex.  There must be a way of simplifying the code.
 
By using attached jumper cables, I was able to extend the pins to the proper receptive pins on the Arduino Flora board.  I wanted to use wires over soldering as I could not move around with the umbrella while everything was attached, as I risked destroying the components.
 
VCC: connected to 3.3V power on the Flora board.  I do believe for additoinal power to run.
GND: connected to a ground port on the Flora board. Grounded (negative) the sensor.
SCL: one of the sensor's output ports, connected to the i2c SCL port on the Flora board.
SDA: one of the sensor's output ports, connected to the i2c SDA port on the Flora board.
INT:  an interrupt pin, helps regulate the PWM pins and frequency of readings.
 
I was quite fortunate that a classmate was willing to lend it to me for the duration of the project.  Many thanks Jay!
I attached everything to an Arduino Flora v2 board.  The Arduino Uno board that I have would have been too large and cumbersome to mount onto a small umbrella.  I opted for the smaller and lighter Flora board, which had just enough ports to assemble my project.  Also, thanks to the limited number of ports, Flora supports intercept, PWM, and analoge read/write on multiple pins, unlike the Uno, which has a few dedicated pins.
 
The 3.3V pin came in very handy while testing my output component, the pager motor.
This is 2 meters of an older version 12V LED strip, controlled by LPD6803Sè chips, covered in a flexible rubber casing (that came with it).  I chose this over other LED strips because of its simplessness, inexpensiveness, durability, and addressability.  I was fortunate enough to get one end of the roll, so I had less soldering to do.  For two meters, it costed $40.00CAD (plus tax). This chip allows for the coder to address every three chips, instead of every one chip with the newer LED strips. That worked fine for me.
 
One of the challenges that came up while working with this was the power source. Since this project was just to be a prototype, I opted just to use a 12V wall adapter and just plug it in to power. 
 
Another challenge was finding and coding with the right library.  Since the chip is an older chip, it was difficult trying to find tutorials that taught using the correct FastSPI lbrary (I also needed to find the v1 library, which proved to be a slight challenge since  v2 is out and more widely used with the newer chips).
In order to have a physical manifestation of human movement, I opted to use a pager buzzer.  Lightweight and strong enough to produce an audible buzz, this motor was ideal for using mounted on the umbrella. It was also pretty cheap, so if I messed it up (in other words, if I fried it), it wouldn't be too expensive to replace. It was also ideal because of its small size: I would be able to mount it easily on the umbrella, in a hopefully not-too-distracting way.  I wanted to avoid having to 3D print a case just to accomodate it, as other previous colleges had done.
 
It also has a sticky back, which was quite handy whilte trying to mount it.
DIAGRAMS
Just the diagraming for the sensor layout/connections.
PROTOTYPING
I originally started out trying to figure out how to code and use the lighting, but it was quite complex, so I moved onto the buzzer and gyro readings.
In order to test if the main sensor was being read or not, I used this test code I found on Arduino's tutorial site.  Thankfully, everything seemed to connect ok.  While I continued to test further, it would disconnect once in awhile, and sometimes not sense the sensor all together.  This was caused by faulty connections (alligator clip slipping, or connected to wrong port).
Within the same tutorial, Arduino also had code to read the raw values that the sensor was outputting.  If you read the oupt values carefully, the number show no easily discernible pattern.  According to the tutorial, the values must be mapped to usable values (except for temperature).
This is just a short video clip to show one of my outputs, the 3V pager motor, vibrating, as it has been correctly set and hooked up to the Flora board.  I encountered several issues with this motor, the first being that it was a 3V motor.  Using an Uno board, I would have had to gone through the trouble of using a diode and a transistor to take care of the voltage output difference, but thanks to Flora, I could test and use the regular pin without worrying about frying the motor.
 
Another issue that popped up was the durability of the motor positive and negative connections.The wires were very thin, and quite fragile.  Despite soldering them on once, together with thicker, heavier jumper wires, it still fell apart, taking the soldered buts of wire off with the jumper cable.  I had to re-strip and make a new connection with clips instead of soldering.  I may have to use thinner wires, such as the ones I stripped from my old USB cables.
On the left, you can see the scissors I've had since I was in elementary school. 
 
Actually though, this is the completed sensor circuit, which also includes the connections for the buzzer.I had taped the USB cord connecting the Flora board and my laptop togetherm as the Flora board kept falling off the table while I was moving/attaching compoents.
This is a closeup of all the sensor and virbration moto wires attached.  They are all colour coded so I know what goes where for what.  I used this image as a reference image every time I pull the whole this apart to move around.  (I broke the umbrella trying to flip it, so I have to disassemble every time I have to move it, as it will no longer close properly.)
CODE
FINAL
IAT 320 Assignment 3 - Fluid Light
Published:

IAT 320 Assignment 3 - Fluid Light

An umbrella that reflects, using light, the fluidity of human movement.

Published:

Creative Fields