【Arduino】録音再生モジュール(ISD1820)を使う

it

ISD1820録音再生モジュールを使ってみました。
モジュールの機能についての説明、実際に使ってみた使用感を記載しました。
簡単な使い方の説明と、Raspberry Pi Picoを使ってArduino環境で制御するサンプルについて記載しました。

記事のまとめ

使い方は簡単でボタン操作でもマイコンからの制御でも音声の録音、再生ができるモジュールです。
入手性もよく安価です。
作りのチープさは感じますが簡単に修正できる範囲です。
マニュアル操作での使い方と、Arduino環境でのマイコン(Raspberry Pi Pico)を使った制御サンプルを記載しました。

録音再生モジュール(ISD1820)

簡単紹介

録音ボタンを押すことで音声の録音、再生ボタンを押すことで録音した音声を再生できます。

録音ボタン : 押している間音声を録音します。
再生ボタン : 一回押すと録音した音声を再生します。
JOG再生ボタン : 押している間録音した音声を再生します。

録音はするごとに音声は上書きされます。
電源を切っても録音データは残ったままです。
録音データは読み出せません。

今回DIP版を使います。
SOP版もあり使い方は同じで価格は\100円程度安いです。

◆購入
販売店の売り方もありますが、モジュール単体、スピーカー単体、モジュールとスピーカーのセット売りなどあるのでよく確認して購入します。
目安はamazon、AliExpressで500円前後。

◆関連記事

ピン配置

外観

使ってみた

◆組み立て

スピーカー(オプション販売)をコネクタに接続するだけです。
(購入時期や販売店により、自分ではんだ付けが必要なスピーカーもあるようです)
スピーカーにはワイヤーがはんだ付けされていますが、仕上がりが良くないのでしばらくすると切れそうです。



◆手動操作

タクトボタンを押すことで録音、再生、押している間の再生ができます。

赤のREC(録音ボタン)を押している間インジケータLEDが点灯し録音しました。
ボタンを離すと録音をやめます。
最大で10秒の録音ができました。

黒のPLAYE(再生ボタン)を押すと、録音した音声を最後まで再生します。
途中で音声を止める方法はありません。
再生中にRECを押すことで再生は止まりましたが、元の音声は上書きされました。

黒のPLAYL(JOG再生ボタン)を押している間、録音した音声を再生します。
途中で話すことで再生は止まります。
もう一度押すと最初から再生が開始されます。

◆マイコンから制御

ピンヘッダにジャンパワイヤを接続します。
マイコンのGPIOから信号(HighActive)を出力することで制御できました。

ボタン操作と信号の出力は同じです。
REC端子がHighの間録音します。
P-E端子が1回Highになると音声を再生します。
P-L端子がHighの間音声を再生します。

FTは用法がわかりませんでした。

信号の幅について調べてみました。
録音信号RECの信号をLowにしてから再生信号P-E信号をHighにするまでの時間は>200us必要。
再生信号P-Eの認識に必要な信号の幅は2usでした。

準備

使うもの

画像名称、型番用途
録音再生モジュール
ISD1820
録音、再生をしてもらいます
Raspberry Pi PicoISD1820に録音信号、再生信号を入力します
サウンドセンサ
LM393
音センサの検出により録音を開始します
タッチセンサモジュール
TTP223
録音した音声の再生に使います
ブレッドボード配線します
ジャンパワイヤ数本配線します

Arduino環境

Arduino環境でRaspberryPi Picoを使用します。
Arduino環境の準備はこちらの記事で紹介しています。

ボードライブラリ

今回Raspberry Pi Picoを使用します。
Arduino IDEのボードマネージャからRP2040用のライブラリのインストールとボードの選択をします。
ボードライブラリには「Raspberry Pi Pico/RP2040 by Earle F. Philhower, III」を使用します。
Generic RP2040またはRaspberry Pi Picoを使用します。

追加のボードマネージャのURLhttps://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
検索RP2040
ボードライブラリRaspberry Pi RP2040 Boards(x.x.x)※
選択するボードRaspberry Pi RP2040 Boards(x.x.x) > Raspberry Pi Pico
※動作確認はバージョン 4.1.1です

モジュールライブラリ

モジュールライブラリのインストールは不要です。

使い方

マニュアル操作

◆説明

ボタン操作により録音、再生をします。

赤のRECボタンを押している間録音できます。
片手がふさがるので机をたたいた音を録音しました。

再生は真ん中のPLAYEボタンを押します。
録音された音声が最後まで再生されます。

この操作ではPLAYL(JOG再生)の結果動画を載せていませんが、PLAYLボタンでは押している間音声を再生し、ボタンを離したところで再生が止まります。

◆結果

Raspberry Pi Picoからの制御

◆説明

ISD1820をRaspberry Pi PicoのGPIOを使って操作します。

録音開始のトリガにはサウンドセンサ(LM393)を使います。
サウンドセンサが音を検出したらISD1820のREC端子をHigh信号を5秒間送りの録音をします。

再生には静電容量タッチセンサ(TTP223)を使用します。
タッチを検出したらISD1820のPLAYL端子を録音時間と同じ5秒間Highにして再生します。
(はじめはタクトスイッチを使っていましたが、ボタンを押したときの音で録音が開始されることがあるので、無音の静電容量タッチセンサを使っています)

録音後に200msのウエイトがあります。
REC信号がLowになってから200ms以内は再生ができないようです。

◆配線

◆スケッチ

#define ISD1820_REC     (0)
#define ISD1820_PLAYE   (1)
#define ISD1820_PLAYL   (2)
#define BUTTON_PIN      (3)
#define LM393_PIN       (4)

#define REC_DELAY_MS    (200)
#define REC_TIME_MS     (5000)
#define PLAYL_TIME_MS   REC_TIME_MS


void setup()
{
  pinMode(ISD1820_REC, OUTPUT);
  pinMode(ISD1820_PLAYE, OUTPUT);
  pinMode(ISD1820_PLAYL, OUTPUT);

  pinMode(BUTTON_PIN, INPUT_PULLDOWN);
  pinMode(LM393_PIN, INPUT);

  digitalWrite(ISD1820_REC, LOW);
  digitalWrite(ISD1820_PLAYE, LOW);
  digitalWrite(ISD1820_PLAYL, LOW);


}

void loop()
{
  if(digitalRead(LM393_PIN) == LOW)
  {
    digitalWrite(ISD1820_REC, HIGH);
    delay(REC_TIME_MS);
    digitalWrite(ISD1820_REC, LOW);
    delay(REC_DELAY_MS);
  }

  if(digitalRead(BUTTON_PIN) == HIGH)
  {
    digitalWrite(ISD1820_PLAYL, HIGH);
    delay(PLAYL_TIME_MS);
    digitalWrite(ISD1820_PLAYL, LOW);
  }
}

◆結果

手拍子の音を録音しました。
再生音が小さいので聞き取りにくいですが録音できています。
最初の1拍子が取り切れていないですが、しゃべった音声を複製再生するおもちゃはこんな原理でしょうか。

コメント

タイトルとURLをコピーしました