DFPlayer の使い方
早押し機の音源モジュールとして、初期のころは、WAVトリガーという製品を使用していました。20程度の音源を、各端子をGNDにつないだだけで鳴らせることができる、便利なモジュールです。いくつかモジュールを試しましたが、遅延が無いのでこれを使用していました。(SSJ-001 ~ SSJ-004)

費用対効果を考えて、現在の私の早押し機(SSJ-020,CompaT20,TK-001)は、音源モジュールとしてDFPlayer を使用しています。

しかしながらモジュール変更時には、諸問題が発生しました。ここでは記憶している限りで、まとめておこうと思います。
遅延問題の解決策
SPALLLOW6での解決策
DFPlayerはマイコンキットドットコムより、MK-156としても販売されており、こちらのマニュアルが大変参考になりました。
WAVトリガーは、GNDへ端子を接続するだけで音が鳴る便利なモジュールでしたので、当初はロジック変更をなるべく避けるため、ADkey を使用したモード(固定抵抗値の変化で音変更)を使用しておりました。
しかし、音の遅延が発生してしまいます。具体的には0Ωの場合(Seg1、Seg5)はボタン押し後の遅延がありませんが、その他の場合は0.1~0.5秒の遅延が発生しました。
そのため、押下げ音だけはSeg1として、他の音はある程度の遅延を我慢する設計としました。
CompaT20 SSJ-020での解決策
高畠機の互換 CompaT20 を制作するにあたり、コストの問題点からDFPlayer の使用を決定しましたが、試作段階で正誤音の即時性の問題がでました。
具体的には、
押している間はベル(ブザー)が鳴り続ける
放すと停止する
このロジックを搭載するにあたり、ADkeyを使用した遅延の解消の必要があったのです。そこで以下の改善を致しました。
改善1:シリアル制御への変更
端子の短絡による制御から、シリアル通信による制御へ変更いたしました。ライブラリを使用することで、それほど苦も無く実装することができました。
改善2:MP3データをWAVデータに変更
上記の改善をしても、0.1秒程度の遅延が発生しておりました。そこで、MK-156のマニュアルを参考に、データ形式をWAVに変更および、ファイル名の拡張子を.wavとして保存したところ、遅延問題が解消されました。
これは、MP3データのデコード処理時間を短縮できたためと考えられます。
以上の改善点を行って、現在は問題なく稼働しています。
DFPlayerの問題点と解決策
尚、DFPlayerの使用にあたっては、いくつかポイントがありますので、ここで記載いたします。
正規品を使用する
互換製品が色々と出ていますが、DFrobot の DFPlayer を使用した方がよいです。(秋月電子 スイッチサイエンス)互換製品は個体によって、連続再生や激しい制御切替を行うと、音が鳴らなかったりする場合がありました。
電源電圧
電源電圧は4V程度に抑えた方がよいとの記載(DFPlayerマニュアル)もありますが、5Vでも問題は現れていません。Arduinoから取り出しています。ただし、本体のアンプは使っていません。
MicoSDカードの種類
MicroSDカードとの相性は、少なからずある様です。短時間の連続した押下げなどを行うと、まったく違う音が鳴る場合があります。Classや価格の問題でもなさそうです。怖いのでカードのメーカーは指定して購入しています。
音源との相性
以上を気を付けても、音の種類によって冒頭部分がきちんと鳴らない場合があります。現在わかっているのは、ウルトラクイズの正解音の場合、音の立ち上がりが若干遅く、冒頭部分がフェードインの様に聞こえます。これを解消するために、データの冒頭に機械的な音を聞こえない程度挿入することで解消しております。
まとめ
以上を色々気を使っても、DFPlayerはクセのあるモジュールなので、挙動不審な個体があったりします。複数台制作する場合は、かならずバックアップを購入し、テスト段階で少しでも異常を感じたら交換することを心がけています。
なお、一度きちんと動いたものは、挙動不審になることはありませんので、ご安心ください。