I worked on refining the hand scanner I modeled previously. The guests use the scanner to gain access to the next room. An Arduino senses touch at specific locations and lights the panel appropriately. For more information on the model, please see my Sketch Model site. The concept behind the hand scanner is identical to the touch-sensitive wall panels we're also planning in our room. After building the initial model a couple of weeks ago I identified a few problems and have since worked on creating and testing solutions. Items in blue are materials needed--a full list is provided at the end.
1. Lighting Effects
After building the first model, I quickly found out the LEDs I used were too dim. I had placed 5 LEDs in a ring around each fingerpad which was a pain to wire and solder. When viewed through the white acrylic face plate the spacing was very noticeable with distinctly lit spots, and the overall brightness was too low. I've decided to switch to electroluminescent wire, which can be bent into a ring circling each fingerpad. This drastically reduces build time and complexity, the number of wires and potential for wiring error. The visual effect is also improved with a brighter, solid ring circling each finger.
However it's not all good news. In addition to being sightly more expensive than regular LEDs, EL wire runs on alternating current. We then need an inverter to change the Arduino's DC voltage signals as well as step up the overall voltage to the right amount. To control which EL wires are illuminated we can use a Triode for Alternating Current (TRIAC) for each EL wire. This component is a type of switch-gate thyristor for passing alternating current. It's like a small circuit for powering the lights. It's normally broken, but with a signal from the arduino, the circuit closes and the wire lights up. These added components aren't too much of a problem, and really the TRIACs are replacing resistors normally used for the LEDs.
2. Touch Sensing
The first model used a voltage divider circuit to sense contact with conductive surfaces. It worked from the user's hand completing a circuit which lowered the voltage on an Arduino pin. Once below a certain threshold, LEDs near the corresponding fingerpad were lit. This method was incredibly easy to implement but required exposed conductive surfaces (breaking the clean, continuous-surface aesthetic of the room), had unrealiable voltage drops (sensitive to finger length, temperature, and hand moisture), and required one of the pads to act as ground (so fingertips only light up if the palm is also pressed).
Because of these problems, I've switched to capacitive sensing: measuring changes in capacitance of a conductive surface. When a finger, or any other conductive material is near the conductive fingerpad, the two behave like a capacitor. Otherwise the fingerpad is just a stray wire with no effect.
So how am I sensing when a capacitor is created? I use an Arduino to time how long the circuit takes to charge and discharge. I use one pin on the Arduino as a SendPin and connect it to another, the ReceivePin. As I change the voltage on the SendPin (0 or 5 volts), I record the time it takes for the ReceivePin to adopt the same voltage. With no capacitor, this is almost instantaneous.
But with a capacitor, it must charge or discharge before current continues through the rest of the circuit. The RC time constant (τ = R*C) is the amount of time to charge the capacitor to 63% or discharge it to 37%. This results in a significant--relative to the untouched circuit--lag time between the Send and Receive Pins. The Arduino rapidly repeats this routine (changing the SendPin and timing the response) to determine whenever a finger is near the pad.
Capacitors work with a nonconductive material in the center. This allows me to place a solid front plate over the fingerpads, hiding all components. It matches the room aesthetic, adding to the initial reveal experience as guests enter a completely featureless room. The capacitive method is more reliable, giving a clear difference between touched and untouched, and can sense individual fingers.
In practice, the circuit looks like the one below.
To test the capacitive sensing, I changed the circuit inside my sketch model. Unfortunately I didn't have EL wire to test, so I'm still lighting the rings of LEDs. The following video shows the lights being activated with direct contact and again through a solid sheet of acrylic.
Some things to note: The capacitive thresholds are calibrated for use through the acrylic plate, which decreases capacitance. That's why at the beginning of the video direct contact with some pads affect others. Also because the whole scanner is now hidden, there needs to be some signal as to where the pads are. I'm thinking about making an outline of a hand in EL wire, which illuminates to tell you where to go.
An Arduino microcontroller senses touch and activates lights.
Conductive pads (copper)
I originally used aluminum (cut from a rod) for the finger pads, but copper is more conductive, easier to solder and is sold as a tape.
10MOhm resistor (6)
EL Wire (~4ft)
The housing is made from sheets of acrylic.