🌏

電子工作 その11(タッチスイッチ:TTP223の使い方を学ぶ)

2023/08/07に公開

こんにちは、Ideagearの鈴木陽介です。

今回は、タッチスイッチ(タッチセンサー)として、非常に安価でポピュラーなTTP223の使い方についてご説明します。

デジペ制作において、私自身このタッチスイッチには散々お世話になってきました。
ですので、今さら感は否めませんがw、逆によく使っていたこともあり、てっきり記事にしていたと思い込んでいたくらいです。

参考記事

はんだづけによる動作パターンの設定について非常にわかりやすい図が掲載されています。
https://amzn.asia/d/aBjkry9

デジペ制作においては、タッチスイッチと音声再生モジュールをセットで使うことが多いです。
音声モジュール(DFPlayer Mini)の使い方に関する下記記事も併せてご覧ください。
https://zenn.dev/suzuky/articles/deca20bb6e8499

はじめに

本記事は、2023年8月20日の午後に深セン市羅湖区の国貿(改革開放後に急速に発展した深センにおいて、国境の町として唯一、昔から発展していたエリア)で開催される予定の電子工作のワークショップ用のテキストとして作成しました。

下記は当ワークショップのチラシです。

配線

TTP223は静電容量式タッチスイッチに分類されます。
安価で、Arduinoに対応しており、かつ配線も下記の通り3か所だけ。

Arduino Uno TTP223
GND GND
各信号ピン I/O
5V VCC


動作パターン

TTP223は、はんだづけによって一部の端子をショートさせることで、ハード的に4つの動作パターンを実現させることができるという優れモノです。

これについては、図と写真で説明します。
※個人的にはアマゾンで掲載されている下図がもっともわかりやすいです。


画像引用元:https://amzn.asia/d/aBjkry9

A B 動作パターン
1 - - 通常OFFで、触れている時だけON
2 - 通常ONで、触れている時だけOFF
3 - 最初OFFで、その後は触れるたびにON/OFF切り替え
4 最初ONで、その後は触れるたびにON/OFF切り替え

補足:
〇:2つの接点をはんだづけにより短絡(ショート)させている状態
-:2つの接点が短絡していない(離れている)状態
※デフォルトは、上図1の状態です。


A・B共に短絡無し(上図1の状態)


Aのみ短絡(上図2の状態)


Bのみ短絡(上図3の状態)


A・B共に短絡(上図4の状態)

感度調整

また、TTP223はタッチ時の感度もコンデンサを追加することで調整できます。
追加する場所は、次の写真の黄色の丸で囲まれた部分です。

使用例:

製品に組み込む場合は、ホットボンドやシリコンで接点をカバーしましょう。
これはショートすることを防ぐだけでなく、補強したり液体・気体から保護する意味合いもあります。

感知範囲の調整

さらに、先ほどのコンデンサを追加する部分に対して銅線をはんだづけし、その先に銅箔を追加することで、その銅箔自体や銅箔が接触している物体をタッチすることでもON/OFFをコントロールできるようになります。

下記は、製品に組み込む前の様子:

下記は、銅箔を実際に物体に貼り付けて操作した時の様子:
https://twitter.com/Ideaport_Suzuky/status/1688545821833441280
今回はプラスチックですが、木片でも大丈夫です。

但し、木片は材木の種類によって水分の含有量が異なるため、それによって、同じコンデンサと銅箔を使用していても反応が異なりますのでご注意ください。

ソースコード

これまでは、TTP223のコスト面やハード面の利点について言及してきましたが、ソフト面でも良いところがあります。それは、たとえば、Arduinoを使う場合はライブラリーが不要で、記述もとてもカンタンで済むことです。

//TTP223の変数を定義
const int TOUCH1 = 2; //通常OFFで、触れている時だけON(スイッチ1):I/Oを2番ピンに接続
const int TOUCH2 = 3; //通常ONで、触れている時だけOFF(スイッチ2):I/Oを3番ピンに接続
const int TOUCH3 = 4; //最初OFFで、その後は触れるたびにON/OFF切り替え(スイッチ3):I/Oを4番ピンに接続
const int TOUCH4 = 5; //最初ONで、その後は触れるたびにON/OFF切り替え(スイッチ4):I/Oを5番ピンに接続
const int LED_PIN = 6; //LED用:6番ピンに接続

void setup() {
  pinMode(TOUCH1, INPUT); //スイッチ1の入力を設定
  pinMode(TOUCH2, INPUT); //スイッチ2の入力を設定
  pinMode(TOUCH3, INPUT); //スイッチ3の入力を設定
  pinMode(TOUCH4, INPUT); //スイッチ4の入力を設定
  pinMode(LED_PIN, OUTPUT); //LEDへの出力を設定
}

void loop() {
  if (digitalRead(TOUCH1) == HIGH) { //スイッチ1の動作パターン
    digitalWrite(LED_PIN, HIGH);       
  } else if (digitalRead(TOUCH2) == LOW) { //スイッチ2の動作パターン
    digitalWrite(LED_PIN, HIGH);        
  } else if (digitalRead(TOUCH3) == HIGH) { //スイッチ3の動作パターン
    digitalWrite(LED_PIN, HIGH);        
  } else if (digitalRead(TOUCH4) == HIGH) { //スイッチ4の動作パターン
    digitalWrite(LED_PIN, HIGH);
  } else {
    digitalWrite(LED_PIN, LOW);
  }
  delay(1);
}

各動作パターンの確認

それでは、短絡の仕方による4つの動作パターンの違いについて、写真と動画で一つ一つ見ていきましょう。

スイッチ1:通常OFF
スイッチ2:通常ON
スイッチ3:最初OFF
スイッチ4:最初ON


電源投入時(デフォルトの状態)→LED点灯(スイッチ4がONになっているため)


スイッチ4を一回タッチしてOFFにした状態→LED消灯


スイッチ1をタッチしっ放しで常時ONにした状態→LED点灯


スイッチ2をタッチしっ放しで常時OFFにした状態→LED点灯


スイッチ3を一回タッチしてONにした状態→LED点灯

下記は、実際に各スイッチを操作した時の動画です。
https://twitter.com/Ideaport_Suzuky/status/1688528097979838464

まとめ

いかがでしたでしょうか?

まぁここまで散々説明してきましたが、とくにこだわりが無い場合は、A・Bの端子に対して何もせずにそのまま使ってください。

理由は、買った状態のままであれば、触らなければOFFし続け、触った時だけONするという一番オーソドックスな使い方だからです。

また、今回は配線自体は非常にカンタンなため、Fritzingによるブレッドボード図は省き、その分を図や写真を多くすることでカバーしました。

なお、TTP223はあくまでも静電容量式タッチスイッチですので、電源系のON/OFFスイッチとして使うことはオススメしません。

電源系はぜひ、電気をより確実にカットできる物理スイッチをお使いいただきたいですが、それ以外のスイッチとしては、これ一つでかなり広範な用途まで応用が利くことを感じていただけたのではないでしょうか?

少なくとも、私の場合は、これをぬいぐるみの手足、耳、頭、しっぽ等に入れて、サイクルの起動スイッチとして存分に使わせてもらっています。

つまり、TTP223は、まさにデジペクリエイター的には神スイッチなのですw

今回は以上です。ではまた!

Discussion