« スマホがジカ熱治療に!? | トップページ | iPhone 7の”ブラック”モデル想像図 »

2016年7月 3日 (日)

500円以下のArduino用mp3プレーヤー”DFPlayer Mini”で適当なもの作ってみた

以前”暗くなるとGet Wildが流れる”ネタで盛り上がったときに、ArduinoにMP3再生機能をつけたいなぁと思ったんですが、案外Arduino用MP3プレーヤーシールドって高い(3~4,000円前後)ものが多くて手が出ませんでした。

が、こちらはなんと送料込みで420円!

中国発送なのでえらい時間がかかりましたが、ワンコインで買えるお手軽なMP3プレーヤーを見つけました。

Img_2035

Amazon上では”HiLetgo TFカード U Disk Mini MP3 Player 音声ヴォイスモジュール ボード For Arduino DFPlay”という商品名でしたが、世界的には”DFPlayer Mini”って名前で通ってるみたいです。

Img_2036

大きさは20mm四方ほど。MP3データを入れた32GBまでのmicroSDカードを挿して使います。

Img_2037

裏はこんな感じ。

基板上にはピンの名前が一切ありませんが・・・

下記サイトを参考にArduinoに接続、使用してみました。

DFPlayer Mini SKU:DFR0299 - Robot Wiki

ピン配置は以下の通り。

で、こんな感じにArduinoにつなぎます。

このボード以外にArduino本体、microSDカード、1kΩの抵抗×2、そしてスピーカー。

Img_0744

手ごろなスピーカーがなかったので、Ichigojamについてた圧電スピーカーを使用。

音質は最悪ですが、とりあえず音が出てるところを確認できればOKなので。

さて、このDFPlayer Miniに挿すmicroSDカードに入れるMP3データですが、

・ SDカード内に「mp3」というフォルダを作成

・ ここに入れるデータは、0001***.mp3、0002***.mp3 ・・・というように、頭に4ケタの半角数字をつけたファイル名にする

というmicroSDカードを準備します。

Mp3ard02

こんな感じです。

これをDFPlayer Miniに挿します。

さて、早速プログラムを入れるんですが、まずはDFPlayer用のライブラリを登録。

まずは、ライブラリを以下からダウンロードします。

DFPlayer library V2.0

ダウンロードしたZIPファイルは解凍せずにそのまま登録。

Arduino IDEを開き、”スケッチ”-”ライブラリをインクルード”-”.ZIP形式のライブラリをインストール”を選び、

Mp3ard03

先にダウンロードしたZIPファイルを選択します。

Mp3ard04

こういうのができれば成功です。

Mp3ard05

さて、早速サンプルコードを走らせます。

#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

void setup () {
    Serial.begin (9600);
    mp3_set_serial (Serial);      //set Serial for DFPlayer-mini mp3 module
    delay(1);                     // delay 1ms to set volume
    mp3_set_volume (20);          // value 0~30
}

void loop () {       
    mp3_random_play ();
    delay (100000);
}

10秒おきに曲がランダムで再生されるはずです。

コンパイルしてArduinoに転送すると

Img_0745

鳴りました!

音楽再生時は、基板上の青色LEDが点灯します。

これでは芸がないので、もうちょっと応用してみました。

Arduinoで赤外線測距センサー”GP2Y0A710K”を使ってみた」の記事で使った赤外線測距センサー”GP2Y0A710K”をつないで、物体がある距離まで近づいたら音楽を再生するようにしてみました。

GP2Y0A710KのVCCをArduinoの”5V”に、GNDは”GND”に、V0はアナログ端子の”A0”番にそれぞれ接続。

ついでに、動作チェックモニター用にI2C 16×2のLCDも接続。

”GND”と”VCC”はArduino側の”GND”、”5V”に、”SDA”、”SCL”はそれぞれ”A4”、”A5”端子に接続。

LCDのライブラリ登録など、詳しくは上のリンクを参照。

Img_2038

こんなのができました。

プログラムは以下。

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup() {

     Serial.begin(9600) ;
     lcd.init();
     lcd.backlight();
     mp3_set_serial (Serial);      //set Serial for DFPlayer-mini mp3 module
     delay(1);                     // delay 1ms to set volume
     mp3_set_volume (20);          // value 0~30
}
     int flag ;

void loop() {
     int ans ;
     float volt ;
     float distance ;
     ans = analogRead(0)  ;
     volt = ans * 5.0 / 1023 ;
     distance = ( 9.5974 / volt ) -3.0086 ;
     Serial.println(ans) ;
     Serial.println(flag) ;
     lcd.print(distance);
     lcd.print("m");
     delay(300) ;
    lcd.clear();

    if (distance<2.0 && flag == 0 ){flag = 1;}
    if (distance>=2.5){flag = 0;}
    if (flag==1){
      mp3_random_play ();
      flag = 2;
      }
    if (flag==0) {mp3_stop (); }

}

距離が2m以内だとMP3をランダム再生、2.5m以上離れると停止します。

センサーのとらえた距離はLCDに表示されてます。なくても動作は可能ですが、LCDをつけておくと距離を正確に測定できているかどうか確認するには便利です。

Img_2040

早速テスト。

