Hydrator

Workshop #2 Notes
Olivia Prior

Github for the Hydrator

Context

This assignment directed us to test and get the readings from different types of conductive materials. We then took one of the materials and created a bespoke sensor that measured and calibrated to a body related action. I chose to create a sensor that measures how much water someone has consumed from their water bottle.

Testing the materials with the multimeter

For the first step of this project, I and a few classmates measured the different materials in our conductive fabric kits using a multimeter. We tried to be as clinical as possible with the materials and let the material rest naturally after it had been activated. The only material we did not do that for was the fibre because we wanted to see the contrast between the fibres being spread out versus tightly scrunched together.

Material: Velostat #1
Description: Matte plastic sheet
What activates it: Pressure (or bend)
How to connect: Secure conductive material to front & back face

Round # Value at rest Value activated Multimeter Resis. setting Observations
1 140000 ohm 126 ohm 200k (rest) – 200 (activated) This material seemed to have the resting values extremely high vs. the activated material. The sensor did not need a terrible amount of pressure to change.
2 32000 ohm 130 ohm 200k (rest) – 200 (activated)
3 35000 ohm 220 ohm 200k (rest) – 200 (activated)

 

Material: Velostat #2
Description: Shiny plastic sheet
What activates it: Pressure (or bend)
How to connect: Secure conductive material to the front & back face

Round # Value at rest Value activated Multimeter Resis. setting Observations
1 44400 ohm 120 ohm 200k (rest) – 200 (activated) Similar results as before, but this material seemed to have a lower resting value than the other Velostat. The sensor did not need a terrible amount of pressure to change to a lower resistance.
2 44800 ohm 109 ohm 200k (rest) – 200 (activated)
3 40300 ohm 102 ohm 200k (rest) – 200 (activated)

 

Material: Eeonyx Pressure Sensing Fabric
Description: Coated woven textile
What activates it: Pressure (or bend)
How to connect: Secure conductive material to the front & back face

Round # Value at rest Value activated Multimeter Resis. setting Observations
1 50000 ohm 150 ohm 200k (rest) – 200 (activated) A large range of values! Found to be a bit inconsistent with the resting values.
2 39000 ohm 72 ohm 20k (rest) – 2000 (activated)
3 33100 ohm 133 ohm 20k (rest) – 2000 (activated)

 

Material: Eeonyx Stretch Sensing Fabric
Description: Stretchy knit textile
What activates it: Stretching Fabric
How to connect: Clip power and ground to either end

Round # Value at rest Value activated Multimeter Resis. setting Observations
1 145000 ohm 53900 ohm 200k resistance Did not need to change the resistance for this material; the range seemed to be fairly consistent.
2 140000 ohm 53400 ohm 200k resistance
3 134500 ohm 50900 ohm 200k resistance

 

Material: Eeonyx StaTex Conductive Fiber
Description: Fluffy fibres, similar to cotton stuffing
What activates it: Squishing/compression
How to connect: Clip power and ground to either end

Round # Value at rest Value activated Multimeter Resis. setting Observations
1 12500 ohm 690 ohm 20k (rest) – 2000 (activated) This one was fun trying to scrunch it to as small as it could be. The range is quite large for this material as well. This material is incredibly responsive; a light touch changes the values significantly.
2 12300 ohm 450 ohm 20k (rest) – 2000 (activated)
3 13100 ohm 550 ohm 20k (rest) – 2000 (activated)

 

  1. For testing the Arduino’s we followed a similar clinical process: test the materials and let them rest naturally. Upon initial investigation, I was convinced that we had our setup incorrectly because the values upon activation were going up rather than lowering. After reflecting we realized that this made sense because the closer the sensors (especially the pressure ones) were together the closer the path is for the current.

Material: Velostat #1
Description: Matte plastic sheet
What activates it: Pressure (or bend)
How to connect: Secure conductive material to the front & back face

Round # Value at rest Value activated Resistor Value Observations
1 20 1015 4.7k Will not go higher than 1023? Even with different resistors. The value would often go down to nearly zero. Inconsistent resting values. The sensor did not need a terrible amount of pressure to change.
2 3 1015 4.7k
3 40 1013 4.7k

 

Material: Velostat #2
Description: Shiny plastic sheet
What activates it: Pressure (or bend)
How to connect: Secure conductive material to the front & back face

Round # Value at rest Value activated Resistor Value Observations
1 95 1021 10k Same as above, will not go higher than 1023? Even with different resistors.

The sensor did not need a terrible amount of pressure to change.

2 95 1022 10k
3 93 1022 10k

 

Material: Eeonyx Pressure Sensing Fabric
Description: Coated woven textile
What activates it: Pressure (or bend)
How to connect: Secure conductive material to the front & back face

Round # Value at rest Value activated Resistor Value Observations
1 50 1021 10k Will not go higher than 1023? Base rate is lower than the velostat
2 60 1022 10k
3 70 1022 10k

 

Material: Eeonyx Stretch Sensing Fabric
Description: Stretchy knit textile
What activates it: Stretching Fabric
How to connect: Clip power and ground to either end

Round # Value at rest Value activated Resistor Value Observations
1 54 118 10k The resting values were inconsistent. The values of the rest vs. activated were always about half.
2 60 122 10k
3 62 128 10k

 

Material: Eeonyx StaTex Conductive Fiber
Description: Fluffy fibres, similar to cotton stuffing
What activates it: Squishing/compression
How to connect: Clip power and ground to either end

Round # Value at rest Value activated Resistor Value Observations
1 570 980 10k A large array of values! I scrunched this one very tightly. Just over double the value?
2 588 976 10k
3 544 950 10k

Creating the Hydrator

