Activity Nudger

The concept:

The Activity Nudger light is a desktop companion that notifies a person working at their desk when they have been sitting for more than an hour, gently nudging them to get up for a few minutes. The device works with an on-off switch mechanism that controls the two states a person can be in. i.e Stationary Mode and Mobile Mode. While in Stationary Mode the device lights up white with a yellow ring and when in Mobile Mode, it glows ambiently in a greyscale color scheme slowly changing colors from black to white.

The design / Worksheet:


  • Display info that is important but not critical:

Activity nudge shows the user time information in a visual manner. It informs them that they’ve been working for at least an hour and are due a break. The info is not critical in that, if the user feels like they are not ready for a break yet, they can simply reset the Stationary mode by pressing the button to toggle the state. Ignoring the device, does not result in any critical side-effects.

  • Can move from the periphery to the focus of attention and back again.

When the device is in Stationary mode, it is in the periphery as no animations are happening, allowing the user to focus on their task at hand. When it switches into mobile mode, the ambient nudge, gently notifies the user and becomes the focus of attention. However, the user can with the click of a button, switch back to stationary mode thus shifting the device back to the periphery.

  • Focus on the tangible; representations in the environment

It is also a small, portable device that sits atop one’s desk and blends into the study/work environment non-intrusively. When it is off, it still blends into the desk environment as it looks like a small book.

  • Provide subtle changes to reflect updates in information ( should not be distracting)

The Activity Nudger stays white in stationary mode and when in mobile mode it lerps through a greyscale color scheme that it not distracting to the eye as it gradually changes going from white to greys to black with the yellow ring turning white as an additional indication of state.

  • Aesthetically pleasing and environmentally appropriate

The book theme fits into the office/study environment. Additionally, I would like the glass for the book to be frosted so that the ambient lights are even more muted and less distracting.

Low-fidelity Prototype:

Parts list:

  • Arduino Genuino Micro
  • 1 concave pushbutton
  • 1 single LED light
  • Jumper cables
  • Breadboard
  • 220 Ohms resistor
  • 10k Ohms resistor

screenshot-2019-02-14-004120Circuit diagram created on web app.


Arduino code:

The Arduino code for the device monitors signals from the push button and passes data to a Processing sketch over serial communication. Using an if condition, I toggle between the Stationary & Mobile state whenever the button is pressed.




Processing code:

The Processing code alerts a user to get active by creating an ambient nudge notification that tells them they have been stationary or working on something for at-least an hour. During testing, time was sped up to switch the state from stationary to nudge for mobile after a minute. When designing your own activity nudge use the time values you desire. I user 60 steps for 60 seconds a min and 60 min and hour, I user 1000 to represent 1 second. For an hour change this to 3,600,000  in the millis() check.

When msg is received over serial communication in serialEvent(), the string is split into an array and then depending on the state i.e 1 = = Stationary and 2 == Mobile, the isMobile boolean value is then set. This is what the draw loop determines to which animation to draw.

In my draw loop I use the millis function to run at set time intervals and change the background from black to grey in the Mobile state. In the Stationary state, the millis() check is used to figure out when to trigger the ambient nudge notification if a user has been in the Stationary state for atleast an hour or when testing atleast a minute.






When you need to run algorithms that happen over time – it is better and more efficient to use the millis() function. I had attempted to use a for loop and count down from a specific number to determine what color to make the ambient background, however this didn’t work because the loop still ran too fast and i couldn’t get the gradual change in colors and millis() gives a much cleaner solution.

Found a nice circuit diagram creation web app:


Github link to code: here

Performing an action every x-seconds : here


Project Journal #3 – Soma Garden


SOMA GARDEN is a digital garden powered by your bio data. The sweatier your palms, the more plants and flowers grow. By using electro-dermal activity(EDA) measured using DIY sensors and an Arduino, the changes in a person’s skin sweat glands cause changes in electrical resistance in the circuit which will trigger different levels of animations on the dome’s walls.

Ideation & reflecting:

