Skip to main content

Grove - サウンドレコーダー

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Grove-Sound Recorderは、APR9600をベースにしており、32~60秒間の音声録音、非揮発性ストレージ、および再生機能を提供する真のシングルチップソリューションです。このデバイスのサンプルレートは8kで、Seeed Twig-Sound Recorderでは合計32秒が4つのセクションに分割されており、それぞれのセクションを個別に制御できます。また、このサウンドレコーダーはGrove互換インターフェースを備えており、手動またはArduino/Seeeduinoで制御可能です。

特徴

  • Grove互換インターフェース
  • 手動またはMCUで制御可能
  • 非揮発性フラッシュメモリ技術、バッテリーバックアップ不要
  • ユーザーフレンドリーで使いやすい操作
  • 低消費電力
  • 単一の抵抗を交換することでサンプルレートと録音時間を変更可能
    tip
    Groveモジュールの詳細については、[Grove System](https://wiki.seeedstudio.com/ja/Grove_System/)をご参照ください。

応用例

  • おもちゃ

仕様

項目最小標準最大単位
電圧3.05.05.25V
動作電流25mA
待機電流1uA
範囲±1.5g

使用方法

このGrove-Sound Recorderは、固定時間の4つのメッセージセグメントをサポートしています。各セグメントは手動またはMCU(Arduino/Seeeduino)で制御可能です。また、各セグメントの録音時間はユーザーが変更できます。 Recorder Method

手動でレコーダーを制御するのは非常に簡単です。それでは見てみましょう。スイッチ(SW1)は録音/再生の選択用で、録音したい場合は「Rec」に、録音した音声を再生したい場合は「Play」に切り替えます。4つのボタン(K1~K4)は制御ボタンで、関連するボタンを押すことでセグメントを制御して録音/再生できます。出力コネクタは8Ω0.5Wスピーカーを接続するためのもので、Groveコネクタは電源供給とMCU制御用です。

手動で制御する方法

ステップ1: レコーダーに電源を供給します。「Control」をGrove 4ピンワイヤーを介してBase Shieldまたは任意の5V電源に接続します。

注意

4ピンワイヤーを介してBase Shieldに接続する場合、接続されたピンをプログラムでSEL1とSEL2をLowに設定する必要があります。

私は「Control」コネクタをデジタルポートD1に接続し、以下のようにD1とD2をLowに設定しました:

const int D1 =  1;
const int D2 = 2;
int State = LOW;
void setup() {
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
digitalWrite(D1, State );
digitalWrite(D2, State );
}
void loop()
{
}

ステップ2: SW1を「Rec」に切り替えます。

ステップ3: セグメントに関連するボタン(例: K1)を押し続けて録音を開始し、ボタンを離して録音を停止します。録音の開始と停止時に「DI」という音が聞こえます。

注意

各セグメントの録音時間は15秒を超えないようにしてください。それ以上になると、ボタンを押し続けていても自動的に停止します。

ステップ4: 録音した音声を再生したい場合は、SW1を「Play」に切り替え、関連するボタンを押します(押し続ける必要はありません)。すると、そのセグメントに録音された音声が再生されます。

Arduino/Seeeduinoでレコーダーを制御する方法

このレコーダーはMCU(ArduinoまたはSeeeduino)でも制御可能です。この機能により、このレコーダーモジュールはさらに多くのアプリケーションに適し、ユーザーに素晴らしい体験を提供します。 それでは、MCUでの制御を始めましょう。K1/K2/K3/K4で制御される4つのセグメントを、それぞれSection_1/Section_2/Section_3/Section_4と定義します。

ステップ1: ハードウェアを準備します。「Control」コネクタをBase ShieldのデジタルポートD2に接続し、SW1を「Rec」に切り替えます。

ステップ2: ソフトウェアを準備します。セクションを選択して録音/再生を行うために、Sel_1とSel_2の各デコードが異なるセクションを指します。

Sel_1(D2)/Sel_2(D1)選択されたセグメント
0 0なし (セグメントが選択されていません)
0 1Section_2
1 0Section_3
1 1Section_4

注意

MCUで制御する場合、Section_1は選択できません。

こんな表は興味ない、混乱する!コードだけが欲しい? 以下のコードをArduino/Seeeduinoにダウンロードしてください。

/****************************************************************************/

#include "APR9600.h"

/*Sound RecorderのGroveインターフェースのマクロ定義*/
#define SEL1 2
#define SEL2 3
ARP9600 recorder(SEL1,SEL2);

/*シリアルモニタから入力されたコマンドを格納*/
char index;// '2','3','4'のいずれか、セクション2, セクション3, セクション4のインデックス
char control;//制御バイト、'r'は録音、's'は録音停止、
//'p'は再生

void setup()
{
Serial.begin(9600);
recorder.begin();
}
void loop()
{
getCommand();
delay(50);
}
void getCommand()
{
if (Serial.available()>0)
{
/*シリアルモニタからコマンドを取得*/
index = Serial.read();
control = Serial.read();
}
while(Serial.available()>0)Serial.read();//受信バッファをクリア
if((index > '1')&&(index < '5'))// インデックスは2~4である必要があります
{
if(control == 'r')//録音コマンドの場合
{
recorder.record(index - 0x30);
Serial.print("get the ");
Serial.write(index);
Serial.write(control);
Serial.print(" command, ");
Serial.print("begin to record section_");
Serial.println(index - 0x30);
}
else if(control == 'p')//再生コマンドの場合
{
recorder.play(index - 0x30);
Serial.print("get the ");
Serial.write(index);
Serial.write(control);
Serial.print(" command, ");
Serial.print("begin to play section_");
Serial.println(index - 0x30);
}
else if(control == 's')//停止コマンドの場合
{
recorder.stop();//録音停止
Serial.print("get the ");
Serial.write(index);
Serial.write(control);
Serial.print(" command, ");
Serial.print("stop recording");
}
/*コマンドをクリア*/
index = 0;
control = 0;
}
}

以下のコマンドを使用してレコーダーを制御できます(ボーレート: 9600):

コマンド説明SW1の状態
2rbSection_2の録音を開始REC
2rsSection_2の録音を停止REC
2pSection_2を再生Play
3rbSection_3の録音を開始REC
3rsSection_3の録音を停止REC
3pSection_3を再生Play
4rbSection_4の録音を開始REC
4rsSection_4の録音を停止REC
4pSection_4を再生Play

注意

Section_1はMCUによって制御することはできません。

Arduino/Seeeduinoにファームウェアをダウンロードした後、コネクタ「Control」がD2&D3&V&Gに接続されていることを確認してください。

SW1をRecに切り替え、任意のシリアルポートトランシーバー(例: OCTOPUS)を使用してコマンドを入力します。まず「2rb」を入力してSection_2の録音を開始し、「2rs」を入力して録音を停止します。なお、「2rs」を入力しない場合、録音は約15秒後に自動的に終了します。

次に「2p」を入力してSection_2を再生できます。この際、SW1が「Play」に切り替えられていることを確認してください。

3つのセクション(Section_2、Section_3、Section_4)を録音した後、シリアルポートを使用して再生したいセクションを選択して制御できます。

各セクションのサンプルレートと録音時間を変更する方法

サンプリング周波数を制御することで、品質と録音時間のトレードオフを調整できます。発振器の周波数は、OscRピンからGNDへの抵抗値(PCB上のR7)を変更することで変更できます。以下の表は、抵抗値と対応するサンプリング周波数、入力帯域幅、および録音時間をまとめたものです。

抵抗値サンプリング周波数入力帯域幅録音時間
44 K4.2 KHZ2.1 KHZ60 S
38 K6.4 KHZ3.2 KHZ40 S
24 K8.0 KHZ4.0 KHZ32 S

R7は出荷時に24Kに設定されていますが、38Kまたは44Kに変更することで、サンプルレートを下げる代わりに録音時間を延長することができます。

回路図オンラインビューア

リソース

技術サポートと製品ディスカッション

私たちの製品をお選びいただきありがとうございます!製品の使用体験ができるだけスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。

Loading Comments...