I ran a workshop. Photoset.
This weekend while walking down Mill Avenue in Tempe, AZ, I saw an interesting sight. The sidewalk is made of bricks, but one of them was glowing. Upon closer inspection, it appeared one brick had been removed and replaced with an acrylic box containing a light source, which was backlighting a drawing on the inside of the transparent acrylic. My curiosity got the better of me, and I pried the top off (which was caulked to the bricks around it) with my multi-tool. What I found was pretty neat: a thick top layer of clear acrylic protecting a vellum drawing, lighted with a single 5mm LED hooked up to a battery pack. The initials “BRT” and the date “10/07” were written on the inside of the box. Having opened the box and accidentally torn the drawing, I felt I should add something to indicate I meant well. I happened to have some LEDs and coincell batteries with me, so I taped up an extra light (the one already in the box was not very bright or diffused), and stuck it inside, then pressed the lid back on as securely as I could. I have no idea who made it, but I have a Flickr set – Link.
I’m researching squeeze sensing as a mode of tactile interface. Here I will cover the process of developing a squeezeable sensor and the firmware/software concerns associated with interpreting the data from the sensor. This fulfills the “sensor project” for my class called Computational Principles in Media Arts taught in AME at ASU by Todd Ingalls and Hari Sundaram.
First off, how do we sense “squeeze?” People squeeze all kinds of things: lemons, steering wheels, loved ones, toothpaste and other toiletries, pimples, stress balls, hand exercisers. I would like to focus on the latter two, which provide a therapeutic activity for those with Repetitive Strain Injury (RSI). Using flex sensors arranged in a certain pattern on a spherical object, in this case a rubber dog toy, one can capture whenever the ball is squeezed. Here’s a sketch of the sensor layout:
There are three types of interactions I wish to sense with this setup. The first is how hard the user is squeezing. The second is whether or not that squeeze is sustained. The third is if the user is squeezing and releasing the sensor. With these three pieces of information, I believe it’s possible to create a software exercise program to prevent RSI symptoms by strengthening hand muscles.
In regards to sampling rate, I am inputting this data via analog-digital conversion using an Arduino board (Atmega168). My firmware samples the state of the each sensor ten times every second and delivers it via serial to the computer. The sampling rate has to be high enough to sense quick changes in the state of the sensor, such as quick squeezing and releasing, but not too fast as to overload the serial port receiving the data.
In the imagined scenario of an anti-RSI exercise software application, the routine would guide you through a program of motions and evaluate them in real time. For instance, a command might be given to say “squeeze the ball as hard as you can for 10 seconds,” then start timing when you start squeezing, showing you on screen how many seconds you had left to squeeze. In another exercise, you could be instructed to “squeeze and release the ball 20 times.” The software would then count how many discreet squeezes were performed and allow you to complete the routine when all 20 squeezes had been counted.
Another sensing concern is that of granularity of squeeze intensity. How can we tell how hard the ball is being squeezed? There is inherent noise in the signal. The typical incoming values of the two sensors at rest are between 96-103 and 116-124. The difference in these at-rest values can be attributed to the slightly non-spherical nature of the ball used (it has a raised portion, making one sensor slight less bent when applied flush to the ball’s surface). The values input when the sensors are bent as much as is possible given the flexibility of the ball are about 200. We can therefore assume a noise level of +/- 8 on any signal reading, limiting the accuracy of our sensing. We can, however, tell the difference between a squeeze at 150 and a squeeze at 180 with relative confidence. This allows us to evaluate, on a qualitative level, whether the squeeze is “none,” “soft,” “medium,” or “hard,” at the very least. For the purposes of the proposed anti-RSI application, this low-granularity data is sufficient.
Ideally this application would track your hand strength’s progress over time, but that’s probably more along the lines of this class’s “modeling” project. With the aid of consultation by a physical therapist, the data tracked over time by this device could aid in a treatment program. You’d think that I’m a student in the Biofeedback for Rehabilitation application group here at AME, but the real case is that I’ve been battling RSI since I first learned to type.
The two analog flex sensors are sewn into a form-fitting muslin skin on the outside of a rubber, squeezeable dog toy. The analog sensors are wired to two analog input ports on an Arduino board, by way of a circuit board shield. This shield covers the reset button on the Arduino board, but this board has been converted to allow for “diecimila” functionality (add a .1 micro Farad capacitor in just the right place, and you no longer have to press the reset button in order to load a new program).
The squeeze interface has many more applications than just an RSI exercise device. In the Reflective Living application group we’re currently investigating novel tactile interfaces such as squeeze, twist, pull, and various motion gestures to create everday experience-scapes as well as to navigate through digital media, thereby bringing it back out into the physical world.
A Flickr set of all the photos of the squeeze interface is available. So is the Arduino code for dealing with the sensor data.
I’ve devised these recipes, which have proven delicious.
One, a spinach tofu quiche, uses havarti, feta, and the baked tofu described in the second recipe.
Spinach Tofu Quiche
1/2 batch baked tofu, cubed (see below)
1 large handful baby spinach
3 medium red potatoes
1 1/2 tbsp. olive oil
1 cup milk
1/2 sweet white onion (vidalia or similar)
1/2 tbsp. butter
1 cup havarti cheese, shredded
1 cup herbed feta cheese, crumbled
2 tbsp. sour cream
fresh cracked pepper
Preheat oven to 400 degrees.
Shred potatoes into colander and salt generously. Let sit in the sink for 20 minutes, then press with paper towels to get as much moisture out of them as possible. Liberally oil a 9″ pie pan, then press shredded potatoes to coat bottom and sides of the pie pan. Don’t forget to oil the very top edge. Brush remaining oil over potato “crust” and bake for 20-30 minutes until it starts to brown and crisp up.
Turn the oven down to 325 degrees.
Slice onion into rings and saute in butter over medium heat approx. 20 minutes or until translucent, soft, and just starting to brown.
In a large mixing bowl, combine cheeses, sour cream, milk, eggs, tofu, spinach, and pepper and stir. If you’re using another cheese in place of feta, add a dash of salt. Pour this mixture into the potato crust. Layer the sauteed onions on top of the quiche and bake for 30-40 minutes or until darkened on top and firm. Let stand ten minutes before serving to let the quiche set. It’s great at room temperature or just slightly warmer.
Baked tofu recipe after the jump.
CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) images are used to thwart internet bots from creating accounts or posting spam. I collect particularly attractive CAPTCHA images, then recreate them in acrylic.
The above painting is entitled “FW1K9” – Goto project page
I’m the proud author of an article in the upcoming eleventh issue of MAKE magazine: Plush Irradiated Sirloin.
I just assembled my newly-arrived Bare-Bones Arduino clone, developed by Paul Badger. How great! Not only is it perfect for embedding in projects, but the instructions Paul made to go along with it make it so easy. I wish I had a teacher like him when I was learning the basics of physical computing! I used double-male header pins (graciously given by Mr. Badger) for the digital i/o so that I can plug the BBB into a solderless breadboard or plug stuff in on top. I have three more kits to assemble. This board is much easier to deal with than the NG (that communications chip is really hard to solder), and the Atmegas come pre-bootloaded. The development of this board is a case in point for why open source hardware rocks. Thanks, Paul!