視覚障害者用音楽再生機を作る(スイッチで曲再生を制御する)

曲再生制御として4個のスイッチを用意しました。

スィッチのON/OFF検出はライブラリーが多くあるのですが大した処理じゃないので自分で実装しました。Arduino IDEは言語としてはC++ですのでクラスを作ってってのでも良かったのですが組み込みなら古典的な関数ポインタで処理すべきだろうってんで以下のようなコードとしました。

本来ならチャタリングの除去など付けるべきなのでしょうが今回の場合はボタン押下でDFPlayerへのコマンド発行して400msecのdelayがありますので影響は無いはずです。

スイッチ押下時の動作

各スイッチが押された場合の処理は簡単でグローバル変数のフォルダー番号、曲番号を変更して曲再生を試行して指定曲が再生できなければ先頭に戻るって感じです。

前の曲スイッチの動作は今の曲が再生されて3秒以内であれば1曲前に戻りそうでなければ今の曲を再生し直すってロジックにしています。また戻して聴きたい曲なわけですから曲リピートを行うようにしました(他のボタン操作で解除)

 

 

 

視覚障害者用音楽再生機を作る(曲再生制御プログラミング)

DFPlayer制御用のライブラリーがありますのでライブラリマネージャーで検索してダウンロードします。複数ありますが開発元作成らしい"DFRobotDFPlayerMini for DFRobot"を使用しました。

初期化はサンプルなどをみるとbeginが成功しなければ無限ループしてCPUのWatchDogでリトライするコードが多かったのですが上手く動かないっぽいので単純に長めの時間待ちにしました。

曲再生制御

今回の再生機は複数のCDを簡単に切り替えられることが目標ですのでSD内にフォルダー分けしてそれぞれに1枚のCDを収めてDFPlayerのフォルダー内の曲再生ファンクション(0x0f)を使用します。

電源投入後は先頭の曲を再生を行い、その曲の再生が終了したら次の曲の再生を始めます。次の曲は曲番号をインクリメントして再生を試みますが存在しなければ1曲目とします(動作としてはCDリピートとなります)。指定曲の有無は再生コマンドを発行した後DFPlayerがBusyとなるかどうかで判断してます。このBusyが立つタイミングがフォルダー内の曲数などで長くなるようで20曲ぐらいであれば400msecで誤動作しないようです。

ちなみにフォルダーは"01"~"99"、ファイル名は先頭3桁を数値にして"001"~"999"とする必要があります。ファイル名の先頭を曲番号3桁にするにはフリーソフトのmp3tagで「変換」→「タグ-ファイル名」で$num(%track%,3) %title%とすればトラック番号を先頭に3桁つけたファイル名に一括して変更できます。

 

 

視覚障害者用音楽再生機を作る(開発環境を構築する)

Arduino IDEにESP32ボード開発環境をセットアップ

プログラムを書くわけですがESP32の開発環境としてはESP-IDFってのが本家としてあるようですが私はArduinoから入ってきてるのでArduino IDE(Ver.2.0.1)で行いました。

ターゲットボードとして"ESP32 Dev Module"を使うことになるのですがデフォルトでは入っていませんのでボードマネージャーにURLを追加してネットから落とすことになります。

  1. Arduino IDEのメニューから「ファイル」→「基本設定」を開く
  2. "追加のボードマネージャのURL"にhttps://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json を追加する。

