Range of Motion Visualizer


GitHub: https://github.com/npyalex/Knee-Stretch-Sensor


The Range of Motion Visualizer is an exploration of the capabilities of stretch-sensor conductive fabric. The Visualizer uses a stretch-sensor in a bending motion rather than a stretching one and visualizes the output as a multicoloured band. In concept, the Visualizer is imagined as being used as a rehab tool. When prescribed a limited range of motion as a part of physical therapy, a wearer would calibrate the Visualizer to their prescribed range. They would see their motion represented. Safe motion that would not harm their recovery would (at this stage, anyway) be represented by a small green bar. The bar would elongate and turn yellow as they approached the outside of their prescribed range, and turn red when they were outside it.


After exploring the functionalities and properties of the fabrics we had been given in-class, I decided to work with the stretch sensor. I had worked with pressure sensors briefly in the first semester, so I preferred not to work with them, and had been knocking around the idea for a wearable that would visualize motion for a little while, inspired by the Motex Project for smart textiles. The stretch sensor was an opportunity to realize that idea.



I put together a circuit using the diagram provided in-class as an example, and ran it while looking at the Arduino Serial Port to see what kind of readings it generated.

Then I took some code from the Ubiquitous Computing class and used it as the basis for moving the sensor readings into Processing.

When that confirmed that Processing worked, I wrote some code to adjust the length of a displayed rectangle based on the sensor reading.

After a few tests I determined what felt like a good range to implement the changing colours – yellow for approaching the danger zone, and red for beyond.

Then I put together the sleeve for holding the sensor. I took an old sock and cut away the foot. I sewed a hem into the sock, then turned it inside out and sewed in the length of stretch sensor fabric with conductive thread.



I left long lengths of conductive thread to attach alligator cables to while testing.

In testing this was uncomfortable and unwieldy. Because of the simplicity of the circuit I decided to minimize it. I used a small breadboard. I removed the extraneous wires and ran the power side of the sensor directly from the 5V pin. I set up the variable resistor directly from the A0 pin, and the resistor directly to ground.


I removed the extra threads and sewed patches for alligator clips to attach to. I had to recalibrate the code at this time, as the sensor had begun returning lower readings. As a nice bonus, touching the two pads completed the circuit and served as a default “max” for the range-of-motion tracking function.


I continued to explore visualization. I wanted to create a curve that mirrored the bend of the user’s arm. I used the curve() function, as well as explored using curveVertex() within the beginShape()/endShape() functions. I did get a reactive curve going, but I decided that it was not as strong a visualization as the bar.


Next Steps

This could easily be made wireless – perhaps with XBees? I would have to do more sewing, including a pocket for the microcontroller. I also considered exploring haptic feedback in addition to – or perhaps instead of – visual feedback. I would like to include a vibrating motor that would buzz lightly when in the yellow zone and strongly when in the red. Beyond that, I would want to create a means for quickly and simply re-calibrating the sensor on the fly, and continue working on using a curved image as a visualization.