For this assignment, I chose to measure the act of consuming water. My goal was to fabricate a sensor that was connected to a water bottle that would:

  1. Calibrate the sensor to the pressure from the water in the bottle
  2. Indicate and prompt the user that they should be drinking through the use of a timer
  3. After the user has consumed some water and the water bottle is placed back onto the table, re-calibrate the high and low values of the sensor
    • If the value is the same, the user did not drink water and do not reset the timer drinking timer
  4. Restart the timer and indicate to the user that they have consumed water.

I chose to fabricate the pressure sensor out of the matte velostat, conductive fabric, and the floor foam. I chose those materials as I wanted to create a shape that takes an even reading from the base of the water bottle. There were lots of this material to take from, so I knew that I would be able to produce the size and shape to take the reading I wanted.

My first step was to trace the base of my water bottle and cut out the shape of the sensor. The bottom of my bottle dipped in slightly at the middle, so I chose to use a “donut” shaped sensor that would only attach itself to the bottle’s points of contact with the table. I cut the conductive fabric slightly smaller and included flaps for the hardware connections to have enough surface area to attach.

Traced out cutouts from the base of my water bottle.
Traced out cutouts from the base of my water bottle.
Cut outs of the conductive fabric and velostat.
Cutouts of the conductive fabric and velostat.

My next step was to cut out the foam pieces and assemble the sensor. I cut the foam to be a bit wider than the velostat to allow for full coverage of the sensor. I was concerned that, because I was working with a device that carries water, there may be some potential for water to seep into the sensor.  

Assembling the water bottle sensor.
Assembling the water bottle sensor.

Before I fully attached the sensor together, I tested the values. To my surprise, my values were vastly different from my Arduino testing. My range was from 10-250, rather than 0-1023. This worried me at first, but I chose to continue with the development of the sensor and see what I would be able to do with the incoming data.

I attempted using different resistors to test the incoming data values. I found I had the best range using a 10k Ohm resistor. This was the same resistor that provided the best results in our initial testings.

Testing out the sensor before assembling it together with an adhesive.
Testing out the sensor before assembling it together with an adhesive.

After confirming that I was able to get a reading from my sensor, I used electrical tape to secure my sensor together.

Sensor attached together with tape, and connected to the circuit with alligator clips.
Sensor attached together with tape, and connected to the circuit with alligator clips.
Sensor secured together with electrical tape to avoid any drips of water from the bottle.
Sensor secured together with electrical tape to avoid any drips of water from the bottle.

My next steps were to attach the sensor to the water bottle and take readings with different values of water.

The water/pressure sensor beside a list of sensor readings that are taken in 100ml intervals.
The water/pressure sensor beside a list of sensor readings that are taken in 100ml intervals.
Sensor attached to the bottle.
Sensor attached to the bottle.

I found that there was not a significant range between 100ml intervals. This was an interesting challenge; I had initially planned to take readings on how much a user had sipped. The only major data differences were between 200ml intervals. I found that this was an unrealistic amount for a person to drink in one sitting each time the bottle would prompt them to drink.

Due to the data not providing a large enough range, I chose to include time as an indicator. If the bottle was “picked up” the sensor would not have any weight on it, therefore we could assume that the user would be drinking. The time the bottle was picked up would be timed to help ensure that the person was actually consuming.

I wrote out my entire process before I started coding.

The code process written out to help understand the order in which to write the code.
The coding process written out to help understand the order in which to write the code.
Fritzing diagram showing the LED and sensor connections.
Fritzing diagram showing the LED and sensor connections.

My first step was to ensure that the program would know that the bottle was being picked up to consume water. I tested this by using a strip of addressable LED lights as an actuator. If the bottle was unattended for more than 3 seconds, the LED lights would change to red. If the bottle was picked up the LED lights would change green. When the bottle was placed back down the timer would start again.

My second step was to calibrate the values of the sensor. I wanted to incorporate the ability to measure how much water was in the bottle after the bottle was picked up. For the first five seconds of the code, the sensor would calibrate.

I coded the rest of the program based off of these calibrated values. If, when prompted with a red LED light, the bottle was picked up for more than three seconds, placed down, and the sensor value was lower than the original calibrated sensor it would register that the person drank enough water. Otherwise, the LED light would stay red indicating that the water consumption quotient was not satisfied.

The functionality of this aspect was difficult to achieve. The results of recalibrating the sensor were inefficient. I attempted to pour out more water in an attempt to create a drastic difference in sensor values, but the values were still so minor in comparison. I chose to stick with the minimal viable functionality of lifting the water bottle up when prompted with the LED light and placing it back down again after three seconds as an indication that I drank enough water.

Results

Overall, I found this project challenging as the different sensors that I perceived to all be the same were actually drastically different. It was helpful, though, to figure out the intricacies of the sensor by creating a datasheet, as I had for the different millimetres. This whole process creates a relationship between you and the sensor and ultimately becomes an intimate experience. The sensor was crafted by your own hand and the sensor has its own unique data set.

In the future, I think I would choose to use a tilt sensor to indicate if the act of water is being consumed. I think that having the tilt sensor connect with two pieces of perpendicular conductive fabric would achieve that same concept, without the finicky aspect of the data set.

Even though the data set was much smaller than I had expected and less sensitive to the difference in the volume of water, I was surprised by how responsive the sensors were to light touches. When I was initially testing my readings for the water bottle, I could get a nice varying set of data by drumming my fingers along the top of the sensor. This could be applied in many different sound-based or visualization works.

Overall, the sensor I crafted allowed me to create a bespoke drinking experience: a bottle that responded through LED feedback to the frequency of intervals you were consuming water, and for the timed length you were in the act of drinking water.

Research & References 

Kobakant – Simple Fabric Pressure Sensors

Kate Hartman – Into to Textile Game Controllers