この通り、手をかざすとDFPlayer Miniが起動し音楽再生。

Img_2039

離れるとPlayerの青色LEDが消えて、音楽も止まります。

Img_2041

さすがに圧電スピーカーでは忍びないので、百均のスピーカーをいじってくっつけてみました。

20160702_7_47_35

ついでに、チェック用のLCDも廃止。

コンパクトで、音質も向上。なかなかGoodな出来です。

ネットで見つけたファ○マの入店音などを入れて遊んでます。

こういうやつ。これ入れて、子供と遊んでます。

さて、作ってから言うのもなんですけど、こんなものいったい何の役に立つのやら。勢いで作ったので、あまり用途は考えてませんが。

でも、例えば車の死角に入ると音で知らせてくれるセンサーなんてのに使えそう。

車線変更しようかと思ったら車がいることってありますよね。死角に何かいることを音楽で知らせてくれるとありがたい。

他にも、接近するとしゃべり始める音声ガイドに使えそうですね。その場合は赤外線測距センサーより、人感センサーの方がよさそうですが。

他にも、例えば照度センサーと組み合わせて、明るいときは音楽再生、暗くなったら止まるというプレーヤーも作れそうです。まさにGet Wildネタに使えます。

などなど、アイデア次第でいろいろ使えそうですね。何に使いましょうかね?

HiLetgo TFカード U Disk Mini MP3 Player 音声ヴォイスモジュール ボード For Arduino DFPlay

« スマホがジカ熱治療に!? | トップページ | iPhone 7の”ブラック”モデル想像図 »

Raspberry Pi・Arduino・電子工作」カテゴリの記事

コメント

電話の最初の応答なんかにはどうでしょう
女性の一人暮らしとかで、女性がいると教えたくないとか
男性の「どちら様?」と再生させるといいかなとか

今時の人は携帯だろとか電話番号で誰かわかるだろとかは
どっちにしても登録してない人からだとわかりませんからね

こんにちは、mokekyoさん。

自動応答させるというのはいいですね。せっかくだから、相手の話しに応じて応答を変えるというプログラムを組んで・・・というのは、Raspberry Piでやった方が速そうです。

どちらかというと、知らない電話番号からかかってきたら、ボイスチェンジできる機能とかあるといいですね。これなら、女性でも安心です。

自動化はかなり難しいですね
電話番号を調べるにしても電話器から
どう取得しますか?

現実的にみて、コナンよろしく受話器の近くに
スピーカーを当ててボタンを押して再生でしょうか

自動化は面白いんですが、それは技術を身につけ始めた方に
ある何でも技術で解決が最良ってパターンだと思います

あ、そもそも、このMP3装置ってシリアルポートで
コントロール出来るんですね。ならば、X1でもコマンド
さえ送れば再生する事が可能なんでしょうね。

わざわざX1でする必要はありませんけど(w

こんにちは。いつも記事を楽しく拝見しています。
再来月から高齢者に向けたデバイスを企画しますので
とても参考になります。
これからも頑張ってくださいね。

こんにちは、mokekyoさん。

X1と連携ですか、胸熱ですね。プロセッサ性能はきっとこのプレーヤーの方が上でしょうが、新旧のハードウェアの融合にロマンを感じます。って、うちのX1にはシリアル端子がありませんね。残念。

こんにちは、KeisukeMaさん。

参考にされてるとは嬉しい限りです。いつもご覧いただき、ありがとうございます。

プログラムは多少できるものの、電子工作はど素人なので、まわりくどい記事になりがちですが、なるべく初心者目線でわかるように心がけてるつもりではいます。今後も何かいいアイデアを提供できるといいんですが…頑張ります。

シリアルポートがあれば、色々と操作
出来るんですけど、そもそもその選択すら
無いってのも時代を感じさせますね。

Turboだったら標準でしたっけか。

電気工作初心者です。基本的な質問をさせてください。
DFPlayer Mini単体で、基本構成(電源、スピーカー、ADKEY1のみ配線)で操作を試みています。
mp3ファイルを1つだけ記録して再生を試みるのですが、ファイルの出だしが1秒だけされて、その後はビ~~ という雑音が数秒発せられて止まってしまいます。
対処方法などアドバイス頂けたら助かります。
もしよろしければ、お返事の程よろしくお願いします。

こんにちは、TKさん。

いろいろ調べてみましたが、該当する対処方法は見つかりませんでした。すいません。

まったく再生できないわけではないので、考えられるのは未対応のビットレートだったりするんでしょうかね?ちょっと音質を落とした低ビットレートの音源で試してみるといいかもしれません。

あるいはDFPlayerそのものが壊れているということもあり得ます。でもそれだったら1秒の再生もかなわないので、考えられるのはファイルそのものの問題じゃないかと。

あまり大したヒントにはなりませんが、一度お試しください。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/510034/63850579

この記事へのトラックバック一覧です: 500円以下のArduino用mp3プレーヤー”DFPlayer Mini”で適当なもの作ってみた:

« スマホがジカ熱治療に!? | トップページ | iPhone 7の”ブラック”モデル想像図 »

当ブログ内検索

  • カスタム検索

スポンサード リンク

ブログ村

無料ブログはココログ