Arduino

マイクモジュールmax4466を使ってみる

2018年11月17日

こんばんは!
今回はマイクモジュールmax4466を使ってひろった音の大きさがわかるような装置を作りました。

概要

マイクモジュールで音を拾い、拾った音の大きさをArduinoで読み取る。
音の大きさを0.00~1.00で表す。
その音の大きさによってLEDを光らせる。

使用するもの

・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・ブレッドボード(https://amzn.to/38eNi8u)
・ジャンパワイヤ (https://amzn.to/39uBU8T)
・LED(https://amzn.to/2TvEPGc)
・抵抗100Ω(https://amzn.to/2snlNWT)
・マイクモジュールmax4466(https://amzn.to/36sFp0f)

 

マイクモジュールについて

今回使うmax4466はとてもシンプルです。
3ピンあり、右からOUT、GND、VCCとなっています。
使い方はとてもシンプルで、電源を与えて、増幅された信号がVCCの半分のバイアスでOUTピンから出てきます。
VCCは2.4~5.0Vに接続することが可能ですが、3.3Vが理想らしいので今回はArduinoの3.3Vのピンに接続します。
よってOUTピンから出てくる電圧は無音なら

3.3 / 2 = 1.65[v]

となります。

手順

まずハード側からやっていきます。
最初にマイクモジュールをピンとはんだ付けしていきます。

次にOUTピンをArduinoのA0ピンに、GNDピンをArduinoのGNDピンに、VCCピンをArduinoの3.3Vピンに接続します。
そして、LED、抵抗を以下の図のように接続します。

これでハード側は終了です。
次にプログラムを書いていきます。

Arduino IDEを開いて次のコードを書き込んでいきます。

void setup() {
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}

void loop() {
sound = analogRead(0);
volts = (sound * 5.0/3.3) / 1024 ;
Serial.println(volts);
if (volts > 0.55) {
digitalWrite(led1, HIGH);
}
if (volts < 0.55) {
digitalWrite(led1, LOW);
}
if (volts > 0.65) {
digitalWrite(led2, HIGH);
}
if (volts < 0.65) {
digitalWrite(led2, LOW);
}
if (volts > 0.7) {
digitalWrite(led3, HIGH);
}
if (volts < 0.7) {
digitalWrite(led3, LOW);
}
if (volts > 0.8) {
digitalWrite(led4, HIGH);
}
if (volts < 0.8) {
digitalWrite(led4, LOW);
}
if (volts > 0.9) {
digitalWrite(led5, HIGH);
}
if (volts < 0.9) {
digitalWrite(led5, LOW);
}
}

プログラムの説明をしていきます。

まず、const int led1 = 8
などによりLEDのピン番号を定義します。
constというのは変数の値を変更せず定数として宣言する際に使う修飾子です。
LEDのピン番号は変更しないので定数としてしまいます。

次にsetup()内ではpinMode(8, OUTPUT)
などにより先ほど定義したLEDのピンを出力にし、Serial.begin(9600)
でシリアル通信を開始しています。

次にloop()内を見ていきます。

まず、sound = analogRead(0)
により、A0ピンから電圧の値を読み取ります。アナログピンで読み取った電圧は0~5[v]を0~1023の値に変換されてます。

先ほど述べた通り、今回の場合、無音の時のA0ピンに入力される電圧は1.65[v]なので値としては

sound = (1.65 * 1024) / 5 = 337.92 ≒ 338

となっています。
すごくわかりにくいので、これを0~1で表すために

volts = (sound * 5.0/3.3) / 1024 ;

という計算式を書きます。
これでvoltsは0~1の範囲で表され、無音の時は0.5、音量最大の時は1が値として読み取られます。
最後に読み取った値(音量)によってLEDを光らせる個数を変えるようにif文を使って条件分岐をしています。

LEDの点灯についてはこちらの記事を参考にしてください

Arduinoを用いてLEDを光らせてみる

このコードを書き込んで、スマホなどから音楽を流し、近づけたり遠ざけたりするとLEDの光る個数が変わると思います。

製作過程を動画にしたのでぜひご覧ください。

まとめ

今回はマイクモジュールを使って音量を測定することができました。。
マイクモジュールによってひろった音を録音したりすることもできるそうです。
スマホなんかも作れたりするんでしょうか…
今回はこれで終わります。

ではまた!

-Arduino

Copyright© 物を作る者 , 2024 All Rights Reserved.