아두이노 기반 ISD1820 음성 녹음 및 재생 시스템
부품 및 소모품
| 아두이노 우노 (Arduino UNO) |
× |
1 |
| ISD1820 음성 녹음 모듈 |
× |
1 |
| 스피커 (0.25W, 8Ω) |
× |
1 |
| 점퍼 와이어 (범용) |
× |
6 |
프로젝트 소개
아이디어 배경
음성 녹음/재생 장치를 찾다 ISD1820을 발견했습니다. 단돈 3달러에 20초 녹음 가능하며, 버튼만으로도 동작하지만 아두이노로 제어하고 싶었습니다. 초보자를 위한 학습용 프로젝트이며, 확장 가능성은 무궁무진합니다. 자세한 내용은 gadgetprogrammers.online 참조.
작동 원리
ISD1820으로 음성 녹음(최대 20초) 후 반복 재생합니다. 시리얼 모니터에서 'r' 키로 녹음 시작, 'p' 키로 재생 시작.
주요 핀 기능:
- VCC – 3.3V 전원
- GND – 그라운드
- REC – HIGH 유지 시 녹음 (재생 우선순위 높음)
- PLAYE – 상승 에지에서 재생 시작, EOM 마커 또는 메모리 끝까지
- PLAYL – LOW→HIGH 전이 시 재생 시작 (레벨 트리거)
- SP+/SP- – 8Ω 이상 스피커 직접 구동
- MIC – 마이크 입력, 온칩 프리앰프로 전달
- FT – 피드스루 모드, 마이크 신호를 스피커로 직접 출력
- P-E – 녹음 내용 무한 반복 재생
만들기
다음과 같이 연결하세요:
- VCC → 아두이노 5V
- GND → 아두이노 GND
- FT → 아두이노 핀 5
- PLAYL (PL) → 아두이노 핀 4
- PLAY_E (P-E) → 아두이노 핀 3
- REC → 아두이노 핀 2
위 연결 후 샘플 코드 업로드:
- 샘플 1: 사용자가 'r'/'p'로 녹음/재생 제어
- 샘플 2: 자동으로 3초 녹음 후 5초 재생 반복
샘플 1: 사용자 제어 녹음/재생
/* ISD1820 Arduino Voice Recorder
* Code by Anshul Pareek, 2018-06-06 */
#define REC 2
#define PLAY_E 3
#define FT 5
#define playTime 5000
#define recordTime 3000
void setup() {
pinMode(REC, OUTPUT);
pinMode(PLAY_E, OUTPUT);
pinMode(FT, OUTPUT);
Serial.begin(9600);
}
void loop() {
while (Serial.available() > 0) {
char inChar = (char)Serial.read();
if (inChar == 'p' || inChar == 'P') {
digitalWrite(PLAY_E, HIGH);
delay(50);
digitalWrite(PLAY_E, LOW);
Serial.println("Playback Started");
delay(playTime);
Serial.println("Playback Ended");
break;
} else if (inChar == 'r' || inChar == 'R') {
digitalWrite(REC, HIGH);
Serial.println("Recording started");
delay(recordTime);
digitalWrite(REC, LOW);
Serial.println("Recording Stopped");
}
Serial.println("### Serial Monitor Exited");
}
Serial.println("### Enter r to record, p to play");
delay(500);
}
샘플 2: 자동 녹음/재생 반복
#define REC 2
#define PLAY_E 3
#define FT 5
#define playTime 5000
#define recordTime 3000
#define playLTime 900
void setup() {
pinMode(REC, OUTPUT);
pinMode(PLAY_E, OUTPUT);
pinMode(FT, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(REC, HIGH);
delay(recordTime);
digitalWrite(REC, LOW);
digitalWrite(PLAY_E, HIGH);
delay(50);
digitalWrite(PLAY_E, LOW);
delay(playTime);
delay(500);
}
확장 아이디어: 녹음 내용을 SD 카드에 저장해 워키토키 등으로 발전시킬 수 있습니다. 상상력껏 확장해 보세요!
회로도