音センサーモジュール
私が購入したGROVEスターターキットV3に入っていた音センサモジュールは、Sound Sensor V1.6というモジュールです。スイッチサイエンスさんの単体販売ページに掲載されているものと同じです。
黒い丸い部分がマイクで、その下にあるICはアンプです。


音センサモジュールの動作
音センサモジュールはアナログモジュールです。音の大きさに応じて出力される電圧が変化します。
プログラム
analogRead( )関数を使って音センサーから読み込んだ値をシリアルモニタに表示するプログラムです。
// Nefry BT無印の場合: A2
// Nefry BT R2の場合: A1 (注:A0を使うときはA1を記載します。)
#define PIN A1
void setup() {
pinMode(PIN, INPUT);
}
void loop() {
Serial.println(analogRead(PIN));
delay(100);
}
このプログラムを動作させると、このように数字列が表示されます。

数値が激しく変化していますね。音の情報なので変化速度や変化量が大きいためだと思われます。100ms周期でデータを取るのは遅すぎるようです。
Seeed社のWikiページに掲載されているプログラムは次のようになっています。
// test code for Grove - Sound Sensor
// loovee @ 2016-8-30
const int pinAdc = A0;
void setup()
{
Serial.begin(115200);
//Serial.println("Grove - Sound Sensor Test...");
}
void loop()
{
long sum = 0;
for(int i=0; i<32; i++)
{
sum += analogRead(pinAdc);
}
sum >>= 5;
Serial.println(sum);
delay(10);
}
32回測定してその平均を計測結果にしています。また、計測は10ms周期で行なっています。
これだけ短い周期で結果をシリアルモニタに出力すると、値がどんどん流れて行ってしまい、全体の傾向がどうなっているのかがわかりません。
シリアルプロッタを使うと、結果をわかりやすく表示できます。シリアルプロッタを開く手順は次の通りです。
- シリアルモニタが開いている場合は閉じます
- ツールメニューのシリアルプロッタを選択します。

シリアルプロッタには次のようなグラフが表示されます。

諸元
| 名称 | Sound Sensor 音センサ |
| バージョン | V1.6 |
| Seeed社 Wiki | http://wiki.seeedstudio.com/Grove-Sound_Sensor/ |
| スイッチサイエンス商品ページ | https://www.switch-science.com/catalog/816/ |
| Nefry BT無印 動作ソケット | A2 |
| Nefry BT R2 動作ソケット | A0(プログラム上はA1) |
「Nefry BTとGroveモジュール接続実験」 トップページ
