🌏

電子工作 その7(DFPlayerを使った音声ファイルの再生)

2023/04/07に公開

こんにちは、Ideagearの鈴木陽介です。

今回は、DFPlayer Miniという音声再生モジュールの使い方についてご説明します。

※類似品で「MP3-TF-16P」と刻印されているモジュールも結構出回っていますが、動作時のランプの点滅のし方が異なること以外は、外観、配線、使い方等はすべて同じですが、音量や音質は若干異なりますのでご注意ください。

なお、本記事の内容は、2023年4月8日に開催された下記ワークショップと同じです。

はじめに

DFPlayerは、MP3ファイル(及びWAVとWMAファイルも使用可)の再生モジュールとして非常に安価で、配線や制御もカンタンです。

ただ、ネット上の情報はいずれも断片的あるいは不親切で、それら個別の情報を元に進めても上手くいかず、複数の情報を統合させてようやく使用することができました。

いずれもちょっとしたことですが、塵も積もれば山となるということで、これら細かな注意点をまとめることで、本記事さえ見ればArduino系によるDFPlayerの制御がすべて把握できるようにしたいと思います。

配線


画像引用元:https://www.chisatofu.com
(本記事手抜きのため、上記から画像を引用及び加工して使わせていただきました。)

・Arduino Uno
・ブレッドボード
・DFPlayer Mini
・microSDカード(及びそのカードリーダー)
・スピーカー
・抵抗1kΩ×2
・ジャンパーピン


画像引用元:https://blog.hrendoh.com/how-to-use-dfplayer-mini/
(本記事手抜きのため、上記から画像を引用及び加工して使わせていただきました。)

※今回は画像の向かって右側は一切使いません。

Arduino DFPlayer Mini
5V VCC
GND GND
10番ピン TX※
11番ピン RX※

※1kΩの抵抗を挟む

ブレッドボードを介した配線は下記の通りです。

音声ファイル作成

DFPlayer Miniを活用してしゃべるおもちゃをつくるにせよ、音声ファイルを扱う以上、その音質は重要です。私も現在はSONY製のICレコーダーを使って録音しています。

ただ、今回はDFPlayerの使い方を学ぶことがメインですので、音声ファイルは気軽に作りたいですよね?

そこで、スマホの「録画」機能を使って音を録音し、そこから音だけを抽出して使う方法をご紹介します。(もちろん、世の中にはスマホやパソコンで直接音声ファイルを録音できるソフトがあるので、それを使ってもいいです。)

以下はその流れです。

1.スマホの録画機能を使って自分の声を録音する。
2.上記録画データをBluetoothなどでPCへ送る。
3.動画のファイル名を発音と同じものに変更する。
※これは管理しやすくするためなので、必須ではないです。

FormatFactoryをインストールする

次に、動画ファイルであるMP4→音声ファイルであるMP3へ変換しますが、これはフリーソフトを活用します。今回は、FormatFactoryを使います。
https://format-factory.softonic.jp/


FormatFactoryを開くとこのような画面となります。
変換したいファイルをドラッグアンドドロップします。


すると、このような画面に切り替わるため、変更後のファイル形式を選択します。
ここでは、オーディオの「-> MP3」を選び、「OK -> 開始」をクリックします。
出力先は、デフォルトで「ソースと同じフォルダに出力」になっています。



変換が終わると上記のようになり、完了したことをお知らせする音楽が流れます。
数秒の動画なら一瞬で音声ファイルへと変換されます。


複数のファイルを変換するとこのようになります。


同じフォルダに出力しているのでこのようになります。

DFPlayer Miniの使用ルールのポイント

今回必要なのはMP3ファイルだけなので、元の動画は削除します。


【ポイント1】ファイル名の先頭に4桁の数字を入れておきましょう。

続いて、上記MP3ファイルをmicroSDカードへ保存しますが、ここで重要なのは、MP3ファイルをmicroSDカードのトップディレクトリに保存してはいけないということです。


