M5Stackを使った筋トレサポート機(仮)の開発 (2)

はじめに

前回の続き.

今回は応援機能に必要な,「mp3ファイルの再生」をM5Stackでやってみました.

開発環境設定

まずmp3ファイルを再生するために必要なライブラリをインストールします.

以下の記事の「M5stack(esp32)でスピーカから音を鳴らしたい」を参考にしました.

ogimotokin.hatenablog.com

今回追加するライブラリは

  • ESP8266Audio
  • ESP8266_Spiram

の二つです.

VSCode->PlatformIO Home (PIO) ->Libraries->Search libraries
に移動し,「ESP8266Audio」と「ESP8266Spiram」と検索をかけ,それぞれインストールします.
f:id:FMR_CHN:20180910180721p:plain f:id:FMR_CHN:20180910180406p:plain これらのライブラリは,~/.platform/libの中に置かれます.

インストール後,早速参考にした記事のコードをコピペしてビルドしてみたのですが・・・

fatal error: HTTPClient.h: No such file or directory

f:id:FMR_CHN:20180910163841p:plain HTTPClient.hが見つからない????

HTTPClient.hは「/.platformio/packages/frameworkarduinoespressif32/libraries/HTTPClient」の中にあります.
エラーを吐いたファイルからF12キーを押してHTTPClient.hに飛ぶことも可能でした.
インクルードパスの設定ができていないのかと思い,プロジェクト内のc_cpp_properties.jsonの中身を見ましたが,上記のパスもきちんとこのファイルに書かれていました.

次にライブラリのインストール方法を疑い,調べてみると以下の記述が. f:id:FMR_CHN:20180910192605p:plain

グローバルライブラリににするのがダメなのかなと思い,platformio.iniにlib_depsを記述したり,ターミナルで「platformio lib install ~」を打ち込んでみたりしてプロジェクト内にライブラリをインストールしてみましたが,同様のエラーが出てしまいました.

解決策

プロジェクト内のplatfomio.iniに

lib_ldf_mode = deep+

を追加したらコンパイルできました.(deepでも可)

platformioの公式のリファレンスを見ると
Library Dependency Finder (LDF) — PlatformIO 3.6.1a4 documentation f:id:FMR_CHN:20180910164132p:plain とあり,「lib_ldf_mode」はデフォルトだと「chain」に設定されています.

ESP8266Audio内のファイルでHTTPClient.hをインクルードしてるけど,chainのままだと「/.platformio/packages/」内のHTTPClient.hを参照してくれないっぽい?

PlatformIOよくわからない・・・
原因不明のままですが,上記の解決策でコンパイルはできてるので暫く放置にします・・・

音量調整

参考にした記事に従ってコードを記述し,mp3ファイルを再生したのですが・・・

うるせぇ!!!!!!!!

としか思いませんでした.
このままでは折角の可愛い女の子の声を隣人にもお届けしてしまいます.
音量を下げなければなりません.

ソフト的に音量調整する方法を色々調べてみたところ,GitHubにある「M5Stack_ESP32_radio」が参考になりました.

github.com

AudioOutputI2Sクラスが継承しているAudioOutputクラス内のSetGain関数で調整できるみたいです.
0.2〜0.4くらいがちょうど良かったです.

動作確認

音声だけだと味気ないので,ディスプレイに「からかい上手の高木さん」を表示させみました.音声はフリーのものを使いました.

素晴らしい・・・

ついでなので,「小さな恋のうた(高木さんver. )」を流してみました.

尊い・・・

おわりに

無事M5Stackでmp3ファイルの再生ができました.
Voiceroid欲しいなぁ〜・・・
AquesTalkも使えるみたいなので,そっちも試してみたいですね.