- 最終更新日
- 記事公開日
【Raspberry Pi Pico】UART通信でDFPlayerを制御する
MP3再生モジュール 『DFPlayer mini』は、単体でも使用可能ですが、マイコンを使ったUART(非同期シリアル通信)で制御することも可能です。
今回は、Raspberry Pi Picoを使い、DFPlayerの音を鳴らす方法を紹介します。
配線図
プログラム(MicroPython)
# ハードウェア関連のライブラリを読み込み
import machine
# UART初期設定(UART番号,クロックレート,TXピン:GP4/6Pin,RXピン:GP5/7Pin)
uart = machine.UART(1,baudrate=9600,tx = machine.Pin(4),rx = machine.Pin(5))
# シリアルデータの作成(一曲だけを再生)
sdata = bytearray([0x7E,0xFF,0x06,0x01,0x00,0x00,0x00,0xEF])
# シリアルデータの送信
uart.write(sdata)
短いコードですが、これでmicroSDカードに保存された音声データが一曲再生されます。
技術解説
- 0x7E:開始コード
- 0xFF:バージョン情報
- 0x06:バイト数(開始コード・終了コードを除く)
- 0x01:コマンド
- 0x00:フィードバックの有無
- 0x00:上位ビット
- 0x00:下位ビット
- 0xEF:終了コード
基本動作を「コマンド」で設定。
動作オプションを「下位ビット」で指定します。
この2つ以外のパラメーターは基本的に共通です。
曲を指定して再生
- コマンド:0x03(ダイレクト再生コマンド)
- 下位ビット:0x03(曲の番号を指定)
sdata = bytearray([0x7E,0xFF,0x06,0x03,0x00,0x00,0x03,0xEF])
リピート再生
- コマンド:0x11(リピート再生コマンド)
- 下位ビット:0x01(リピート再生スタート)
sdata = bytearray([0x7E,0xFF,0x06,0x11,0x00,0x00,0x01,0xEF])
リピート再生を止める
- コマンド:0x11(リピート再生コマンド)
- 下位ビット:0x00(リピート再生ストップ)
sdata = bytearray([0x7E,0xFF,0x06,0x11,0x00,0x00,0x00,0xEF])
その他
その他、ボリューム調整・音質変更・一時停止・ランダム再生など、色々なコマンドが用意されています。
詳しくは、PDFをご覧ください。
3ページ目の「3.2 .Serial Communication Commands」という項目に、コマンドのパラメーターについて記載されています。