メインコンテンツへスキップ
見出し画像

ぷちオーディオ沼への道 (1) - Bluetooth Classic A2DP受信編

    きっかけ

    以前、Boseのスピーカをリメイクして、毎日楽しく聞いていますが、さらにアップグレードしたい欲求が出てきます。でも、ここで、高額なお金をかけて高級機器を揃えるのは我慢して、仕組み的にいいものにできないかと考えました。

    最近、FPGAを使ってAIが作成したコードでいろいろなことが作れます。DSP(デジタル信号処理)も、難しい理論を理解しなくても、大体の知識でできそうです。そのDSPで、原音に自分好みにいろいろかけることで、自分にとって最高の音ができるのではと考えました。まずはフィルタとEQですが、もっと面白いことができそうです。

    できるだけ予算は抑えめに、でも自分にとって最高な音。そんなことを考えています。

    構想

    図のような構成にしています。ESP32でスマフォやPCからBluetoothでデータを受信し、I2SでDSPに転送して処理、その後複数のチャンネルに分割してそれぞれをI2Sで出力、TAS5754のDAC,Class-Dアンプでスピーカを鳴らします。
    TAS5754は、TIのデジタル入力のClass-DアンプICです。ステレオで40Wまで出力できます。なぜ、これにしたかというと、ESP32とアンプの間にDSPを入れるので、PWMではなく、I2Sデジタル入力でなければならないこと、DAC以降は直に出力して、出力信号を入力側に戻して監視することで、比較補正(クローズド)して出力したいためです。これで、DSP側で指定した音が正しく出力できるのではないかと思います。(ここはデータシートの受け売りなので予想)
    DACまでは、音量調整などすべてデジタルで処理します。

    EQ周波数設定や各音量は、ESP32側で、WebUIの画面で調整します。DSP,TAS5754へのコントロールはI2Cで行います。DSPからもI2Cで指示できます。

    画像
    全体構成図

    これを実現するために、まずはスマフォからESP32でA2DPでデータを受信し、I2Sで出力、再生できるか実験しました。

    画像
    ブレッドボードで実験
    画像
    回路図

    Bluetooth Classic A2DPが使用できるのはESP32(SやC何もついていないもの)のタイプのみです。これは、USBポートからソフトウェアを書き込むことはできず、USB-シリアル変換が必要です。実験した時は、持ち合わせのUSB-シリアル変換モジュールを使用しています。シリアルのDTR信号とRTS信号で、RESET、IO0/BOOTの線を制御することで、シリアルから書き込み、ブートまで指示できます。

    画像
    必要な結線部分のみ

    音を出すために必要な結線は、MAX98357AへのDIN(IO22), BCLK(IO26), LRCLK(14), GND, VDDだけです。他のESP32ボードとI2Sが入力できるアンプでも使用できると思います。

    コードとビルド方法はこちらにあります。

    音出し

    ソフトウェアを書き込み、起動すると、スマフォからBTのデバイス一覧にESP32-Speakerと出ました。そして、接続し音を再生してみました。
    スピーカが小さいので、いい音とは言えませんが、音が出たので。I2Sでスマフォからの音が出力できたのでこれで実験成功です。(感動)

    次回は、I2S信号をスピーカにいい音で出すために、TAS5754を使用したClass-Dアンプの設計をしたいと思います。


     
     
    Small moves で電子工作のいろいろなものを作っています。 もともとソフトウェア開発を仕事にしていますが、最近は、それはAIにまかせて、ハードウェアにはまっています。 Amazonのアソシエイトとして、HNZ1103は適格販売により収入を得ています。

    あなたへのおすすめ