2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

超簡単!ESP32をBlueToothスピーカーにする方法

Last updated at Posted at 2023-05-21

 ESP32のブルートゥース機能を使ってみようとサイトを色々めぐりました。

この3番目のサイトが、これでできるのか?いうくらいとてもシンプルなものだったので試してみました。その報告です。使ったのは、
KIMG0472.JPG

1.FREENOVE ESP32-WROVER-DEV("ArduinoIDE2.1.0"では"ESP32 Wrover Module")
2.PCM5102DACモジュール
3.ヒャッキン 300円(330円)アクティブスピーカー

3番目のサイトから"ESP32-A2DP-main.zip"をダウンロードして、"ArduinoIDE"で

Sketch → Include Library → Add .ZIP Library…

という順に進み、取り込みます。そして、新たに加わったExamplesの

File → Examples → ESP32-A2DP → bt_music_receiver_simple

を開きコンパイルし、ESP32に転送するだけです。

bt_music_receiver_simple.ino
#include "BluetoothA2DPSink.h"

BluetoothA2DPSink a2dp_sink;

void setup() {
  a2dp_sink.start("MyMusic");  
}

void loop() {
  delay(1000); // do nothing
}

こんなに簡単にできるなんて、Phil Schatzmannさんに感謝、感激ですね。もちろん裏側に様々なライブラリが隠されている訳です。試しに少し機能をつけ足そうとすると、実行ファイルのサイズが大きくなって"Sketch too big"と叱られます。そんな時には、

Tools → Partition Scheme

で"Huge APP" を選択、つまり
hugeSketch.jpg
としてやると、問題なく通るようです。
 I2Sのピンが他のピンに変えられるかも試してみました。ライブラリ内では

This creates a new Bluetooth device with the name MyMusic and the output will be sent to
the following default I2S pins which need to be conected to an external DAC:

bck_io_num = 26
ws_io_num = 25
data_out_num = 22

と定められてるようです。それを

i2s_pin_config_t my_pin_config = {
        .bck_io_num = 4,
        .ws_io_num = 2,
        .data_out_num = 0,
        .data_in_num = I2S_PIN_NO_CHANGE
};

としてみましたが問題なく動作しました。

#include "BluetoothA2DPSink.h"

// I2S PCM5102 への出力
// #define I2S_LRC  25
// #define I2S_DOUT 22
// #define I2S_BCLK 26

BluetoothA2DPSink a2dp_sink;

void setup() {
    i2s_pin_config_t my_pin_config = {
        .bck_io_num = 4,
        .ws_io_num  = 2,
        .data_out_num = 0,
        .data_in_num = I2S_PIN_NO_CHANGE
    };

  a2dp_sink.set_pin_config(my_pin_config);
  a2dp_sink.set_volume(128);// uint8_t 0-255
  a2dp_sink.start("MyMusic");
}

void loop() {
  delay(1000); // do nothing
}

 私の古い"SONY WALKMAN"から"MyMusic"にブルートゥース接続して聴いてみましたが良い音です。ただWALKMANから音量を変えることはできないみたいです。なので動作中に音量を変えたければ、loop()内に何か記述することになるのかと思われます。
 駄文を最後まで見ていただきありがとうございました。

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?