Arduinoチュートリアル:静電容量式タッチセンサー

みなさん、こんにちは!

この説明は、Arduinoで静電容量式タッチセンサーを使用する方法を説明するチュートリアルです。 静電容量センサーは一種のタッチセンサーであり、アクティブ化するために力をほとんどまたはまったく必要としません。

静電容量式タッチセンシングに関するこのInstructableで、以下を紹介します。

  • 静電容量センサーの仕組み
  • Arduinoでそれらを使用する方法
  • このInstructableに含まれる3つのArduinoプロジェクトでそれらを実装する方法
  • 最初の2つのプロジェクトで使用されるCapSenseライブラリの使用方法。 デモコードも含めました。CapSenseライブラリの説明です...

これらのプロジェクトに必要なスキルは最小限です。

  • エレクトロニクスおよびArduinoの基礎知識。
  • はんだ付け(オプション)

それでは、この静電容量式タッチセンシングが何であるかを理解することから始めましょう!

ステップ1:CapSenseライブラリと静電容量センシングについて...

ほとんどの静電容量センシング関連プロジェクトでは、CapSenseライブラリを使用しました。 arduinoのプレイグラウンドでは、Capsenseライブラリについての良い説明があります。 ただし、Arduinoの初心者であれば、そこに書かれていることの半分しか理解していないと思います。 したがって、ここでは簡単な説明をしています...

静電容量センシング:

静電容量式タッチセンシングは、アクティブにするために力をほとんどまたはまったく必要としない人間のタッチセンシングの方法です。 1/4インチ以上のプラスチック、木材、セラミック、またはその他の絶縁材料(金属ではない)を介して人間のタッチを感知するために使用でき、センサーを視覚的に完全に隠すことができます。

容量性タッチを使用する理由

  • 各タッチセンサーに接続する必要があるワイヤは1本だけです。
  • 非金属材料の下に隠すことができます。
  • ボタンの代わりに簡単に使用できます。
  • 必要に応じて、数インチ離れたところから手を検出できます。
  • とても安い。

どのように機能しますか?

センサープレートとあなたの体はコンデンサーを形成します。 コンデンサが電荷を蓄えることはわかっています。 静電容量が大きいほど、より多くの電荷を蓄積できます。

この静電容量式タッチセンサーの静電容量は、手がプレートにどれだけ近いかに依存します。

Arduinoは何をしますか?

基本的に、arduinoはコンデンサ(つまりタッチセンサー)の充電にかかる時間を測定し、静電容量の推定値を与えます。

それにもかかわらず、Arduinoは正確に静電容量を測定します。

プロジェクトで静電容量式タッチを使用する1つの方法は、CapSenseライブラリを使用することです。 Capsenseライブラリの場合、arduinoは1つの送信ピンと必要な数の受信ピンを使用します。 受信ピンは、中から高値の抵抗を介して送信ピンに接続されます。

以下に抵抗器のガイドラインを示しますが、目的の応答を確認するために実験してください。

  • 絶対タッチを有効にするには、1MΩの抵抗(またはそれ以下)を使用します。
  • 10MΩの抵抗を使用すると、センサーは4〜6インチ離れたところで応答し始めます。
  • 40メガオームの抵抗を使用すると、センサーは12〜24インチ離れて応答し始めます(フォイルのサイズに依存)。 一般的な抵抗のサイズは通常10メガオームで終わるため、4つの10メガオームの抵抗をエンドツーエンドではんだ付けする必要がある場合があります。

*これらの抵抗値のガイドラインは、CapSenseライブラリを使用するためのものです。 最後のプロジェクトはこのライブラリを使用しません。

概要:静電容量式タッチセンサーは、アクティブ化するのに力をほとんど必要としません。 CapSenseライブラリを使用して、Arduinoで複数のタッチセンサーを作成できます。

ステップ2:CapSenseライブラリデモコード...

CapSenseライブラリのデモコードの説明は次のとおりです。

 CapacitiveSensor cs_4_2 = CapacitiveSensor(4, 2); 

「cs_4_2」は他の名前に置き換えることができます。 「4」は送信ピン、「2」は受信ピンです。

 void setup(){ 
セットアップは1回のみ実行されます。
 cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF); //チャンネル1で自動キャリブレーションをオフにします-ちょうど例として 
 Serial.begin(9600);} 