(ESP32開発元のEspressif社のHPhttps://docs.espressif.com/projects/arduino-esp32/en/latest/installing.htmlに詳細あります)

これでボードマネージャでESP32を検索すれば"ESP32 Dev Module"が選択できるはずです。

WindowsにESP32用シリアルドライバーをセットアップ

私が購入したESP32開発ボードはUSBからの書き込み用にUSBシリアル変換チップとして"CP2102"というICが使われていて初期状態ではWindowsから認識できなかったためにドライバーをセットアップする必要がありました。これが最近では珍しいinfファイルを使ったセットアップでしたのでちょっと詳しく書いておきます。

以下の作業はESP32をUSBで接続した状況で行ってください。

Windowsから認識されていない状態となります

まず”CP2102 ドライバー”ぐらいで検索すると開発元と思われるSilicon Labs社のHPが見つかりますので"CP210x Universal Windows Driver"ってやつをダウンロードします。

zipファイルが落ちてきますので適当な新規フォルダーに展開しておきます。

先程のデバイスドライバー画面で認識していないCP2102を右クリックして"ドライバーの更新"を選びます。

"コンピュータを参照してドライバーを検索"を選んでドライバーを展開したフォルダーを選びます。

COMポートが認識されてプログラムの書き込みができるようになるはずです。

 

 

 

視覚障害者用音楽再生機を作る(ハードウェアを作る)

回路図は最終的に以下のようになりました。

最終的な回路図

電源はスピーカーのDC基板のSW付きボリュームに7.8Vが入っていましたので、それをESP32の5V inに突っ込みました。5Vって事になっていますが3端子レギュレータで3.3Vに落としてCPUなどに供給しているようで12Vぐらいまでは入力可能なようです。

DFPlayerの電源は3.2V~5VになっているのでESP32の3.3Vから供給しています。

 

SWは押すとLowのデジタル入力としました。離しているときには浮いているので抵抗入れてプルアップしなきゃならないのですがESP32はソフト的にプルアップすることが可能とのことでこれで問題ありませんでした。

 

DFPlayerとの通信用にIO17(TX2)、IO18(RX2)をDFPlayerのRX、TXに接続し曲再生中にはLowになるBUSYをIO34で取り込みます。

実装した基板

で基板を作ったわけですがDFPlayerのSD取り出しと3.5mmステレオジャックを同じ方向にすべきでした(これだと両方にスペースが必要)

 

配線は2.5mm間隔のはんだ付けに自信がなかったのでワイヤラッピングというのを基本にしています。AWG30という電線を工具を使ってピンに巻きつけるやり方で

ワイヤストリッパになってるので引っ掛けて被膜を剥く

剥いた電線を先端の溝に入れる

端子に差し込んでクルクルする

端子に巻き付いてOK

間違った場合は工具の反対側を差し込んで逆にクルクルすれば外れます。

工具は2,500円ぐらいです。

 

 

 

視覚障害者用音楽再生機を作る(スピーカーを選ぶ)

中身は決めたとして音楽再生には当然スピーカーが必要なのでした。DFPlayerを使う場合には

  1. 内蔵アンプを使って普通の電源がいらないスピーカーを使う
  2. アンプ内蔵のアクティブスピーカーを使う

という選択が可能なのですが1.の場合には音量調整を自分で行う必要があり(CPUから音量を0~30で指定できる)操作ボタンを増やしたり長押しなどが必要となり操作が大変になりそうで2.でいくことにしたのでした。

 

アンプ内蔵でアナログ入力できるといえばPC用スピーカーとなるわけで探していたわけですが

direct.sanwa.co.jp

これがフリマアプリで2,500円だったので決めました。エンクロージャーもそこそこ大きそうだったのでもしかしたら基板を中に入れられるかしら?とも思ったのですが現物をチェックしたら僕の技術では無理そうでしたので上に100均のタッパーを乗せるという今の形に落ち着いたのでした。

 

ちなみにこのスピーカーは高音、低音の調整も付いていてそこそこ良い音して満足できるものでした。

視覚障害者用音楽再生機を作る(使用機材)

視覚障害者用音楽再生機を作ろうと思ったのは最近Arduinoを使って電子工作を始めましてMP3再生するDFPlayer Miniというモジュールが割りと安価(注文時はPrimeで2個629円)で手に入ることを知ったからです。適当なCPUとシリアル通信接続すればマイクロSDカードに入れたMP3を曲指定で再生できるというものです。

これにはアンプも内蔵されており直接スピーカー接続できるので余ってるスピーカー繋げれば楽勝じゃんと思ったりしたわけです。

 

制御するCPUはArduino unoを持っていたのですがブレッドボードで実用品作るわけにもいかずユニバーサルボードに実装を考えまして新規購入することにしました。当初Arduino Nanoにしようかと思いましたがArduinoは基本5Vで動きますがDFPlayerは3.3vが基本らしいって事と今後WiFiなどで遊ぶことも考えてESP32 DevKitってやつを使うことにしました(機能多くて安いし、注文時はPrimeで2個2,180円))。

 

これでESP32にSW4個(次局、前曲、次CD、前CD)付けてSDに全CDコピーしてあげてプログラム組んであげれば出来上がりじゃんと思ったわけでした。

 

 

 

 

視覚障害者用音楽再生機を作る(序)

最近、親が視覚障害(ほぼ失明)になってしまいました。

音楽が好きなのですがCDプレーヤの再生は手探りで可能としてもCD交換がままならないわけです。

既存のMP3プレーヤにCD全部入れて渡すことは可能なのですが誤って設定ボタンなどに触れると、そこからの復帰操作は無理っぽいわけで超シンプル老人用MP3プレーヤなど無いかと探してみましたが見つからず、ならば作る!となったわけです。

ということで一応完成しましたので備忘録を兼ねて記しておきます。

一応完成した視覚障害者用音楽再生機