DFplayer mini とMCC

March 07 [Thu], 2019, 21:30
啓蟄もすぎて、いよいよ春はすぐそこ、自宅のベランダもアジサイの新芽が芽吹いたりと春めいてきました♪

さて、今回はDFPlayer miniをPICマイコンで制御しようってネタです。
何をいまさら、っ感じですよね、でもそこはぐっとこらえて?おつきあいください。

以前、アンドロメダにDFPlayer mini使ったときはシリアル通信制御がうまくいかず、時間もなくて端子制御でしのぎました。
端子制御でも最低限のことはできるのですが、もっと柔軟に使えるように、もう一度シリアル通信制御に挑戦してみます。

ブロ友のVividさんからPICのペリフェラル制御関数を生成できるMCCを教えていただいたので、その練習も兼ねてます。

PICの周辺機能のひとつEUSARTを使ってDFplayer miniのデフォルトに合わせた設定にしてみます。
ステータスリードは不要かとも思いましたが、せっかくなので?RxもConfigします。

MCCのConfig画面はこんな風になりました。

まぁ、ほぼ間違う余地がないというか、ほぼ自動というか、慣れてくると便利なものです。

この設定でコードを生成しました。

生成された中に含まれていた1バイト送信関数を使って、DFPlayer miniのコマンドのうち使いそうなものを関数化しました。

関数化といっても複数バイトを送っているだけの、なんの工夫もないものなのでなんか恥ずかしいです(^_^;)

今回チェックサムは使いませんでした。
DFPlayer miniのチェックサムのトラップはVividさんが解明してくださってたので使ってもよかったのですが、
・そこまで通信信頼性が必要ではない
・コマンド送信時間が2バイト分長くなる
という点を考慮しての判断です。
9600bpsだと1コマンドで数msも時間喰っちゃうんで処理時間がバカにならないんですよね。

コンパイルエラーもないので、とりあえずブレッドボードで再生やボリューム変更を行うテストプログラムで実験をしてみました。
まぁ、なんか最初はうっかりがあるだろうから、ここからが本番と思ってオシロもスタンバっていたのですが、あっさり動きました。。。

あれ?

いやいやいや、いつもの調子じゃないからなんかおかしいところがあるだろうと繰り返しテストしたり、別のコマンドを試したり、、、、大丈夫でした(・_・;)
よいことなのですが、慣れない結果は動揺してしまいます(爆笑)

というわけで?大したバグもなくあっさりと目的を達成しました。

そうだ、ひとつだけちょっと引っかかったんでした。音声の制御は何の問題もなかったのですが、同時に実施していたLEDのPWM制御周期が狂うバグをだしてしまいました。
DFPlayer miniのコマンド送信時間が思いのほか長いのを最初は意識してなかったために、コマンド送信中にPWMの状態反映が止まってしまってたのが原因でした。この問題は、PWMの状態反映を割り込み関数内に移動することによって回避できました。

話戻って
MCCすげ〜です。!

なんか、1年分ぐらいの運を使い果たした気がしますが、うっかりの団体さんがいらっしゃるまでは知らんぷりしてることにしますw

さて、なんでDFPlayer miniをいきなり使おうと思ったかと言いますと、
モケ友さんから光と音を連動させた演出についてご相談をいただいたのがきっかけでした。

ご相談いただいた演出の検証をブレッドボードで実行した様子です。


ボタンをトリガにして、発光と音声が連動動作します。
発光時間は音声ファイルの長さに依存するようにしていますので、音声ファイルを差し替えれば発光時間も自動追従します。自分の手元で作品への組み込みや調整など最後まで完結するのならそこまでする必要はないのですが、今回はできるだけプログラム変更なく柔軟性を持たせようと思いこのような仕様としました。