9600ボーでシリアル通信を開始...
 long total1 = cs_4_2.capacitiveSensor(30); 

上記のステートメントは、「void loop()」で宣言されています。 1Mの抵抗を使用する場合、total1は10未満または約10になります。 触れると、それは60以上になります...

 Serial.println(total1); 

total1の値をコンピューターのシリアルウィンドウに送信します...

コードの重要な部分について説明します。 これは完全なコードではありません。 完全なものは以下の添付ファイルにあります。 コードが簡単だと思われる場合は、ステップをスキップしてください。

添付ファイル

  • CapacitiveSensorSketch.pdeダウンロード

ステップ3:静電容量式タッチとArduinoを使用したプロジェクト...

静電容量式タッチとは何かを知ったので(たまたま前のステップを読んだ場合)、それで何ができるか見てみましょう。 この講義では、静電容量式タッチを組み込んだ3つのプロジェクトを紹介します。

タッチ式ライト:

静電容量式タッチのアイデアを把握し、他のプロジェクトに実装するのに役立つ基本的なプロジェクト。 リレーとはんだ付けの使用はオプションですが、高電圧機器を操作する場合は必須です。

近接センサースイッチ:

このスイッチに手を近づけると、LEDがオンまたはオフになります。 リレーとはんだ付けを追加すると、オプションですが、高電圧デバイスを動作させることができます。

3Dタッチレスハンドトラッカー:

3次元で手の位置を追跡します。 無数のアプリケーションに使用できますが、シンプルでハッキングしやすいプロジェクトが含まれているため、自分の目的に使用できます。 はんだ付けは不要です

ステップ4:制御されたライトに触れる:-必要な材料...

これは非常に安価で簡単なプロジェクトです。 静電容量式タッチがどのように機能し、他のいくつかのアプリケーションにどのように実装できるかについての良いアイデアを提供します。 この単純なプロジェクトでは、静電容量式タッチセンサーを使用します。これは、アルミ箔に触れることで、LED機器や高電圧機器のオンとオフを切り替えます。

時間 :<1時間、はんだ付けリレーの+1時間(オプション)

コスト :数セント、リレーで1ドル以下(Arduinoを除く)

難易度 :非常に非常に簡単。

材料 :(RadioShackで利用可能)

  • Arduinoボード
  • 500Kから1Mの抵抗
  • 220Ω抵抗器
  • 任意の色のLED
  • ホイル
  • ジャンパー線
  • リレー(オプション)
  • 電源プラグ(オスとメス)(オプション)

ステップ5:制御されたライトに触れる:-回路

回路は簡単です。 ブレッドボードさえ必要ないほどシンプルです!

Arduino Megaを使用していることに注意してください。これは今のところ私が持っている唯一のものだからです。 Unoを使用している場合、LEDを他の便利なピンに接続します。 ただし、後でコードを少し変更する必要があります。 次のステップをご覧ください。

回路の写真に従ってください。

  1. ピン42とグランド間に直列にLEDと220Ωの抵抗を接続しました。
  2. Arduinoのピン4を送信ピンとして、ピン2を受信ピンとして使用しました。
  3. これらのピンには1Mの抵抗があります。 フォイルは受信ピン、つまりピン2に接続されます。

ステップ6:制御されたライトをタッチ:-Arduinoコード...

プログラミングの部分に移ります。 このコードはCapSenseライブラリ(ここからダウンロード)を使用し、静電容量センシングを処理します。 ライブラリのインストールプロセスに慣れていない場合は、次の素晴らしいチュートリアルをご覧ください。

Arduinoライブラリのインストール-Learn.SFE

