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



