創るたのしみを応援

ハンドクラップセンサーVM-CLAP1を使ってみよう

Verbal Machines VM-CLAP1 ハンドクラップセンサーは、人の声や音楽などの背景ノイズを無視しながら、拍手を検出できる低電力のマイクロプロセッサーベースのオーディオセンサーです。

2.5V〜5.5Vで動作し、シンプルなインタフェースを備えています。拍手や指スナップを検出すると、出力ピンが40ms間 Lowになり、内蔵の青色LEDが点灯します。

特徴

普通の音センサーとは違い、ノイズをカットしてくれるので、ハンドクラップした時の音のみを拾ってくれます。

いろいろ試してみたのですが、鳴らし方にコツがあって、手のひらで空気を圧縮するように叩く時に鳴るくぐもった音が一番よく反応します。指パッチンはあまり反応しませんのでご注意ください。

使い方

PWR,GND,OUTの3つの端子がセンサ基板についているので、それぞれ接続します。ハンドクラップ音を検知した時OUTピンがLOWになります。

駆動電圧は3.3V、5Vに対応しています。では早速使っていきましょう。

使ってみよう

開発環境

ハードウェア

  • Verbal Machines VM-CLAP1 ハンドクラップセンサー[suzaku-shop code=’Pololu-2580′]
  • マイコンボード
    • Nucleo64 STM32F446RE[suzaku-amazon asin=’B0162JGEUW’]
    • Arduino[suzaku-shop code=’Pololu-2191′][suzaku-amazon asin=’B008GRTSV6′]
  • USB電源 または 3.3V or 5V DC電源
  • LED
  • 抵抗 1kΩ (LED電流制限抵抗)
  • 抵抗 100kΩ (センサー用プルアップ抵抗)
  • プロトタイピングキット (ブレッドボードやジャンプワイヤなど)
  • はんだセット (はんだゴテなど)
  • USBケーブル (マイコンボード用)

[itemlink post_id=”247″]

ソフトウェア

  • mbedオンラインコンパイラ (mbed開発用)
  • ArduinoIDE (Arduino開発用)
  • teraterm (シリアル通信を見るため用)

回路

VM-CLAP1 ハンドクラップセンサーに、ヘッダピンが付けされてないので、はんだ付けします。

Nucleo接続先
A0ハンドクラップセンサーOUT端子
A1LEDのアノード側(抵抗も付けて)
3V3ハンドクラップセンサーPWR端子
GNDハンドクラップセンサーGND端子
LEDのカソード側
電源PCからUSB給電

少し実験してみた

まず値をアナログで読み取りシリアルモニタに出力してみました。1に近づくほどHIGHで0に近づくほどLOWです。

赤線の部分が音を検知した時です。しっかりLOW出力されていますね。

それに対し、音を検知していない部分を見ると値がバラバラです。これはセンサがオープンコレクタ出力になっているのが原因です。このままではデジタル入力した時に誤検知してしまいます。

回路にプルアップ抵抗をつける

これでは使い辛いので、ハンドクラップセンサーのOUT端子とPWR端子の間にプルアップ抵抗100kΩを挟んでみました。こうすることで、検知していないときHIGHに近づきます。

シリアルモニタでもきれいな値が出力されていることを確認できます。

コード

音に反応した時だけ、LEDを0.5秒点灯させるコードです。

 #include "mbed.h"

DigitalIn sensor(A0);
DigitalOut led(A1);

int main(void)
{
    while(1) {
        if(sensor.read() == 0) {    //音を検知した時
            led = 1;        //LEDを点灯させる
            wait_ms(500);   //0.5秒待機
        }
        else{           //センサーが反応してないとき
            led = 0;    //LEDを消灯させる
        }
    }
}
/*初期設定*/
void setup() {
    pinMode(0,INPUT);   //ハンドクラップセンサー入力
    pinMode(1,OUTPUT);  //LED
}

/* main loop */
void loop() {
    if(digitalRead(0) == LOW){  //音を検知したとき
        digitalWrite(1,HIGH);   //LEDを点灯させる
        delay(500);     //0.5秒待機
    }
    else{
        digitalWrite(1,LOW);    //LEDを消灯させる
    }
}

結果

声や足音には反応せず、ハンドクラップにだけうまく反応しました。

いろいろ試していると、直接センサーを触ったときと息を吹きかけた時に誤反応することが分かりました。

資料

仕様

動作電圧2.5V ~ 5.5V
消費電流1.7mA @ 3V
出力ピン引込電流
(オープンコレクタ仕様)
750mA @ 30V
検出時パルス幅40ms
検出距離約2.7m (9 ft.)
重量2.1g
サイズ37 x 12 x 6mm

参考サイト

[itemlink post_id=”247″]