How to make a sponge


This video gives an overview of how the sponge is built.

What you need

Sensors, Arduino and XBee components can be found at RobotShop or SparkFun. For more generic electronic parts, I suggest DigiKey.

Qty Item Price (CAD) Total (CAD)
1 Battery 12.00 12.00
1 Arduino (Funnel IO) 28.00 28.00
2 XBee module (series 1.0) 23.00 46.00
1 XBee usb module 25.00 25.00
2 3D accelerometer 25.00 50.00
2 Force Sensing Resistor 8.00 16.00
7 Buttons 0.50 3.50
7 10,000 Ohms Resistor 0.30 2.10
2 1,100 Ohms Resistor 0.30 0.60
1 Foam 30.00 30.00
1 Fabric 10.00 10.00
1 Other (wires, solder, etc) 20.00 20.00
Total 243.20

The accelerometer I used for the sponge 2.1 (the MMA7360) is now deprecated but it can be replaced by the newer MMA7361. These accelerometers have a selectable range; just make sure it is set at 1.5g. The LilyPad buttons can be used instead of the ones mentioned in the list.

Seven 10 000 Ohms resistors are needed for the buttons. I suggest using a resitor array like this one. I did not follow my own advice, and the sponge ended up having an extra limb. It is not very elegant nor convenient.

My wires are stripped cat5 ethernet cables. For the fabric, I used a pair of leggings. I bought the foam at a local shop.

Putting things together

Assembling the sponge is very straightforward. You need soldering skills and basic electronic knowledge (to understand what you are doing).

Overview of the sponge. Accelerometers and force sensing resistors are sandwiched between two piceces of foam. Buttons are underneath. It is possible to calculate the twist and fold of the sponge by differentiating the signals of the two accelerometers.
Half naked Stripping Naked

Assemble the accelerometers.

Make sure the wires are long enough to let the sponge fold and twist. Use double sided tape to glue the accelerometers in place. Make sure they are parallel to the sponge.

How to wire the accelerometers.
Accelerometer schematics
Close ups of the two accelerometers. The orange wires between them links their grounds and +3.3V.
Accelerometer 2 Accelerometer 1

Accelerometers use analog inputs 0 through 5 on the Fio.

Accelerometer Axis Input
Accelerometer 1 X A0
Accelerometer 1 Y A1
Accelerometer 1 Z A2
Accelerometer 2 X A3
Accelerometer 2 Y A4
Accelerometer 2 Z A5

Assemble the FSRs.

I put the resistor inside the shrink wrap, right next to the FSR. This way, you need only 2 conductors from the FSR to the Fio board (Arduino).

FSRs are connected to the analog inputs six (A6) and seven (A7) of the Fio.

How to wire the force sensing resistors (FSR).
FSR schematics
Close up of a Force Sensing Resistor. Here, the shrink wrap has been taken of so that the resistor (1.1k) is visible.

3. Assemble the buttons.

For the buttons, I used a circuit board found in an old keyboard. Chances are you do not have a similar keyboard at hand, but I suggest you use a similar strategy: solder the buttons on a board and glue it to the sponge.

You can also use Lily Pad buttons which you can sew directly on the sponge.

There are currently seven buttons on the sponge. They are connected to the digital inputs 3,4,5,6,7,9,10 of the Fio.

How to wire the buttons.
Buttons schematics
The buttons are glued on the same piece of foam as the other sensors, but underneath. If I had used a resistor array (a single chip) the sponge would not have this disgracious extra limb.
Buttons Extra Limb

Configuring the XBee modules.

Follow the instructions from the funnel.cc page. Similar info is available on the arduino web site here.

Like noted on the funnel.cc page, you need series 1.0 XBee modules to be able to program the Fio wirelessly. If you have the newer XBee modules, no worries, you can still connect the Fio with a FTDI cable (see how to do this here).

Once the two XBee modules are configured, connect one to the Fio and leave the other on the USB XBee Module. Plug the battery to the Fio and turn it on. Two green lights should light on the USB Module. After a few seconds, one of the lignts turns off.

We can now program the Fio.

Leave a Reply

Your email address will not be published. Required fields are marked *