M5Stack Core2のスピーカーを使う
M5Stack Core2はスピーカー、アンプ周りが旧Coreから改善されておりノイズもほぼ無くなり音質も向上しています。ただ、ESP32の内蔵DACを使わずに外部のI2Sアンプを使用する方法に変わっていて音の鳴らし方がちょっと異なります。今回の記事では、M5Stack Core2のスピーカーの使い方を紹介します。
もくじ(Index)M5Stack関連の目次へ戻る
M5Stack Core2のサウンド回り
回路図によると、NS4168へI2Sで接続しています。接続は下記のようになっています。旧CoreではESP32の内蔵DAC(GPIO25)からサウンドを出力してNS4148で増幅する形でしたが、今回のCore2では外付けのDACを利用している点が異なります。
NS4168 | GPIO |
---|---|
I2S_BCK | 12 |
I2S_LRCK | 0 |
I2S_DATA | 2 |
I2S_DATA_IN | 34(Mic) |
SPK_EN | AXP192のGPIO2 |
実際に使ってみる
外付けのDACを利用するので、ネットで検索してもあまり情報がありませんでしたが、M5AtomEchoと同様の設計でしたのでその時に調べた情報が役に立ちました。
スピーカーの初期化
AXP192に接続されているSPK_ENを制御する必要があるようです。下記の記述を使います。
M5.Axp.SetSpkEnable(true)
ESP8266Audioを利用する
WAVやMP3ファイルを再生する場合はESP8266Audioが利用できます。AudioOutputI2Sにピン配列を設定する必要があるため下記のように記述します。
AudioOutputI2S out = new AudioOutputI2S(0, 0); # 第二引数の0はExternalDAC
out->SetPinout(12, 0, 2); # ピン配列を指定(BCK, LRCK, DATA)
実際のサンプル
GitHubにCore2_MP3とCore2_WAVをサンプルとして公開しました。下記のリンクを参照してください。
※SDカード上のMP3またはWAVファイルは自分で用意する必要があります。また、ファイル名は英数半角で短めに変更しておきましょう。
https://github.com/mongonta0716/m5stack-tips
再生するとこのようになります。
AquesTalk pico for esp32を使う
AQUESTのAquesTalkも利用することが可能です。AquesTalk-ESPを簡単に使うクラス(プログラム)(N.Yamazaki’s blog)で公開されているAquesTalkTTS.cppに変更を加えて外部DACを利用するようにします。
サンプルはGitHubにCore2_Aquestalkとして公開していますのでそちらを参照してください。
https://github.com/mongonta0716/m5stack-tips
AquesTalkを使用してみた様子です。
おわりに
M5Stack Core2はバイブレーションモーターも付いているためお知らせデバイスとしても有用です。AquesTalkで音声合成したり、VOICEROIDでWAVファイルを作成してそれを読み上げることも可能となります。ぜひ活用してみましょう。