I wanted to create a project that would treat biofeedback about sweaty palms in a positive way. For a lot of people, sweaty palms are a cause of anxiety as sweaty palms are normally viewed negatively in society. My project prompts personal self-reflection as instead of presenting data to show whether the body is under stress whether emotional or physical, it leverages the neutral nature of plants thus taking away any negative connotations.

Transferring authority of interpreting biofeedback back to the individual:

The animations allow anyone interacting with the SOMA GARDEN to interpret the volume of plants and flowers growing in their own way thus transferring authority on interpreting the bio data back to the user. As a developer, my role in the interpreting is minimal and doesn’t add any connotations either positive or negative to the final result because I focused on quantifying the sweatiness of one’s hands and creating different states for the dome; 0 – 20 (not very sweaty), 20 – 60 (slightly moist), 60-120 (sweaty), >120 (very sweaty)

How it works:

The dome responds to different states according to the sensor value ranges:

0 -(no interaction)

Dome’s walls go white / clear

0 – 20 (not very sweaty)

Animation of grass blades swaying in a breeze. 1/4 height

20 – 60 (slightly moist)

Grass blades swaying, flowers growing to half the dome’s height

60 – 120 ( sweaty)

Grass blades swaying, flowers growing to 3/4’s of the dome’s height

> 120 (very sweaty)

Whole dome fills with flowers and plants

Aesthetic visuals instead of biofeedback as numbers, maintains ambiguity so that individual interprets visuals by themselves:

The idea to grow plants came from the notion that sweating means our bodies are losing water  and that “water is life” and plants need water to grow.









Test run results:


To realize this low-fidelity prototype the following materials are needed:

  • Arduino Genuino Micro
  • Jumper cables
  • 2 Alligator clips
  • Aluminium foil
  • Tape or glue
  • Cardstock and writing implements
  • Scissor or cutting tool & cutting mat
  • 10K resistor
  • Breadboard

Circuit Diagram : source

DIY Polygraph

The grey wires in the fritzing diagram represent the sensors. They are connected to analog PIN A0 on the Arduino board.

To create your sensors – follow the instructions here and design the sensors according to whatever your idea is. This article presents instructions for a sensor to be attached around one’s fingers. For my idea, I envisioned having a pad with a palm cut out so that an individual is invited to place their hand on it. The sensors would be on the tips of two of the fingers. Below are images from my steps of creating the sensors.



Design of a high-fidelity prototype:



For a proof of concept I would like to work on creating this dome idea but on a single screen or panel hanging on a wall. The palm rest with the sensors would be placed beside it. I would like to explore perhaps using Google Glass so that the individual can still be immersed in the SOMA GARDEN. I believe having the individual enclosed gives them space to actually reflect in private on what they are seeing and what it might mean to them.  I believe that this design also gives the individual space to determine what their sweaty palms may mean, perhaps if they are feeling anxious the growing plants may distract them enough so that they can calm down and in terms of personal motivations, they can use the SOMA GARDEN as a space to meditate without external pressure.


Dream design:

SOMA Garden high fidelity idea


When coming up with threshold values test the sensors at different times of the day to get a variety in bio data. Additionally test with multiple individuals to get a more reliable sense of what kind of values you might get back.

Test different resistors to get one that suits your needs. Preferably choose a resistor that generates higher values or allows for a wider range of values on the serial monitor. This will help when creating different thresholds for the sensors. For this project a 330 ohms, 1.oK ohms and 10K ohms resistor were tested and a 10K resistor was chosen. Below are screenshots of readings from the testing of the resistors in the circuit.



Galvanic Skin Response Powered by Arduino (note: the circuit diagram shown in this article is incorrect) : here

Detect Lies with Tin Foil, Wire and Arduino : here


Roof Glass Dome: here

Potted plant: here


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:




Process Journal #1 – An E-Textile Safety Badge & Bracelet

E-Textile Concept:

Who: Women and vulnerable communities e.g. LGBTQ+, children

What: A discrete pin-able patch and a bracelet

