Ever wondered how the touchpad on your laptop works? Learn how by making your own with a mix of high-tech and low-tech materials!
This instructable was made by Peter Enns and Chris Imbriano as part of the CS graduate course "Tangible Interactive Computing" at the University of Maryland, College Park taught by Professor Jon Froehlich. Please see http://cmsc838f-s14.wikispaces.com/ for more details.
Step 1: Intuition
In order to understand the overall design, you need to understand how the resistance of a material is related to its length. For a quick but good overview of resistivity, read the wikipedia article (it's not very long!).
You can leverage the fact that resistance increases linearly with length to measure distances using a voltage divider. In the first diagram on this page, a point on the resistive sheet (the big X) is connected to ground. R2 is equal to p * L / A, where p is the resistivity of the material, L is the distance from left side of the sheet to point X, and A is the cross-sectional area of the sheet. Note: the distance from the bottom / top of the sheet to X is unimportant because we're assuming that the electric potential is the same at every point along the left side of the material. This means that R2 grows as L grows. Since R1 and R2 form a voltage divider, Vx also increases as L and R2 increase.
To measure distance from the bottom of the sheet instead, you simply need to rotate the drawing 90 degrees. Finally, both distances can be measured at once if the sheets are arranged one on top of the other with a conductive sheet connected to ground in the middle (see the last diagram). When the sheets are pressed so that they all touch, both circuits are completed at once. If you can measure both the distance from the left side of the sheet and the distance from the bottom of a sheet to arbitrary points on the sheet, you have (x, y) coordinates!
Step 2: Materials
- Two 20 cm by 20 cm sheets of resistive fabric
- One 20 cm by 20 cm sheet of knit conductive fabric (note: woven conductive fabric is too stiff)
- Tough corrugated cardboard or stronger material
- Conductive thread
- Regular thread (not pictured)
- Eight ~20 cm elastic bands (not pictured)
- An Arduino Leonardo
- A breadboard
- Jumper wires
- Two 1 MOhm resistors
- Two 0.01 mF ceramic capacitors
Step 3: Make the Stand
Feel free to skip this section. You can make the stand however you want as long as it is large enough and strong enough to mount all three sheets of conductive and resistive fabric.
- Cut four 4.2 cm by 4 cm crosses into a large sheet of cardboard. They should be spaced apart such that each cross would be at a corner of a 24 cm by 24 cm square.
- Cut out four copies of the the smaller cardboard pieces displayed in the third photograph (middle row, right).
- Slide each piece with the larger hole cut out of the center into the 4.2 cm slot in each cross so that the small notch on its edge lines up with the cardboard base.
- Slide them to the side so that the notch catches the base and the large hole cut out of their center lines up with the cross's other slot.
- Slide the other smaller piece into the cross's other slot to lock both pieces into place.
Step 4: Prepare the Conductive and Resistive Sheets
Remember in the Intuition section that we had to assume that the electric potential was the same along one side of the resistive material? To achieve this, sew conductive thread along one side of both sheets of resistive fabric making sure to hit every intersection of the black grid along the way. Note: use 10-20 cm of thread more than you need. It will be useful later.
Next, attach elastic bands to the corners of both the conductive and resistive sheet that will be mounted above both other sheets. This should be done with a sewing machine set to a cross-stitch pattern to minimize tearing.
Step 5: Assemble the Touchpad
- Attach a resistive sheet to the bottom of the stand with tape so that the side with conductive thread is on the left.
- Attach the conductive sheet above by tying the elastic bands to the legs of the stand.
- Attach the other resistive sheet above, again, by tying the elastic bands to the legs of the stand. Make sure that the side with conductive thread is on top.
Step 6: Build the Circuit
- Build the circuit in the first diagram.
- Connect Vx to the bottom sheet with conductive thread (can be done by trying the thread to the correct leg of the 1MOhm resistor.
- Also connect Vx to pin A0 on the Arduino
- Connect Vy to the top sheet with conductive thread.
- Also connect Vy to pin A1 on the Arduino.
- Connect the conductive fabric layer to the circuit ground with conductive thread and a jumper wire.
- Connect +5V and Gnd pins on the Arduino to the corresponding nodes in the circuit.
CAUTION: Be careful to avoid shorts caused by the conductive thread! Tape it down with electrical tape if necessary.
Step 7: Put It All Together
Now that all of the physical components of the touchpad are ready to go, you'll need to upload code to the Arduino that (1) measures the voltage on pins A0 and A1, and (2) moves your cursor. You can use our Arduino project as a starting (or ending ;)) point.
Notice that there is a lot of filtering and averaging going on. Although the touchpad does work, the signals are pretty noisy, even with all this filtering. We've been unable to come with with a great solution so far. Maybe you will!
We hope you enjoyed this instructable. Please comment if you have any questions, comments, or suggestions!