↑でやったMPR121を使う方法の他にArduinoのCapSenceというライブラリを利用した静電容量センサーも実験してみました。
作ってみる
CapSenceのページにあるように送信ピンと受信ピンの間に抵抗を挟み、受信ピン側にセンサーとなる銅線を接続します。
こんな感じでさくさくっと。 上の抵抗から順番に、1MΩ、2MΩ、3MΩ、3.9MΩ、5.1MΩで実験しました。
Arduinoに書き込むプログラムはCapSenceのサンプルコードをそのまま使いました。
試してみる
1MΩでは、指が直接触れないと出力に変化はなかったです。
だいたい3MΩあたりから、触れなくても値に変化が出てきます。 5.1MΩで、触れなくても結構出力の数値が変わるのでしきい値を適当に決めれば、判定できそうな感じではありました。
数値のばらつきがかなり大きいので、ソフトウェアの処理で誤判定をなくす工夫(サンプル数を上げる、N回の平均を取る、一定時間内にM回のしきい値超えがある)は必要そうです。
CapSenceによれば、並列にコンデンサを仕込むだけで、数値が安定するそうなので、それも試してみるのはありかなーと。
配線が動いただけでもだいぶ数値が変わってしまうので、ちゃんと固定してから再度しきい値を決めたりしないといけない感じです。
サンプリング速度は5.1MΩのときで3~4ms程度だったので、銅線が25本あるときは100msで全部スキャンできると思います。 だいたい10fpsくらいのサンプリング速度ですかねー。
まとめ
MPR121を使った方法のほうが精度は高そうです。
配線が動いたときなど大きく値が変化するときはオートでキャリブレーションが必要ですが、そのあたりの判定ロジックとかを考えると中々大変そうな感じがします。
簡単なタッチボタンであればArduino単体で問題なさそうです。
特に電極に直接触れることができるときは、数値差が桁が違うレベルで大きいので、しきい値を大きめにとるだけで、簡単に判定できると思います。