반응형
라즈베리파이 GPIO를 이용하여 음성 녹음 및 재생하는 장치를 제어해보도록 한다. 여기서는 음성 녹음(Voice Record) 모듈은 마이크를 통하여 음성을 녹음하고 스피커를 통하여 녹음된 음성을 재생한다. 여기서 사용된 모듈은 다중 메시지를 녹음/재생하는 디바이스인 ISD1820 칩을 사용한다. 이 모듈은 단일 칩 음성 녹음 및 비휘발성 데이터 저장, 그리고 8~20초 동안 재생 기능을 제공한다. 3.3V 전원에서 동작하며, 범위를 초과하면 모듈이 손상될 수 있다.
음성 녹음 및 재생 구동회로
REC 버튼 : S1은 버튼 스위치이며 이 버튼을 누르고 있는 동안 녹음이 된다. 그러므로 라즈베리파이 GPIO 핀으로 제어가 가능하다. 이 핀은 녹음하는 동안 HIGH(버튼을 누른 상태)로 유지되어야 한다.
PLAY버튼 : 이 신호에 상승에지가 공급되거나 High 레벨이 검출될 때 재생이 시작된다. 재생은 메시지의 끝이나 메모리 공간의 끝까지 계속되지만 레벨이 Low로 떨어져도 재생이 종료된다.
라즈베리파이와 회로 연결도는 아래 그림을 참고한다.
소스 코드와 코드 설명은 아래를 참고한다.
#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 Pi의 GPIO를 사용하기 위한 설정 |
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 | 프로그램을 실행한다. |
반응형
'개발자 > 라즈베리파이4' 카테고리의 다른 글
라즈베리파이 i2c lcd display 제어 (1) | 2022.09.02 |
---|---|
라즈베리파이 FND Flexible Numeric Display 제어 (4) | 2022.08.31 |
라즈베리파이 FAN 제어 실습 코드 (1) | 2022.08.30 |
라즈베리파이 부저 제어 (0) | 2022.08.29 |
Raspberry Pi PICO 사용 방법 (1) | 2022.08.02 |
라즈베리파이4 액츄에이터 7종 제어 C 언어 (0) | 2022.06.29 |
라즈베리파이4 led bar 실습 코드 (1) | 2022.06.27 |
라즈베리파이4 rgb led 코드 (1) | 2022.06.23 |
더욱 좋은 정보를 제공하겠습니다.~ ^^