人のアイデアを活用させてもらって、自分のスキルアップができてなかなか楽しめました。
別途お礼もしてもらって、なんか私がまる得した感じですがWin-Winってことにしときましょう(^^♪

ではでは
Comment
小文字 太字 斜体 下線 取り消し線 左寄せ 中央揃え 右寄せ テキストカラー 絵文字 プレビューON/OFF

不正な自動コメント投稿を防ぐため、チェックボックスにチェックをしてください。

利用規約に同意
 X 
禁止事項とご注意
※本名・メールアドレス・住所・電話番号など、個人が特定できる情報の入力は行わないでください。
「ヤプログ!利用規約 第9条 禁止事項」に該当するコメントは禁止します。
「ヤプログ!利用規約」に同意の上、コメントを送信してください。

toshiさん>
ご訪問ありがとうございます。
MCC使ったら意外とうまくいっちゃいました。ソース送りましょうか?必要でしたらまたDMください(^^)/

by なお March 21 [Thu], 2019, 15:07

おおお!シリアル制御!!!これは知りたいです。

by toshi March 21 [Thu], 2019, 11:02

こばばさん>
光物が多いので白黒反転の方が見やすいかな?って感じです。
年に1個ぐらいはお目にかけようかと思ってますんでまた見てやってくださいね。

by なお March 15 [Fri], 2019, 23:46

ブログの画面がいつの間にか一新されていて、いい感じね。内容は😓💦ですが、楽しそうで何よりです!作品楽しみにしているね!

by こばば March 15 [Fri], 2019, 22:17

腹ペコ山男さん>
(-_-;)そこはロハでお願いします。。。
丁寧に、でも着実に進められている感がありますんで、この調子だと実装もうまくいくんじゃないかと思いますよ。まぁ、やらかした時は笑ってデバッグしましょう。そんなの私もしょっちゅうです(笑)

by なお March 11 [Mon], 2019, 0:11

では、アイデア提供代を次回請求しよーかなあ(笑) 今週はモーター制御で四苦八苦していましたので、実装まで着手出来ませんでしたが、ぼちぼち来週からやる予定。PICの向きが逆だーコラー!てなことにはならんようにしたいですが、またやりそうです(笑)

by 腹ペコ山男 March 10 [Sun], 2019, 23:53

Vividさん>
さすが徹底的にリサーチされてますね。解決してよかったです。
データシートに1kΩはいれることってあったので入れてました。
LVTTLとTTLだからという理由が少し胡散臭い(ほんとはレベルシフタが必要なんでは?)とは思いつつも直結よりはマシかと思って、指示に従ってました。この抵抗はダンピング抵抗の役割も果たしているのでしょうね。

by なお March 10 [Sun], 2019, 22:21

なおさんへ
迅速なるご回答をありがとうございました。なおさんの回路ではノイズがないと言う事で、もう一度自分の回路とデータシートを比較してみました。また、WEBを検索してみると私と同様のノイズが生じている投稿があり、その回答に
I found that noise was due to three issues,

Forgetting to ground BOTH GND pins on the DFPlayer chip
Forgetting to put 1k resistors in the Tx and Rx lines
Power fluctuations
とありました。
どうやらPICのTXとDFPlayerのRXの間に1KΩが無いことに気づきました。
これを入れたら、あら不思議、ノイズが出なくなりました。
またまた、お助けいただき、ありがとうございました。
ブログに加筆しておきます。

by Vivid March 10 [Sun], 2019, 22:16

Vividさん>
こんばんは。
迷惑なんてとんでもないです。こちらも潜在バグがいろいろとわかったりDFPlayer miniの理解が深まったりで逆に助かってます。
ノイズの件ですが、結論から言うと私の環境ではTxRx接続によるノイズの発生はありませんでした。
具体的には、無音のMP3ファイルを再生させて8Ω0.5Wの百均スピーカーを耳に押し当てた状態で、TxRxの接続有無総当たり4通りで差異を聞き比べてみましたが、電源GNDを回り込んでいるデジタルノイズと思われる微小なノイズ音は常に聞こえていますが、Tx,Rx(ついでにBUSYも)の接続状態ではその音量は変わらず、通常は聞こえないような音量のままでした。
スピーカーの駆動方法としては、次の3通りをためしましたが、いずれも同じ結果でした。
1)SPK+/-(内蔵アンプのみで直結)
2)DAR-R/GNDのペア(アンプなしで直結)
3)DAC-L/GNDのペア(アンプなしで直結)

気になったのは、再生終了時にSTOPコマンドとリセットコマンドを送っている部分で確率的にブツっというこれははっきり聞こえる音がなります。ただし、必ずではなく数度に一度は鳴らないので内部処理のタイミングがあるのだと思います。確かめてはないですが、リセットコマンドは音声ミュート後にリセットしているわけではなく、いきなりリセットに行っていて、MP3デコード結果異常が発生した状態の異常音がミュートされずに出力されてしまっているのだろうと思います。
また何かありましたら、遠慮なくいってください。追加で確認しますので。
普段は一人で悶々とデバッグしているので、こういうのって共同実験やってるみたいで楽しいですね♪

by なお March 10 [Sun], 2019, 20:49

