2022年10月15日土曜日

ESP32でBTスピーカー、そして。

先週は、pcm5102からの出力が、ステレオミニプラグだけで…と言うところで終わってました。発注していたステレオミニプラグが届きましたので今週はその続き。

オーディオって、昔は真空管アンプとか作りはしてましたけど、そこから置き去りにされているので、5V単一で動いて安くて、ということでD級アンプなんて買っちまったのでハマるとは…。

さて、pam8403の入力側にプラグをつけて、pcm5102にさしてみるとプツプツプツプツ言ってる件。これなんだったかってぇとおマヌケなことに、GND配線を誤っていたからでした。とっても恥ずかしいお話m(_ _)m。


D級アンプって、以前、仕事の関係で、同僚が扱っていたことはあれど私自身はまったく触る機会がなく、なんだか判ってません。しかももう20年くらい前ですかねぇ…。
今回使うスピーカーは、PCにつないで使っていた関係で、これがまたステレオミニプラグになってます。ふつーに、アンプって言えばマイナスコモンでスピーカーにつなげりゃ音出るでしょ、って、大抵思うでしょ? しかしD級アンプはそうはいかんかったんですよ。


なぁんとなく、マイナスコモンじゃないんですよーって話があったな…と、遠い記憶にはありつつ、どうgoogleにお伺い立てたら良いかも思いつかぬままキーワードを試すも結論でず、まぁ、ヘッドホンアンプみたいにマイナスコモンのステレオミニプラグでOKでしょ?と思い込んだのが運の尽き。

pcm5102の出力を、普通のアンプに食わせてみると問題なく鳴る、それも結構クリアに。おー、これが聴ければOKじゃんと思いpam8403を継げると、プツプツ言うかシーンとしているか。はて、これ電源か?と思ってesp32+pcm5102とpam8403の電源を分離すると、プツプツは言わんけどシーンとしてる。はてこれは壊した?と思い、2台セットの片割れに入れ替えても状況が変わらない。

これはきっとヘッドホンアンプとしてマイナスコモンで使おうというのが誤りなんだと考え直したのがすでに今日着手してから4時間後。改めて、『pam8403 ヘッドホンアンプ 』とお伺い立てると、あるわあるわ…、orz。

https://nheroshi.blogspot.com/2019/08/pam8403.html

などなど複数のサイトを参考にさせていただきました。

トランスを入れるのが本式のようですが、スペースファクタの問題もあり、ジャンク箱漁って10Ωを2つめっけだして使うことで、目的を達することができました。これで娘に渡せます。

使ったもの:

ESP32-SDevKitC-32E
GY-PCM5102
GF1002
ケースは何だっけ、SW-75Bだったかな。ESP32を保持することを目的に、ユニバーサル基板をネジ止めしそこにESP32を載せてあります(写真撮れよ…)。

pam8403/GF1002には電源スイッチついてますが、電源出力がない関係で、ESP32の+5V端子から電源貰っており、pam8403だけの電源切るかたちになってますんで、ほとんど意味ありませんね…。

2022年10月10日月曜日

ESP32でBTスピーカー

 GW以降から今年の夏は色々あって、週末のみならず夏休み中も大汗かいて『作業』していたせいか、それが終わって1ヶ月以上経っているというのに、色々行動を起こすのがとても億劫で、しかもすぐ眠くなる。これ、結局は夏の疲れが残っている、と言うことなんだろうと、勝手に割りきっちゃいるのだけども、イコール、何も作る・試す気にならないという事にもつながってしまっている。


いやいや、そんなことじゃ遺憾でしょう…


その『作業』の期間、話の流れとしては遠く関係、ないかも知れないけど、娘が、タブレットでオーケストラ聴いてるので『なんぼなんでもそりゃ音悪いしょ〜」から始まって、なら、これが落ち着いたら、使ってないスピーカーがあるからそれをbtスピーカー化しようかね、と、ここまではありがちな話。

で、アマゾン調べりゃきっと何かあるでしょ!と思って見てみると、あるこたあるけど、同じデバイス使っててもお高いもの以外、ことごとくTELECは通してない。そういうのお使いの向きもあるとは思うけど、電波暗室内じゃないと使えんのじゃ?ということでことごとく却下。

なら組み込みボードで…も、ラズパイ以外は有意な差は無いので、やるとなったらUSBのbtアダプタ利用か…とか考えつつ、でも、娘に、「こいつは電源入れるときと切るときは…」とか「つながるまでちょっと時間掛かるんで、このLCD見て確認して」などと、マルチタスクが故の制約があるlinuxベースであれこれ用意しておいて教えたところで、『そういうの面倒だからいらない』となること請け合い。
色々悩んで、WROOM32ならbt4使えんじゃん、電源バチバチやっても(たぶん)大丈夫だし、しかもTELEC通ってるのあるし!ということで、WROOM-02ではI/O的に足らない使い方をしようと思いつつ、死蔵していたWROOM32Eを引っ張り出した。

…、そこから1ヶ月、復帰できず再び放置。いやいやダメダメ、ということでようやく今月着手。

ただ、WROOM32は、「WROOM-02と同じようにarduino IDEでつかえんでしょ?」程度にしか思っておらず、『死蔵」の名のとおり、購入してからもう一年くらい放置(^^;;;; btプロファイルも詳しいわけではないので、btスピーカーってば…と調べると、どうもesp ideのサンプルコード利用事例、プラスM5stackでの事例。

やり方はありそうね、ということで、ハード集め。nanopiで、mpd serverやらせることを考えていた、同じく死蔵のpcm5102モジュール(gy-pcm5102だと思う)を持ち出したけど、こいつはライン出力しかないので、『スピーカー』と名乗るにはパワーアンプも必要。
btスピーカーの面倒なところは、電源どうするか? もちろん、ACアダプタ使うのだけども内部に電源系統が様々生じるのは、考えないとならないことが増えるので、5Vか3.3V単一のシステムにできてほしい。5Vで動いてくれりゃスマホ用のACアダプタを使える。
しかし、5Vで動いてくれるD級アンプって、ものすごい少なく、結局だいぶ安価な、2個セットのpam8403利用のボードを調達。

以上をつないで(今回は最終的に箱に納めないとなんない、ということとWROOM32Eがでかい関係で、ブレボで試し組せず直接ハンダ付けして組み立て。pcm5102は入力側I2Sも出力側アナログも端子に出ているので、そこにワイヤを半田付けして、WROOM32 - pcm5102 - pam8403を接続。

で、WROOM32Eに、esp ideサンプルから、README.mdどおりにa2dp sinkをビルドして書き込み。そしてリセットすると…

WROOM32Eはちゃんとa2dpとしてbtホスト(rock64にbluez他インストールし、btつかえるようにしてある) から見えていて、ちゃんとコネクト。しかし音が出ないいやむしろプツプツプツプツ言ってる。

はて?何か間違ってるんか…?と思い、pcm5102のステレオジャックから、他のオーディオセットにつないでみると、チャンと鳴るじゃん!あれー?パワーアンプまわりで何か間違えてる??と言うほど配線ないし…。今度はpcm5102のステレオジャックにつないだままpam8403にスピーカーつなぐと、今度は鳴ってくれる。

おっとぉ、どうやら、pcm5102の端子は、ステレオジャックに接続していないと出力が出ない設計になっているようだ。えー、スペースファクタ面で大ダメージじゃん。
とはいえ何とかケース内に収めることができそうなので、アマゾンでポチポチして、後は来週ーっ。ということで、今回はtext only。