コードはシンプルで理解しやすいです。 このコードをコピーして、空のArduino wwindowに貼り付けてください。 必要に応じて、LEDピンを変更します。 次にアップロード...

 #include int led = 42; // '42'を任意のピンに変更します... long time = 0; int state = HIGH; ブール値yes; boolean previous = false; intデバウンス= 200; CapacitiveSensor cs_4_2 = CapacitiveSensor(4, 2); //ピン4と2の間の10M抵抗器、ピン2はセンサーピンです。必要に応じてワイヤまたはフォイルを追加します//さらにセンサーを追加するには... // CapacitiveSensor cs_4_6 = CapacitiveSensor(4, 6); //ピン4と6の間の10M抵抗器、ピン6はセンサーピンであり、ワイヤーを追加するか、またはフォイル// CapacitiveSensor cs_4_8 = CapacitiveSensor(4, 8); //ピン4と8の間の10M抵抗器、ピン8はセンサーピンです。ワイヤーを追加するか、またはボイドボイドのセットアップ (){cs_4_2。 set_CS_AutocaL_Millis(0xFFFFFFFF); //センサーのキャリブレーション... pinMode(led、OUTPUT); } void loop (){long total1 = cs_4_2。 静電容量センサー(30); if(total1> 60){yes = true;} else {yes = false;} //状態の状態を切り替えるif(yes == true && previous == false && millis()-time> debounce){if( state == LOW){state = HIGH; } else state = LOW; 時間=ミリ秒(); } digitalWrite(led、state); previous = yes; シリアル println(ミリ秒()-時間); 遅延(10); } 

手順7:制御ライトをタッチします:-リレーを追加します...

これで、タッチ制御LEDが手に入りました。 だから何? ライトやファンなどの電化製品をタッチで制御することで、プロジェクトを少し便利にすることができます。 そして幸いなことに、これを行うにはArduinoにリレーを追加するだけです。

リレーとは?

リレーは電動スイッチです。 通常、リレーは電磁石を使用して絶縁スイッチを機械的に操作します。 主な機能は、小さな電圧を使用して、高電圧または高電流を個別にオン/オフすることです。 これは、小さな回路またはマイクロコントローラーで主電源を制御するのに便利です。

リレーの詳細については、この優れた「Instructable-Electronic Switches Work For Noobs:Relays and Transistors」をご覧ください

サーキット:

Arduinoはリレーを動作させるのに十分な電流を供給できないため、BC547トランジスタが必要になります。 トランジスタは、Arduinoの電流を増幅してリレーをアクティブにします。 理解の助けとして、この役立つビデオ-Arduinoでリレーを制御する方法を確認してください

トランジスタとリレーの回路図を提供しました。 接続を理解するのに役立つフリッツのブレッドボード図もあります。

その後、上の写真に示すようにオスプラグを準備します...

ステップ8:制御されたライトに触れる:-リレー用の箱を作る...

リレーとワイヤを収納するために、5 * 2 * 2インチのプラスチックボックスを使用しました。 少し大きすぎるかもしれませんが、デモンストレーションには十分です。 私の主な目的は、高電圧線をArduinoと私の身体から分離することでした。

ボックスを準備します。

メスのプラグに合うように、箱の蓋から四角い穴を切り取ります。 ネジ用の穴を開けてから、プラグを取り付けます。 リレーを箱の底に貼り付けます。

接続する:

高電圧を伴う回路は非常に簡単です。 写真とそのタグ、または次の手順に従ってください。

  1. 主電源の1つの端子へのリレーのCOM。
  2. アプライアンスの1つの端子にNOをリレーします。
  3. 主電源のもう一方の端子からアプライアンスの2番目の端子まで。

ステップ9:制御ライトのタッチ:-タッチセンサーとArduinoを追加...

上記のように、テープでホイルを箱に貼り付けます。 これはArduinoの受信ピン(私の場合はピン2)に接続されています。 「ledピン」、または私の場合はピン42は、トランジスタに接続されています。

ステップ10:制御されたライトにタッチ:-終了しました!

オスのプラグをコンセントに接続し、制御するアプライアンスをボックスに差し込みます。 バッテリーでArduinoの電源を入れます。

あなたはそれを持っています-あなた自身のタッチコントロールライト! より多くのアプライアンスを制御するために、より多くのリレーとタッチセンサーを使用するか、ホームオートメーションシステムに組み込むことができます。 今のところ、これを使用してデスクランプを制御していますが、非常にうまく機能します。

タッチスイッチの動作を示すビデオがあります...

また、プロトタイプの動作を示すビデオがあります...

最後に爆発を気にしないでください:P .....