ご迷惑ついでに、もう一つお聞きしたいのですが。
ビデオ画像の回路(ブレッドボード)で音声データを再生したときに、「ブッ、ブッ、ブッ、、、」という大きなノイズ音が音声とともに発生しませんか?
私も、同じようなブレッドボード(アルミケースの中AC/DCアダプタ入れて)にPICと一緒にセットしているのですが、再生開始とともに、「ブッ、ブッ、ブッ、、、」というノイズも一緒に発音されてしまいます。
PICとのTxRx信号線を外すと、しません。と言う事はPICからのノイズだと思われるのですが。
いかがでしょうか?

by Vivid March 10 [Sun], 2019, 19:12

apuroさん>
むむ、カッコの人にカッコで来るとは!!!
冗談はさて置き、apuroさんはその気になったらこの手のも絶対簡単にできる人だと思うんだけどな〜
お仲間になりましょうよ(^^♪

by なお March 10 [Sun], 2019, 16:55

   

     (´×ω×`)
    

by apuro March 10 [Sun], 2019, 16:26

Vividさん>
こんばんは。
すでにさらに確認実験をさらえましたか、はやっ!
私は夜更かし気味なので、まだまだ活動時間中です。日勤のサラリーマンとしてどうかという話はおいといてwww
BUSY端子はPlayとNo Play、なるほどそれなら今の動作と符合しますね。Vividさんと6jiroさんとのコメント含めたやりとりやお二人の過去ログも参考にさせていただいたことでDFPlayer miniを通常使用する分には仕様がクリアになったと思います。これで次から安心して?使えそうです。
こちらこそ勉強になりました。ありがとうございます!

by なお March 10 [Sun], 2019, 0:18

なおさん、お忙しい中、深夜にもかかわらず、確認実験をしていただきありがとうございました。
なおさんのコメントをもとに、再度自分のDFPlayerを起動し、ロジアナで確認するとともに、別のデータシートなどもWEBでチェックし、どうやら真相が見えてきました。
このピンの機能は、DFPlayerの再生時にHとなり、再生が停止されるとLになるみたいです。
内部の動作処理自体には関係ないようです。
一部のマニュアルに、PlayとPlay No との表記がありました。
と言う事は、内部処理がBUSYとかでは変化しないので、コマンドを送るタイミングを計るには利用できないようです。
コマンド間隔は、時間で行うしかなさそうです。
ありがとうございました。

by Vivid March 09 [Sat], 2019, 23:24

Vividさん>
こんばんは!
BUSYピンの挙動をみてみました。なんだかへんてこな挙動ですので確認した内容を列挙しますね。
・電源ON時
 →Vcc立ち上がりとほぼ同時(BUSYの立ち上がりがなまっているので20us程度遅れているといえなくもない)にHとなる
・電源ON後の最初のリセットコマンド送信時(音声は再生していないのでBUSY状態ではないとき)
 →BUSY=HっぱなしでBUSY=H時はリセットコマンドではLにおちない
・音声再生中
 →BUSY=Lにおちる
・音声再生停止中(PLAYコマンド→STOPコマンド実行後でBUSY=L状態)にリセットコマンド送信
 →リセットコマンド送信完了(Suffix byteのEFh送信完了)後、約2msでBUSY=L→Hに変化

また、BUSY端子のLレベルは0.4V程度の電圧を持っていて、ちょっと浮き気味なのが気になりました。これは個体バラツキかもしれませんが、LVTTLレベル出力端子としては高すぎに思えます。まぁ、受け側がTTL/LVTTL/LVCMOS3.3だったらVILを下回っているので問題ないのですけども。。。

という感じでした。参考になりますでしょうか?
こんな場合はどうなってる?みたいな条件がありましたら確認してみますので、またお知らせください。

やってて思ったのですが、BUSYって端子名は変ですよね。NBUSY、BUSYN、BUSYB、あるいは、READYとかでないと極性と逆で混乱してしまいます。職業病かもですが(^^;;

by なお March 09 [Sat], 2019, 21:34

こんばんは!
一つご教示ください。 注文していたDFPlayerが届いて、以前トラブっていたリセットコマンドを色々検討しました。どうやらリセットコマンドは次のコマンドまでに1−2秒の時間を空けないとダメなようで、リセットコマンド後に1秒待って次の再生コマンドを与えたら動作しました。これは解決なんですが、なおさんは、「ステータスピン」の信号をチェックしたプログラムを作成されているのでしょうか? これは、BUSYだとピンが0になり、READYだと1になって、コマンドを与えるタイミングがわかるのですが、どうも私のDFPlayerのこのピンが、ずっと1になりっぱなしみたいなんです。
なおさんのは、どうでしょう??

by Vivid March 09 [Sat], 2019, 18:46

6jiroさん>
こんにちは!
私も03コマンドを使ってて、まるでランダムプレイのようになってしまって最初わけがわからず戸惑いました。
6jiroさんにいただいたコメントで試してみてよかったです。でないと本番で使おうって時に困ってたと思います。そういう時は展示会前とか大抵は時間がなくて焦ってる時なんですよね(笑)
こちらこそナイスコメントありがとうございました( ^ω^ )

by なお March 09 [Sat], 2019, 17:48

こんにちは!
おおっ!0Fの方のコマンドですね!
それ試していませんでした。03の方を使ってました。
次DFPlayer使う機会がありましたら試してみます!
ありがとうございます!

by 6jiro March 09 [Sat], 2019, 14:10

6jiroさん>
こんばんは。
MCC便利ですよ〜←お前が言うなって感じです。Vividさんのおかげ(^^♪
このコメント見て、そういえば1曲目以外は再生してないなぁと思いやってみたら、、、あれ?違う曲が再生される。。。データシートとにらめっこしばし、そして、トライアンドエラーをまたしばし。わかりました。
再生に03コマンドをつかっていたのですが、ファイル名ではなくタイムスタンプをみてるのですね、これ。
0fコマンドに変更したら、無事ファイル名で再生してくれました。1~5曲目までためしましたが大丈夫のようでした。
次に音声を使うときは、この機能をつかって複数サウンドを使い分けたいです!

by なお March 08 [Fri], 2019, 23:42

Vividさん>
こんばんは。
ありがとうございます。ほんと、宝くじにあたったような気分です。
「リセットコマンド」ちゃんとハングもせずに効いてます。
曲の再生中にリセットコマンド送って強制停止&初期化後に次のコマンド待ちになって、
そこからちゃんとコマンド受け付けてくれる動作も確認できてます。
大陸の製品なので微妙に行儀の悪い亜種がいるのかもしれませんね(・_・;)

by なお March 08 [Fri], 2019, 23:38

ばばさん>
いつもコメントありがとう。楽しくやってて時間が足りないのが悩みの種です(笑)

by なお March 08 [Fri], 2019, 23:35

こんばんは!
DFPlayerのコントロールお見事でした!
一発合格とはさすがですね〜!
私は以前人様のプログラム改変してトライしましたが、3曲目が再生されないというツボにはまって諦めましたw
MCC便利そうですね〜。時間があるときにトライしてみたいと思いながらなかなかできていません^^;
今後の作品にも生かされそうで楽しみにしています!

by 6jiro March 08 [Fri], 2019, 18:49

なおさん、おはようございます

「いきなり成功」おめでとうございます!
快感というより、驚き、というお気持ち、理解できますよ!(笑)
私も100回に一回くらいは、経験したことがあります、あれー、上手くいったじゃん。という感じですね。
ちょっとお尋ねですが、「リセットコマンド」ちゃんと動作したのですよね?
自分の時は、ブログにも書かせていただきましたが、リセットコマンドを送ったら、そのままハングして、戻ってこなかったのです。(笑)

by Vivid March 08 [Fri], 2019, 9:32

相変わらず寸暇を惜しんで何かに挑戦しているのね。
楽しいんでしょうね❣良いこと。
沢山のお仲間とのやりとりも楽しそうで、何より!

by ばば March 08 [Fri], 2019, 8:23
P R
プロフィール
  • プロフィール画像
  • ニックネーム:なお
  • 性別:男性
  • 血液型:A型
  • 趣味:
    ・アート-(ガンダム)プラモデル
    ・スポーツ-ウインドサーフィン
    ・自動車-レガシーツーリングワゴン
読者になる
よくあるパターンですが、いまどきのガンプラにうん十年ぶりに触れて、またプラモを作るようになりました
近頃、電飾にはまり、目下修行中?です。
全塗装できないヘタレなおっさんモデラーですが、よければ読んでやってください。
2019年03月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
最新コメント
なお
» メガザク ロール機構その1 (2019年05月20日)
ばば
» メガザク ロール機構その1 (2019年05月20日)
なお
» メガザク ロール機構その1 (2019年05月19日)
なお
» メガザク ロール機構その1 (2019年05月19日)
なお
» メガザク ロール機構その1 (2019年05月19日)
6jiro
» メガザク ロール機構その1 (2019年05月19日)
6jiro
» メガザク ロール機構その1 (2019年05月19日)
apuro
» メガザク ロール機構その1 (2019年05月19日)
Vivid
» メガザク ロール機構その1 (2019年05月19日)
なお
» メガザク ロール機構その1 (2019年05月19日)
https://yaplog.jp/samesame2007/index1_0.rdf