Low Tech Touchpad

fabric-touchpad.gif

external image IAtCqmk.jpg

Introduction


Aren't you sick of how small, accurate, and convenient your laptop's touchpad is? Dislike how uncomfortable non-fabric materials feel against your fingertips? Swipe your troubles away with the lowest-tech touchpad ever made.

Materials


  1. Conductive fabric
  2. Resistive fabric
  3. Conductive thread
  4. Resistors
  5. Capacitors
  6. Heavy-duty cardboard
  7. Elastic bands
  8. Paper
  9. Graphite

How


We got a lot of mileage out of the fact that resistance of a resistor increases linearly with the length of the resistive material (R = rho * L / A). For more information, refer to the wikipedia article on resistivity.

By running conductive material (e.g., conductive thread) along one edge of a square of resistive material, the resistance between that edge and any point on the material is related roughly linearly to the shortest distance between that point and the edge. This follows from the fact that electricity flows along shortest path between the edge and that point. By connecting a resistor in series with the conductive material, and touching ground to a point on the resistive fabric, you obtain a voltage divider that can be probed by analog inputs on an Arduino. The voltage readings can then be used to recover the x coordinate (if the conductive material is attached the left or right side), or y coordinate (if the conductive material is attached to the bottom or top) of the location the material was touched.

external image oGW7CbP.jpg
external image 39qdKUP.jpg
Our design consists of one sheet of conductive fabric sandwiched (note: but not touching!) between two of these special sheets of resistive fabric (early concept art shown below). The conductive material on the edges of the resistive sheets are positioned such that both the x and y coordinates can be recovered when someone presses the top sheet all the way to the base of the pad.

external image HMFMEIA.jpg
Concept sketch.

Difficulties / Lessons


1) Setting up the three layers of fabric so that they don't touch at rest but all touch when pressed turned out to be very difficult. Originally, we planned on having two flat picture-frame-like between each sheet of fabric, but the fabric was not flexible enough for this scheme to work. We ended up creating a frame with four posts out of cardboard. The top two sheets are connected to the posts with elastic bands so that they can touch when pressed but do not touch while they aren't being pressed.

external image kBnuibG.jpg
An early prototype.

2) There is a lot of noise in the signal that causes the mouse pointer to jiggle. Although we did not manage to get rid of it entirely, we mitigated enough of the noise to make the device usable. First, we filter out high frequency with low pass filters using passive components. Second, we calculate the distance to move the mouse using a sliding window average of the last N readings to move the mouse instead of only using the current reading.

3) Controlling mouse clicks with graphite on paper and our hands proved to be too unreliable and very hard to debug since a malfunctioning program that controls the mouse on your development computer can cause chaos. We decided to abandon this idea for now, but think it would be a fun thing to eventually add to the project.

Link to code on GitHub