ステップ11:近接検知ライトスイッチ

スイッチに手を近づけるか、単に手をかざすと、ライトがオンまたはオフになります。 実際には、前の手順の「タッチ制御ライト」に非常によく似ています。 実際、後者は、この近接検出光スイッチを作るために簡単に変更できます...

時間 :合計<1時間、オプションのはんだ付けで+1時間

コスト :〜1 $(Arduinoを除く)

難易度 :簡単

必要な材料:

  • Arduinoボード
    • 5.6M抵抗
    • 220Ω抵抗器
    • 任意の色のLED
    • ホイル
    • ジャンパー線
    • リレー(オプション)
    • 電源プラグ(オスとメス)(オプション)
  • ステップ12:光スイッチの近接検出:-回路...

    回路はシンプルで、「タッチコントロールライト」の単なる修正です。 実際、変更する必要があるのは抵抗器だけです。 今回は、arduinoのピン2と4に約5Mの抵抗を使用する必要があります。

    ステップ13:近接検知ライトスイッチ:-コード....

    ここで、コードは「Touch Controlled Light」に似ています。 コード内のデバウンス時間を変更し、試行錯誤で他の値を調整するだけです...

    このコードをコピーして、Arduinoウィンドウに貼り付けます...。

     #include int led = 42; // '42'を任意のピンに変更します... long time = 0; int state = HIGH; ブール値yes; boolean previous = false; intデバウンス= 200; CapacitiveSensor cs_4_2 = CapacitiveSensor(4, 2); //ピン4と2の間の10M抵抗器、ピン2はセンサーピンです。必要に応じてワイヤまたはフォイルを追加します//さらにセンサーを追加するには... // CapacitiveSensor cs_4_6 = CapacitiveSensor(4, 6); //ピン4と6の間の10M抵抗器、ピン6はセンサーピンであり、ワイヤーを追加するか、またはフォイル// CapacitiveSensor cs_4_8 = CapacitiveSensor(4, 8); //ピン4と8の間の10M抵抗器、ピン8はセンサーピンであり、ワイヤを追加するか、またはボイドボイドのセットアップ (){cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF); //センサーのキャリブレーション... pinMode(led、OUTPUT); } void loop (){long total1 = cs_4_2.capacitiveSensor(30); if(total1> 60){yes = true;} else {yes = false;} //状態の状態を切り替えるif(yes == true && previous == false && millis()-time> debounce){if( state == LOW){state = HIGH; } else state = LOW; time = millis(); } digitalWrite(led、state); previous = yes; シリアル .println(millis()-time); delay(10); } 

    ステップ14:高電圧機器の制御...

    高電圧機器を制御するには、リレーが必要です。 前のプロジェクトと同じ手順でリレーを設定します...

    Step7-リレーを追加する

    ステップ15:タッチレス3Dコントローラー

    この3Dコントローラーは、手の位置を3次元で追跡します。 これは、静電容量式タッチセンシングに基づいています。 前のプロジェクトである近接検出ライトスイッチのように、タッチセンサーは数インチ離れたところから手を感知することができます。

    これは、kylemcdonaldの素晴らしいInstructable- DIY 3D Controllerに触発されたプロジェクトです。 この3Dコントローラーのアイデアを得るために、彼のInstructableもご覧ください...

    この3Dコントローラーでできることはたくさんあります。たとえば、コンピューターのマウスとして、3Dアニメーションシーンの制御、LEDキューブの制御などができます。 しかし、もちろん、それらはそれほど簡単で安価ではありません。

    そのため、初心者向けのシンプルでありながらクールなプロジェクトがあります。3DTracker Controlled RGB LEDです。 基本的に、異なる位置に手を動かすことで、LEDの色を制御できます。 分かりませんでしたか? 詳細については、次のステップに進んでください。

    ステップ16:仕組みと資料...

    この3Dコントローラーには3つのタッチセンサーがあり、数インチ離れた場所から応答します。 各センサーからの距離を判断することにより、Arduinoは手のx、y、z座標を計算できます。

    RGB LEDには、赤、緑、青の3色があります。 各色の明るさは、それぞれの手の座標に依存します。 たとえば、x座標が小さいほど(手が右のセンサーに近づくほど)、rgb LEDの赤色が明るくなります。

    時間 :1-1.5時間

    コスト :<$ 1、Arduinoを除く...

    難易度 :簡単。

    必要な材料:

    • アルミホイル
    • Arduino Board(私はUnoをお勧めします)
    • 10kオーム抵抗x3
    • 220kΩ抵抗器x3
    • 220オームの抵抗器x3
    • ワイヤー
    • RGB LED

    ステップ17:タッチセンサーの準備....

    約8 * 8インチの寸法の3つのホイルが必要です。 厚い発泡スチロール(サーモコール)ベースに1枚のホイルを貼り付けます。 上の写真に示されているように、フォイルの隣接する2面の発泡スチロールにスリットが作られています。

    他の2つのホイルは、マウントボード(白い段ボール)に貼り付けられています。

    マウントボードのこれらの2つの部分は、上の写真に示すように、発泡スチロールのスリットに挿入され、互いと発泡スチロールに垂直になります。

    全体を頑丈にするために、小さな長方形のマウントボードを使用して、2つのマウントボードを一緒にフォイルで保持しました。 上の写真とそのタグは間違いなく大いに役立ちます。

    ステップ18:回路...

    絶縁テープで各タッチセンサーにワイヤーを接続します。 次に、上記のFritzingブレッドボードレイアウトを使用して、ブレッドボード上に回路を組み立てます。

    ステップ19:コードをアップロード...

    コードは以下の添付ファイルに記載されています。 クリックして、コードをコピーしてArduinoコードウィンドウに貼り付けます。

    アップロードする前に、必要に応じてピンを変更してください。

    タッチセンサーのキャリブレーション..

    コードをアップロードした後、Arduinoが接続された状態でシリアルモニターを開きます。 多くの値の行が表示され、各行には各タッチセンサーを表す3つの値があります。 いずれかのタッチセンサーをタッチし(タッチしているセンサーを知る必要があります)、シリアルモニターで対応する値を確認します。

    void setup(){の前に、この行がコードに表示されます

     int maxval = 20; 

    20をセンサーの1つに触れた後に得た値に変更します。

    次に、コードをもう一度アップロードします。 3Dコントローラー内で手を動かすと、さまざまな色が生成されます。

    重要な注意:以下のコードは、Arduino Uno(およびおそらくLeonardo)互換ボードでのみ機能します。 Megaを試してみましたが、動作しませんでした。これは、非常に異なる「PORTS」を持っているためです(最初は理解するのが難しいと感じました。これは、経験豊富な中傷者向けです)。

    概要:コードをアップロードし、「maxval」変数を調整して、もう一度アップロードします。 Arduino Unoまたはクローンを使用することをお勧めします。

    添付ファイル

    • _3d_controller.inoダウンロード

    ステップ20:結論...

    これらは、静電容量式タッチで実行できる3つのプロジェクトです。 タッチセンサーを使用して素晴らしいものを作成するための確かなアイデアが得られることを願っています。 ここでやめないでください-静電容量式タッチセンシングでできることは無限です:タッチキーパッド、トラックパッド、タッチレスコンピューターマウス、タッチ制御時計は、私が考えることができる数え切れないほどのアイデアのほんの一部です。

    もっと遠く行く.....

    私が示したプロジェクトでもっとできることがあります。 たとえば、最初のプロジェクトのアイデアを使用して、部屋の複数の照明とファンを制御するタッチスイッチボードを作成します。 または、ホームオートメーションプロジェクトに組み込むこともできます。

    近接検知ライトのアイデアで、あなたの存在を感知する自動デスクランプを作ってみてください。

    3Dコントローラーを使用して、Arduino Leonardoで3Dマウスを作成してみてください。 または、処理プログラムを使用して3Dコントローラーと通信します。

    その他のチュートリアルなど...

    playground.arduino.cc/Main/CapSense

    ハッカデイチュートリアル

    これは素晴らしいビデオですが(私のものではありません)、単純な静電容量式タッチチュートリアルです。これについても説明しました。 ビデオは物事をより明確にするかもしれません....

    ステップ21:ご意見をコメントしてください...

    あなたの助けを借りて、私は確かにこのInstructableを改善することができます

    関連記事