【ポイント2】必ず、トップディレクトリに「mp3」というフォルダをつくり、その中にMP3のファイルを入れてください。


microSDカード内が最終的にこのようになっていれば大丈夫です。

整理しますと、

1.ファイル名の先頭に4桁の数字を入れる。
2.mp3という名称のフォルダをつくり、その中に音声ファイルを保管する。

これらはとても簡単なことですが、私はこの2つに気づくまでかなりの時間をムダにしました。。。
ただ、残念ながらDFPlayerはこの2つのルールをクリアしていないと使えません。

ちなみに、mp3というフォルダの中のファイルしか使えないというのは、一応合理的な理由があります。

なぜなら、mp3というフォルダ以外の場所に別の音声ファイルやそれ以外のファイルを保管しておくことが可能だからです。空いた場所にいろんなパターンを保存しておけば、一つのmicroSDカードを使いまわしたい時にいちいちパソコンからデータを移さなくてもいいので便利ですね!

ライブラリー

DFPlayer Miniにはもう一つ落とし穴があります。
DFPlayerなんちゃらという名前のライブラリーが複数存在していることです。

結論から言うと、Arduino IDEの
スケッチ→ライブラリーをインクルード→ライブラリーを管理→ライブラリーマネジャ
から見つかるDFPlayerなんちゃらはすべて使えません!

https://github.com/DFRobot/DFPlayer-Mini-mp3

【ポイント3】必ず、上記GitHubのCode→Download ZIPからZipファイルをダウンロードし、

スケッチ→ライブラリーをインクルード→ライブラリーを管理→.ZIP形式のライブラリーをインストール...

からArduino IDEに当該ライブラリーをインストールしてください。

こうすることで、次のソースコードで出てくる"DFPlayer_Mini_Mp3.h"というライブラリーが使用可能となります。

ソースコード

#include "SoftwareSerial.h"
#include "DFPlayer_Mini_Mp3.h"

SoftwareSerial mySerial(10, 11); // RX, TX

void setup () {
delay(2000); //モジュール起動の待機時間
mySerial.begin (9600);
mp3_set_serial (mySerial); //set softwareSerial for DFPlayer-mini mp3 module
mp3_set_volume (60);
}

void loop () {
mp3_play (1); //(0001.mp3)を再生
delay (2000);
mp3_play (2); //(0002.mp3)を再生
delay (2000);
mp3_play (3); //(0003.mp3)を再生
delay (2000);
}

※SoftwareSerialのライブラリーをインストールしていない場合は必ず入れてください。

<解説>
mp3_play (1); //(0001.mp3)を再生
ここのカッコ内の数字がmp3ファイルの冒頭の4桁の数字と連動しています。

複数の音声ファイルを連続再生する場合はdelayを入れるのがポイントです。
でないと、音がかぶって発音し終わる前に次の音が再生されます。

結果

このように動けば成功です!
https://twitter.com/Ideaport_Suzuky/status/1644309722378665985

まとめ

いかがでしたでしょうか?

電子工作の世界においてLEDやブザーを扱うことはカンタンですが、音声系やモーター系はやや難しい印象があります。実際、私も今回のDFPlayer Miniを使いこなせるようになるまで、何だかんだ言って3日ほど費やしました。。。

ただ、音声ファイルを扱えるようになったことでしゃべるぬいぐるみというおもしろガジェットを誕生させることができたため、トライしてよかったと思っています。

最後に、改めて今回のポイントは3つ:

1.音声ファイルのファイル名の先頭には、必ず4桁の数字を入れる。

2.microSDカードのトップディレクトリに「mp3」という名称のフォルダをつくり、その中に音声ファイルを保管する。

3.DFPlayerを動かすファームウェアのライブラリーは、Arduino IDEで探すのではなく、GitHubからダウンロードしたものを使う。

以上です。ではまた!

Discussion