0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

手持ちのスピーカーを格安でアクティブスピーカーにする

Posted at

FB友の投稿で、 WeActStudio の I2SSpeakerModuleV1 と、ESP32 の組み合わせで、格安なのに高音質なBluetooth 対応アクティブスピーカーにできるということを知ったので、制作の備忘録としてメモに残しておく。

I2SSpeakerModuleV1 について

WeAct Studioが github で公開している I2S Speaker Module V1 という基板で、I2S 接続で入力されるデジタル音声データをステレオアナログ信号に変換するDAC(デジタルオーディオコンバータ)と、4Ω・2.8W のステレオアンプが一つになったもの。DAC+AMPが100円玉程度の大きさに収まっているのが素晴らしい。
IMG_1016.jpeg
100円玉と比べると小さいことが判る。
 しかも、 Aliexpress では150円程度と格安で買える。
以前に登場してよく使われている I2SのDAC + AMP としては、MAX98357A搭載 I2Sオーディオモジュールというものがある(モノラルで4Ω、3.2W)。
WeAct Studio のものに使用されている PCM5100A デュアル PA は MAX98357A よりも高い音質を備えていて、価格が安いのも魅力。

ESP32と組み合わせる

開発元の、 WeAct Studio が公開している github のサイト
https://github.com/WeActStudio/WeActStudio.I2SSpeakerModuleV1
には、Arduino 用のサンプルコード(スケッチ)が公開されている。
このため、Bluetooth が使える ESP32 WROOM02 系ならどれでも使えるようだ。手元に WeMOS D1 mini ESP32 が有ったので、それを使うことにした。
D1 mini などのESP32は、国内のネット通販では結構な値段がしますが、アリエクスプレスなどでは500円くらいで購入できるので、両方購入しても千円以内でできる。

配線

I2S Speaker Module(Ampと略) とESP32 との接続は、次のとおり5本だけ。

AMP ESP32
VCC VCC
GND GND
BCK IO16
DIN IO17
WS IO21

配線への注意

  • ESP32側は、ピン番号ではなくて信号ピン番号なので注意
  • github 内のサンプルコードとは違うピン番号を使用している
    (D1 mini 側の配線がまとまる位置にしているため)
  • SDとMCは配線しない
  • スピーカー端子への配線は左右(L,R)、プラス、マイナスに注意

ソースコード

配線を上記のようにしたので、github のサンプルコードを次のように変えて使用する。

MyBTspeaker.io
#include "AudioTools.h"
#include "BluetoothA2DPSinkQueued.h"
#include "A2DPVolumeControl.h"

I2SStream i2s;
BluetoothA2DPSinkQueued a2dp_sink(i2s);

void setup() {
    auto cfg = i2s.defaultConfig();
    cfg.pin_bck = 16;
    cfg.pin_ws = 21;
    cfg.pin_data = 17;
    // cfg.pin_mck = 0;
    i2s.begin(cfg);
    a2dp_sink.set_volume(20);
    a2dp_sink.start("MyMusic");
}

void loop() {
}

開発環境

ESP32の開発環境は Arduino IDE が一般的だが、最近は VSC (Visual Studio Code) を macOS で利用した。(Aruduino IDEではライブラリーが無いエラーに悩まされた)
VSCに PlatformIO プラグインをインストールして使う。
上記のソースをコンパイルするのに必要な PlatformIO の定義ファイル
”platformis.ini" は次のとおり。必要なライブラリへのURLを記載。

[platformio]
description = A2DP Example
default_envs = esp32dev
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps = https://github.com/pschatzmann/ESP32-A2DP
 https://github.com/pschatzmann/arduino-audio-tools.git
build_flags = -DCORE_DEBUG_LEVEL=2
monitor_speed = 115200
monitor_filters = esp32_exception_decoder

完成したもの

手持ちのスピーカー端子が大きかったので、それに合わせてケースを 3Dプリンターで作成。それぞれの基盤は平らな部分を両面テープで固定。
(この画像は2個作ったうち、コネクターを設置して上記と異なる配線をしたもの。その後、上記の配線を直付けしてみたので、その配線をおすすめする。)

IMG_1017.jpeg

おまけ

だいぶ前に同様の目的で購入した Bluetooth Amp. と並べてみる。

IMG_1018.jpeg

右側のものは、リチウムイオン電池が付いていて、充電回路(USB端子)も付いていて良いのだが、技適マークが付いていないため、実験後は使用していない。また、Bluetooth 接続時にけたたましい音量で中国語を叫ぶのも嫌!(多分、「接続したよ!」と言っているのだろうが、音量が大きすぎ)
 左側が今回作成したもの。
リチウムポリマー電池と制御ボードもあり、組み込むことも考えたが、USBの電源アダプターをスイッチボットのプラグミニ経由でコンセントに繋ぐと、電源のオン・オフもリモートでできるのが便利だと思った。

作ってみたくなった方へ

参考までに購入先情報を。(私が購入したもの)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?