When: Can be used in everyday situations – women’s march, pride celebrations, walking down a dark alley,

Where: Pinned onto clothing or worn around the wrist

How: Sends a distress signal, perhaps with GPS location, when the bracelet is pinched or the badge is pressed. Ideally, the signal would be sent to an application on a phone that would pass the message to a designated party e.g first responders or family and friends.

Technique chosen: In the beginning I decided to either knit or weave as I wanted to create a push button controller and a pinch controller. I settled on knitting as I felt that weaving might not work for the push button and may have been too stiff. However, now with hindsight, if I were to continue with the idea of a safety bracelet, I would use the weaving technique to create the pinch controller.

Badge & Bracelet design & design:

Below is how I envision the push button and pinch mechanism envisioned in a wearable version of the safety badge and safety bracelet.

img_20190123_215858_editPush Mechanism Design for Safety Badge


Pinch Mechanism Design for Safety Bracelet

Process: The Badge

E-Textile Components


  1. Prepare your materials and cut felt according to the size of badge you want. i.e. This design is for a square badge.
  2. Cast-on 10 stitches onto the knitting needle. Begin with your non-conductive piece.
  3. Knit in your preferred knitting style.
  4. Once you have a square piece, cast-off the stitches to complete the square.bc-3
  5. You should now have a non-conductive knitted square.
  6. Begin the next square by joining your conductive thread with the yarn to form one thread.
  7. Leave a “tail” of at least an inch in length and then cast-on 7 stitches.
  8. Knit in your desired style for 7 rows or until you have a square then cast-off.bc-4
  9. Repeat steps 6-8 to create a second conductive square. Ensure that each square has a “tail”.
  10. Sandwich the non-conductive part between the conductive parts and use the e-textile testing tool to test that the push button mechanism works. Tip: Ensure that the stitches on the non-conductive part are loose.
  11. Sew one conductive square to one side of the felt piece.
  12. Sew the other conductive square onto the opposite side of the felt piece ensuring that the tails of the pieces are on opposite sides.bc-5
  13. Pick one side of the felt and sew the non-conductive piece over one of the conductive pieces.
  14. Fold over the felt and test the safety badge lights the LED on the e-textile tool.


Process: The Bracelet

E-Textile Components


  1. Cut two 1/2 inch wide strips of conductive fabric.
  2. Using an LED and your battery from the e-textile testing tool, designate a + and – side to the strips.
  3. Place the remaining LEDs onto the strips and test that they all light up
  4. String some conductive thread through a press stud and sew a running stitch into the positive side of the conductive strips. Make sure that the press stud fits over the positive side of the battery pack’s press stud. bc-7
  5. Begin sewing the “legs” of the LEDs onto the positive strip.
  6. Sew all 5 LEDs onto the strip and snip the conductive thread when you get to the end of the positive strip or after the last LED has been fastened to the strip.
  7. Sew down the LEDs on the negative strip and snip the conductive thread leaving a tail. bc-8
  8. To create the knitted strip for the pinch circuit begin knitting with a mix of yarn and conductive thread. Ensure that you leave about a 1 inch tail.
  9. Knit for about 7 rows and then continue knitting with only yarn. You can snip the conductive thread.
  10. Knit with only yarn for 10 rows then attach the conductive thread at the end of a row and continue knitting a new conductive part.
  11. Knit for 7 rows and then cast-off and snip the yarn leaving a tail of conductive thread. bc-9
  12.  Attach the tail with yarn and conductive thread mix to the conductive thread tail from the negative strip from step 7.
  13. Attach conductive tail end to another press stud that fits over the negative side of the battery pack.
  14. Complete the circuit by attaching the battery pack i.e attach the press studs.
  15. When you pinch the knitted part, the LEDs should light up. I realized that the blue and green LEDs would not light as the 3V battery did not have enough voltage for the 3.2V bulbs.
  16. I switched out the LEDs using red, yellow, and orange LEDs which required 2.2V and all of them lit up as seen in the last picture. bc-10

The technique of working with the LEDs and was inspired by this post.