Smart Charms

Smart Charms / A smart stress toy

Project Idea – Wanted to create a wearable stress toy that would distract a user whenever they were feeling anxious. It works by pressing or scrunching up the sensor in one’s hands. This was inspired by self-care and art as a form of therapy / visual meditation.

Materials Testing Results

  1. Multimeter results



2. Arduino results

Arduino tests

Body-Centric Sensor Design


I wanted to create a stress toy for self-care that would distract the wearer whenever they were feeling anxious. When i began ideating, my original idea was to have a plush sensor that could be squeezed and squashed. I then began to think of portability and having the sensor around my wrist but also it not being cumbersome. This led me to thinking of something in the vein of a key-chain, that could be attached or detached onto various items of clothing. My ideal version of this sensor would be a charm bracelet where each charm could be manipulated to produce a different effect distracting the wearer almost like a visual meditation.

How it works.

When the sensor is crushed, pressed, or manipulated sensor values are passed to a recorded. These values are then mapped to a range between 0 and 10 to create a “stressLevel” variable which is later used in a Processing sketch.

Stress Level

Mapping original sensor readings to a stress level value between 0 and 10

In Processing, sensor values are used to create a digital painting of circles in a limited color range. The stressLevel value is used to determine what color the circle will be; values closer to 10 are in the blues & violets and values closer to zero are in the reds & pinks. I chose this color scheme to further indicate state of mind i.e when the sensor isn’t being manipulated the painting will be more blue and purple indicating calm and when more reds and oranges are present, this could indicate that the person is agitated or excited. The idea is that by concentrating on manipulating the sensor to create a digital painting, the person is distracted from their anxious feelings.

Variable Resistor Choice

For my variable resistor, I had initially intended to work with the EEonyx StatTex Conductive Fiber but during testing with the Arduino, i noticed that the range for sensor readings was very small and this would not work for me when interpreting how hard a person was clenching their sensor. I decided to use the Velostat / Linqstat as it provided me with a wide range of sensor values about 1023 to 0 when tested on Arduino with various resistors. This material was also chosen as it provided a good range of values when crushed, pinched, bend or pressed.

Fixed Resistor Choice

I chose to use a 10K resistor as from my materials testing, I found that this resistor gave me the greatest range of values whenever the fabric was subjected to various manipulations

Sensor Materials

To construct my sensor I used the following materials & tools.

  • Neoprene
  • Sewing thread & Needles
  • 2 Alligator clips
  • Felt material
  • Conductive fabric
  • Velostat / Linqstat
  • Scissors
  • Iron ( if no glue available)
  • Cardstock (to create your outline / pattern)




Processing / Visualization results.

Initially I wanted to draw the circles in real-time however, the sensor readings were coming in too fast and this created a very frenetic painting that kind of started giving me vertigo when i stared at it. It was distracting but it seemed to increase my anxiety the longer i stared at the circles moving on the screen.

To fix this, i decided to create an array that would hold each circle when it was created and then the draw loop would just pull objects from this array. This seemed to work and also ensured that circles stayed on the screen, thus creating more of a painting than an illusion as with my first explorations. I decided to stay on this route as i had a lot of fun trying to create a painting.

I noticed that as the sketch ran longer, the array got bigger and this slowed down the real-time nature of the paintings. The lag between me squeezing the sensor and the appropriate circle showing up got noticeably larger. I tried changing frameRates however this didn’t give me the effect I wanted. In the end, i decided to modify my for loop so that I would only grab the last 20 readings. In the future, i think it would be better to optimize this loop so that instead of saving all the readings into an array, i could only save a limited amount thus minimizing read times and increasing the real-time response between sensor and screen. I didn’t have enough time to implement this.

Digital Painting Results from testing


Next Steps

To improve on SmartCharms i would like to redesign the sensor itself, perhaps making it smaller and more discrete or keeping it at it’s current size but experimenting with different housing for the sensor itself so that i could get softer textures and more flexibility. I’d like to see what the values would be if i used a thinner cover, i.e. removed the neoprene…would the resistance be higher when the sensor is crumpled?

I would also like to improve on the visualizations. I was thinking of creating a coloring book type feel where different shapes would be generated on the screen to form a mandala and different parts of it would be colored depending on the sensor reading from squeezing the sensor.

Link to code: