AtomS3R/Atomic Echo Base -1-

AtomS3R/Atomic Echo Baseがあるのだけど、とりあえずすぐにやらせることもないので、動作確認から。

 ボード情報には、S3Rがないので、ボードマネージャーで情報をアップデートする。

 これはなに... Arduino ESP32 Boardsに、2.0.18-arduino.5と2.0.18-20240930.arduino3がある。2.0.18-arduino.5のほうが公式っぽいな...

 でも、ボードリストにAtomS3Rが出てこないな...

 こっちも上げてみるけど、出てこないんだろうな...

 こういうテキトーなところがM5Stackが好きになれない理由なんだよな。ボード指定はAtomS3にしておく。ハード的な互換性がないのであれば、名前は変えてほしいし、せめて名前はAtomS3/S3Rとかに変更してよ。

 ライブラリマネージャーでAtomic Echo Base向けのライブラリもインストールしておく。

 追加されるサンプルスケッチはこれ。

m5stack/M5Atomic-EchoBase

https://github.com/m5stack/M5Atomic-EchoBase

 サンプルはRecordPlay.ino。音声の録音と再生をするスケッチになっている。ターゲットはATOMS3。M5EchoBaseとか書かれているけど、相変わらず商品名の表記揺れがひどいな。

/*

  • SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD

  • SPDX-License-Identifier: MIT

*/

#include <Arduino.h>

#include <M5EchoBase.h>

#define RECORD_SIZE (1024 * 96) // Define the size of the record buffer to 96KB.

M5EchoBase echobase(I2S_NUM_0); // Create an instance of the M5EchoBase class.

static uint8_t *buffer = nullptr; // Pointer to hold the audio buffer.

void setup()


{
Serial.begin(115200);

// Initialize the EchoBase with ATOMS3 pinmap.


echobase.init(16000 /*Sample Rate*/, 38 /*I2C SDA*/, 39 /*I2C SCL*/, 7 /*I2S DIN*/, 6 /*I2S WS*/, 5 /*I2S DOUT*/,

8 /I2S BCK/, Wire);

// Initialize the EchoBase with ATOM pinmap.

// echobase.init(16000 /Sample Rate/, 25 /I2C SDA/, 21 /I2C SCL/, 23 /I2S DIN/, 19 /I2S WS/, 22 /*I2S

// DOUT*/, 33 /I2S BCK/, Wire);


echobase.setSpeakerVolume(50);             // Set speaker volume to 50%.
echobase.setMicGain(ES8311_MIC_GAIN_6DB);  // Set microphone gain to 6dB.

buffer = (uint8_t *)malloc(RECORD_SIZE); // Allocate memory for the record buffer.

// Check if memory allocation was successful.


if (buffer == nullptr) {

// If memory allocation fails, enter an infinite loop.


while (true) {
Serial.println("Failed to allocate memory :(");
delay(1000);
}
}


Serial.println("EchoBase ready, start recording and playing!");
}

void loop()


{

// Recording


echobase.setMute(true);
delay(10);
echobase.record(buffer, RECORD_SIZE);  // Record audio into buffer.
delay(100);

// Playing


echobase.setMute(false);
delay(10);
echobase.play(buffer, RECORD_SIZE);  // Play audio from buffer.
delay(100);
}

 AtomS3Rでは、内部のI2C接続等の変更があるため、AtomS3向けに書かれたサンプルやファームについて、AtomS3Rではそのまま動かないものがある。このスケッチも該当しそうだけど、そのまま動かしてみるか。

 ボタンを長押しして書き込みモードにしてスケッチを書き込む。とくにエラーもなくビルドされて書き込みできた。

 書き込みして起動すると、シリアルには以下のメッセージが出る。

18:06:01.407 -> EchoBase ready, start recording and playing!

 1秒録音して、そのまま再生している。出力される音はとても小さい。ノイズも結構乗っている感じ。

 I2CやI2Sの接続は外部は変わらないようだ。内部のIMUアクセスなどで違いが出るのかな?


オリジナル投稿:
AtomS3R/Atomic Echo Base -1-|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/9524419