Capacitive sensors are an elegant way to control an Arduino using the Capacitive Sensing Library. But the sensitivity and error tolerance depend strongly on the hardware (sensor) design. I found a design guideline here and tested different setups which mostly work well if the Arduino was powered by battery. But the sensor signal changes dramatically if I connect the Arduino to a power supply.
Actually I found a design for five (and more) sensors which works well powered with battery and power supply.
Step 1: Materials and Tools
For a the five button sensor you need:
- Wire - 6 pieces, long enough to reach the Arduino
- Five washers - outer diameter 10 mm, connected to the receive pins
- Aluminum sheet - 135 x 30 x 0.2 mm³ - connected to ground
- Plywood or similar - 130 x 30 x 5 mm³
- For a breadboard setup five needles
Also, not shown, some tools and stuff:
- Soldering gun
- Drills - 2 and 3 mm
- Double-sided tape
Step 2: Prepare the Plywood
The plywood sheet is the base of the sensor field. Drill the holes like seen in the drawing. For each button you have to drill a big (3 mm) and a small (2 mm) one. The small one is for the sensor wire and the big one for the status LED. The rectangular hole is for the grounding of the aluminum sheet.
I tested different layouts and the one with 2 cm distance from button to button works best. As you see I used a longer piece of plywood to possibly extend the number of sensors.
Step 3: Cut the Grounding Plate
To get a better signal of the sensors (lower noise to signal ratio) you need a grounding like explained here. For this you have to cut the aluminum sheet like shown in the drawing. The small strip on the right side is to attach the wire for grounding.
Step 4: Prepare the Washers As Receive Contacts
The washers will be connected to the receive pins at the Arduino. Therefore you have to solder the wires to the washers. Unshielded wires work for me. At different setups shielded ones could be better.
Step 5: Join Aluminum Sheet and Plywood
Glue the grounding plate with two double-sided tape strips to the plywood. Pay attention to center all holes in the aluminum and the plywood correctly.
Step 6: Insert the Washers to the Plywood
I used superglue to fix the washers on the plywood. But you can also use other adhesives. Keep care that there is no contact between the washers and the ground plate.
Step 7: Needels As Breadboard Contacts
If you want to use the sensor field for a breadboard setup it is useful to have some pins on the wires. I use the top part of needles and solder the wires to the heads.
Step 8: Cover the Sensor Field
Because it should be a capacitive sensor field I covered it. For the first trials I use a piece of cardboard and some red dots to mark the sensor positions.
Step 9: Test the Sensor Field
To test the sensors I wrote a small Arduino program.
Wiring the sensor and the Arduino:
- Send Pin: D2
- Receive/Sensor Pin 0-4: D2-D7
- Ground: GND
- One 10 MΩ from send pin to every receive pin
The buttons are connected as explained in the CapSense documentation.
The serial output can be switched using the debug variable:
- int debug = 1: continuous serial output of the five sensor values
- int debug = 0: output only the key-press event (c0-c4). This can e.g. used by a Python script.
The video shows the output of the program in debug mode. Note that there are influences between each sensor press to the other sensors. This has to be filtered by the software.