
ラジオ体操専用スピーカーの製作(その1):回路編
普段余りにも体を動かさないので、ラジオ体操ぐらいはやらないといけないなーと思いつつ、運動がきらいなこともあり実行できないでいます。
ラジオ体操をするためにスマホやパソコンを操作してラジオ体操の音声を流せば良いのですが、そのちょっとした面倒を体操をしない理由にしてしまいます。
そんな言い訳ができないほど簡単にラジオ体操を再生する専用スピーカーを製作してみることにしました。
要件
製作物としては以下の感じにしたいです。
ボタンを1プッシュするだけで再生される
再生が終了すると自動で電源が切れる
ラジオ体操第1と第2の2種類の再生ができる
どこにでも移動できて置けるような小型なもの
AC電源不要(バッテリーで動く)
バッテリー交換が頻繁に生じない(できれば1年くらい)
回路
ラジオ体操の音声ファイルを再生することが必要です。WAVやMP3の音声ファイルを再生するモジュールとしてはDFPlayer miniが定番で、多くの人が使っているようなので、それを使うことにしました。アンプも内蔵していてスピーカーも直接接続できます。
DFPlayer miniはスピーカーとスイッチを取り付ければ、単独でもSDカードに保存されはMP3やWAVのファイルを再生できます。また、マイコンなどからシリアル通信でコマンドを送れば、再生や音量の制御ができます。
今回はDFPlayer miniと制御用のArduinoをラッチングリレーを使った電源スイッチにつなげることで、電源ONと同時に再生を開始して、再生が終了したら自動で電源が切れるようにしました。
以下が回路図です。電源スイッチ部と音楽再生部からなります。


電源スイッチ部は以前の記事と同じものです。AまたはBのスイッチを押すと電源が入り、OFFボタンを押すかPW_OFFの端子をHIGHにすると電源が切れます。
バッテリーは単3のアルカリ電池またはニッケル水素電池(エネループ)を3本直列としました。なので、4.5V~3.6Vの入力から音声再生部の電源として+5Vを生成するため、秋月電子の5V出力の昇圧コンバーターAE-XCL102D503CR-Gを使いました。
バッテリーのところに付いているスイッチは、輸送時などにA,Bボタンが押されても起動しないようにするためのもので、通常は常時オンにしておきます。
音声再生部はDFPlayer miniとそれを制御するためのArduino(互換機)です。Arduinoには秋月電子の互換機AE-ATMEGA328-MINIを使いました。
DFPlayer miniは3.2~5Vで動作するモジュールですが、制御用のUARTのインタフェースは3.3V仕様です。なので、5VのArduinoのTXとDFplayerのRXをつなぐ場合にはレベル変換が必要です。簡易的ですが、1KΩの抵抗を介して接続するれば良いです。3.3V系のマイコンを使う場合にはこの抵抗は不要です。その場合は電源スイッチのDC-DCコンバータを+3.3V出力のものに変更すれば良いでしょう。
DFPlayer miniの内蔵アンプと外部のアンプとの音質の違いを比べてみたいので、今回は外部のアンプも取り付けてみました。そのアンプにはトーン&ボリュームコントロールでも使った、秋月電子のPAM8012使用2ワットD級アンプモジュールを使いました。改造はしていないオリジナルのモジュールです。
モノラル再生とするため470Ωの抵抗を介してLとRをミキシングしてアンプに入力しています。
回路の実装
試作にはブレッドボードを使っていたので、実装基板にはブレッドボード互換のユニバーサル基板を用いてみました。実装密度は犠牲になりますが、ブレッドボードで試作した時の配線を概ね利用できる点では便利な方法です。




2枚の基板は以下のように2段重ねにしました。



ソフトウェア
下記のファイルをダウンロードしてArduinoIDEで開いてコンパイル、書き込みを行います。ボードは「Arduino Pro or Pro mini」にします。
異なるボードでも動くと思いますが、各ボードのピン番号は合わせてソースコードの定義部分を変更してください。
また、今回はDFPlayer miniを制御するるシリアル通信にはSoftwareSerialを用いましましたが、HardwareSerialを使う場合には、CDFPlayer.h内のUSE_SOFTWARE_SERIALを定義している部分をコメントアウトしてください。
電源が入って起動すると、SW_SELをチェックして、Aボタンが押されている場合にはDFPlayer miniのSDカードのルートディレクトリに保存してある0001.mp3ファイルを、Bボタンの場合には0002.mp3のファイルを再生します。そして、BUSYピンがHIGHになったら電源を切る(PW_OFFピンをHIGH)というプログラムです。また、音量調整用のボリュームの値が変わったかどうかをチェックし、変化があった場合には音量を調整しています。
音量はBカーブのボリュームを使ったのでソフト的に指数関数的な音量調整となるようにしています。Aカーブのボリュームを使う場合にはその必要がないので、USE_B_VOLUMEの定義している行をコメントアウトしてください。
ArduinoからDFPplayer miniの再生や音量の制御は既存のライブラリもあるようですが、自分で制御用のプログラム(CDFPlayer.h, CDFPlayer.cpp)を作りました。マニュアルに書かれている制御データを送れば良いだけ制御できます。
ただ、秋月電子などでリンクされているDFPlayer miniのマニュアルですが、ところどころに出てくる制御データ例のチェックサムの値が間違っています。当初それに気がつかず、どう計算したらこの値にすることができるのかずいぶん混乱してしまいました。結論としては、全部足すとゼロになるという通常のチェックサムと同じです。マニュアルはFN-M16Pというモジュールのマニュアルの方が詳しく正確なようです。
DFPlayer miniは秋月電子から購入した物を使いましたが、色々なところでもっと安価なもの(互換機or同じ物?)が売られているようです。試していないのでこのソフトでそれらでも動くかどうかはわかりません。
ちなみに、ネットの記事を見ていると、それらの中にはDAC_L, DAC_Rの出力がモノラルというものもあるようですが、自分の使っているものは左右異なる音が出てました。
音声ファイル
ラジオ体操第1と第2の各音声ファイルは、テレビやラジオから録音したものでも良いのですが、NHK財団のダウンロードストアから購入することもできます。面倒なので私は購入しました。各ファイル220円です。
音楽配信サイトのmoraでは、色々なお国言葉やドラえもんの音声のラジオ体操など、色々なバージョンのものも売っているようです。
MP3またはWAVのファイルは、SDカードのルートディレクトリに保存します。ファイル名の先頭は4桁の数字にします。先頭の数字以降は何か文字があっても問題ありません。例えば「0001_ラジオ体操第1.mp3」「0002_ラジオ体操第2.mp3」などとすれば良いです。
試聴
DFPlayer miniの内蔵アンプを使った再生では、スピーカーから普通に音が出ました。音量も普通に聴く分には足りているように思います。
一方、外部出力用のDAC_L, DAC_Rを外部のD級アンプにつないだ方ですが、ブチブチという音が載ってしまいます。電源などの影響かとコンデンサをかませるなど少し対策を試してみましたが駄目でした。
音が出ていればそれほど気にならないと言えなくもありませんが、残念ながらあまり使えない感じです。
製作した回路をエンクロージャ(スピーカーボックス)に入れました。それについては別の記事でご紹介しています。