
Verbal Machines VM-CLAP1 ハンドクラップセンサーは、人の声や音楽などの背景ノイズを無視しながら、拍手を検出できる低電力のマイクロプロセッサーベースのオーディオセンサーです。
2.5V〜5.5Vで動作し、シンプルなインタフェースを備えています。拍手や指スナップを検出すると、出力ピンが40ms間 Lowになり、内蔵の青色LEDが点灯します。
普通の音センサーとは違い、ノイズをカットしてくれるので、ハンドクラップした時の音のみを拾ってくれます。
いろいろ試してみたのですが、鳴らし方にコツがあって、手のひらで空気を圧縮するように叩く時に鳴るくぐもった音が一番よく反応します。指パッチンはあまり反応しませんのでご注意ください。
PWR,GND,OUTの3つの端子がセンサ基板についているので、それぞれ接続します。ハンドクラップ音を検知した時OUTピンがLOWになります。
駆動電圧は3.3V、5Vに対応しています。では早速使っていきましょう。
[itemlink post_id=”247″]
VM-CLAP1 ハンドクラップセンサーに、ヘッダピンが付けされてないので、はんだ付けします。
| Nucleo | 接続先 |
| A0 | ハンドクラップセンサーOUT端子 |
| A1 | LEDのアノード側(抵抗も付けて) |
| 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″]