理由あってジオコレ踏切を自動化したものを3台作りました。
動作試験をしていて気がついたのですが、DFplayer miniが時々鳴らなくなる時があります。検討を後回しにしていたのですが、そろそろこの問題を解決しないといけないと思い、重い腰をあげました。
鳴らない原因の特定
毎回鳴らないのではなくて4回に1回程度鳴らない時があるので、マイコンとDFplayer mini間のUART通信ができていない訳ではなさそう。
DFplayer miniについて今まであまり気にしてなかったのですが、よく見てみると再生時に点灯するLEDの色が違ったり、載っているICが違ったりしている。改めてネットで調べてみるとDFplayer miniに派生がいろいろあるそう。以下写真は購入したDFplayer miniの表と裏のもの。
写真右のDFplayer miniはICが他の2個と違っていて、GD3200Bというのが載っていてこれが一番厄介。初期設定でボリューム値をデフォルトの30から5まで下げているのだが無視され爆音から始まってしまっています。
そこでネットで調べると多くの方が書かれていますが、電源投入時に初期設定として1.5~3秒程度待たないといけないらしい。まともにデータシートを読まずに進めていたので反省!
とりあえず、3秒待ちを追加しみました。でも改善されない。
いろいろ試してみた結果、先ほどの初期化時にコマンド送る前に3秒のWaitを取って、それ以外に2秒待ってリトライさせてみたら、ようやく音量のセットが効いた。試しに初期の3秒を2秒に減らしても問題ありませんでした。マイコンの起動に4秒ちょっとかかるが実用上問題ないので、この件はこれで終了としました。
ここからタイトルにした時々再生しないの本題について。音が出なくなるのは困る。踏切でLED点滅だけとなんとも味気ない。音って結構重要な要素と気がつきました。
再生しないときはDFplayer miniのLEDが点灯しない。何か手はないか悩んでいたところ、BUSY端子というのがあることに気がつきました。(マニュアルから抜粋)
再生時にBUSY端子がLow、再生しないときはHighになるらしい。早速確認してみました。
再生していないとき、BUSY端子が3Vちょっとの出力があります。
再生時1V弱出ています。
再生未動作時に再度再生コマンドを送ったら良いんじゃないかと思いつきました。早速、基板とソフトを修正することにしました。自作のオリジナル基板はこんなこともあるかとマイコンの空き端子をテストポイントとして引っぱり出しておきました。ただBUSY端子は足に直接つなぐしかないです(想定外)
黄色で丸を囲ったところが、それぞれを繋ぐポイント。(わかりづらくすみません)
ハード的にはこれでおしまい。ソフトは、ATmega328のPB7ピンにBUSY端子の出力を入力します。この端子を LOWかHIGHかを確認し、かつ踏切動作開始フラグがON状態なら再生コマンドを送るようにプログラムに追加します。これを100msごとに確認します。
実験開始・・・結果、ハード、ソフト修正前は、3,4回に1回程度再生しないことがありましたが、この対応後は20回連続確認して再生しないのがゼロ件になりました。結構あっさり対応できてしまいました。拍子抜け。
終わりに
結局は鳴らない原因はわからずじまい。対処療法で済ませてしましました。まずは上手く動いているのでこれで良しとします。
ご覧いただきありがとうございました。
コメント