개발자/라즈베리파이4

라즈베리파이 음성 녹음 재생 모듈

지구빵집 2022. 8. 26. 16:46
반응형

 

 

라즈베리파이 GPIO를 이용하여 음성 녹음 및 재생하는 장치를 제어해보도록 한다. 여기서는 음성 녹음(Voice Record) 모듈은 마이크를 통하여 음성을 녹음하고 스피커를 통하여 녹음된 음성을 재생한다. 여기서 사용된 모듈은 다중 메시지를 녹음/재생하는 디바이스인 ISD1820 칩을 사용한다. 이 모듈은 단일 칩 음성 녹음 및 비휘발성 데이터 저장, 그리고 8~20초 동안 재생 기능을 제공한다. 3.3V 전원에서 동작하며, 범위를 초과하면 모듈이 손상될 수 있다.  

 

음성 녹음 재생 모듈 ISD1820

 

IDS1820 모듈 설명

 

음성 녹음 및 재생 구동회로  

 

 

REC 버튼 : S1은 버튼 스위치이며 이 버튼을 누르고 있는 동안 녹음이 된다. 그러므로 라즈베리파이 GPIO 핀으로 제어가 가능하다. 이 핀은 녹음하는 동안 HIGH(버튼을 누른 상태)로 유지되어야 한다.

 

PLAY버튼 : 이 신호에 상승에지가 공급되거나 High 레벨이 검출될 때 재생이 시작된다. 재생은 메시지의 끝이나 메모리 공간의 끝까지 계속되지만 레벨이 Low로 떨어져도 재생이 종료된다. 

 

라즈베리파이와 회로 연결도는 아래 그림을 참고한다.

 

라즈베리파이와 ISD1820 음성 모듈 연결도

 

소스 코드와 코드 설명은 아래를 참고한다.

 

#include <wiringPi.h>
#include <stdio.h>

#define REC	11
#define PLAYE	9
#define PLAYL	10

int main(void)
{
	if(wiringPiSetupGpio() == -1){
		return 1;
	}
	pinMode(REC, OUTPUT);
	pinMode(PLAYE, OUTPUT);
	pinMode(PLAYL, OUTPUT);

	while(1)
	{
		printf("Play Voice\n");

// PLAYE, Edge activated mode
		digitalWrite(PLAYE, 1);
		delay(5000);
		digitalWrite(PLAYE, 0);
// PLAYL, Level activated mode
//		digitalWrite(PLAYL, 1);
//		delay(5000);
//		digitalWrite(PLAYL, 0);
	}

}

 

 

Program Source Description
#include <wiringPi.h> GPIO access library 헤더파일 선언
#include <stdio.h> 표준입출력 관련 헤더파일 선언
#define REC  11
#define PLAYE  9
#define PLAYL  10
REC Pin 정의
PLAYE Pin 정의
PLAYL Pin 정의
int main(void)
{
 
  if(wiringPiSetupGpio() == -1){
  return 1;
  }
Wiring PiGPIO를 사용하기 위한 설정

 

  pinMode(REC, OUTPUT);
  pinMode(PLAYE, OUTPUT);
  pinMode(PLAYL, OUTPUT);
REC 핀 출력설정
PLAYE 핀 출력설정
PLAYL 핀 출력설정
  while(1)
  {
  printf("Play Voice\n");


메시지 출력
  digitalWrite(PLAYE, 1);
  delay(5000);
  digitalWrite(PLAYE, 0);
  }
}
PLAYE 핀에 HIGH(1) 출력
5000ms 지연
PLAYE 핀에 LOW(0) 출력

 

컴파일 프로그램 실행은 아래와 같은 명령어로 한다. REC버튼을 누르고 원하는 소리를 녹음한다. audio_record.c를 컴파일하고 실행한 다음 녹음했던 소리가 재생되는지를 확인한다.  

 

컴파일 명령어 gcc o audio_record audio_record.c -lwiringPi 실행파일명을 audio_record설정하여 컴파일한다.
실행 sudo ./audio_record 프로그램을 실행한다.

 

 

 

반응형