본문 바로가기

ESP32 Project

Practical Audio DSP Projects with the ESP32 교재 설명

반응형

Practical Audio DSP Projects with the ESP32의 각 챕터별 주요 프로젝트 및 단계별 구현 내용 

 

교재 Practical Audio DSP Projects with the ESP32의 각 챕터별 주요 프로젝트 및 단계별 구현 내용은 다음과 같습니다.


Chapter 1~3: ESP32 하드웨어 및 개발 환경 구축

  • 개요 및 하드웨어 사양: Xtensa LX6 듀얼 코어 CPU(최대 240MHz), 520KB SRAM, 448KB ROM, Wi-Fi 및 Bluetooth를 갖춘 ESP32 프로세서의 특성과 DevKitC 보드 구조를 분석합니다.
  • 개발 환경 설정: Arduino IDE에 ESP32 보드 패키지 보드 매니저 URL을 추가하고, 보드를 연결하여 시리얼 통신 상태를 검증합니다.

Chapter 4: 기초 임베디드 프로젝트

기초 입출력, 주변 장치 제어 및 네트워크 프로그래밍의 단계별 구현을 다룹니다.

  1. LED 점등 및 버튼 제어 (Altflash / UpDown):
    • 구현: GPIO 핀을 출력/입력으로 설정하고, 입력 버튼(GPIO 17)의 논리 상태 변화를 감지하여 8개의 LED 카운트 값을 제어합니다.
  2. PWM 및 DAC 파형 생성:
    • 구현: PWM 기능으로 LED 밝기를 변경하거나, 내장 DAC(GPIO 25/26)를 제어해 톱니파(Sawtooth) 파형을 출력합니다.
  3. SPI 기반 SD 카드 읽기/쓰기 (SD-WRITE / SD-READ):
    • 구현: 표준 SPI 인터페이스(MOSI: GPIO23, MISO: GPIO19, SCK: GPIO18, CS: GPIO5)로 SD 카드 모듈을 연결하고, 디렉터리 생성 및 텍스트 파일(TEST.TXT)에 난수 데이터를 기록/읽기 합니다.
  4. 네트워크 및 블루투스 통신 (WiFi Scan / UDPControl / Bluetooth Classic):
    • 구현: 주변 Wi-Fi 네트워크를 스캔하거나, 스마트폰 앱에서 UDP 패킷을 수신하여 LED/리레이를 원격 제어합니다. Bluetooth Serial 라이브러리로 무선 명령을 수신하는 구조도 실습합니다.

Chapter 5: 음향 및 오디오 포맷 기초

오디오 신호의 물리적 특성(주파수, 진폭), PCM 이산화 방식, WAV 및 MP3(MPEG-1 Audio Layer 3) 압축 알고리즘의 원리를 다룹니다.


Chapter 6: I2S 기반 오디오 DSP 응용 프로젝트

ESP32의 내장 I2S 버스(I2S0, I2S1)와 DMA 기능을 활용한 실시간 오디오 처리 프로젝트입니다.

  1. 디지털 마이크 오디오 수집 (DigMic):
    • 구현: INMP441 I2S 마이크를 I2S0 포트에 연결하고, 수신된 PCM 데이터를 시리얼 플로터에 실시간 파형으로 출력합니다.
  2. 실시간 오디오 증폭 및 출력 (DigAmp):
    • 구현: INMP441 마이크 입력(I2S0 RX) 신호를 캡처한 뒤, MAX98357A 클래스 D 앰프(I2S1 TX)로 전달하여 스피커로 실시간 재생합니다.
  3. SD 카드 MP3 및 플레이리스트 재생 (SDMusic / PLAYALL):
    • 구현: ESP32-audioI2S 라이브러리를 이용하여 SD 카드 파일 시스템에서 MP3 파일 목록을 읽어오고 I2S 앰프 경로로 음원을 연속 재생합니다.
  4. 모노/스테레오 인터넷 라디오 (IRadio):
    • 구현: Wi-Fi에 접속한 후 오디오 스트리밍 URL에 연결하며, 듀얼 MAX98357A 앰프 및 포텐시오미터(가변저항)를 조합하여 하드웨어/소프트웨어 볼륨 제어가 가능한 스테레오 인터넷 라디오를 구성합니다.
  5. 텍스트 음성 변환 (TTS) 및 말하는 이벤트 카운터 (TTS / EventSpeak):
    • 구현: Google TTS 엔진과 오디오 라이브러리를 연동하여, 센서/버튼 이벤트 발생 시 카운트 수치를 스피커 음성으로 출력합니다.
  6. 플래시 메모리(SPIFFS) 음원 재생 (MyMP3 / SPIFFSfiles):
    • 구현: ESP32 내장 플래시 메모리의 SPIFFS 파일 시스템에 MP3를 업로드한 후, 외부 SD 카드 없이 음원을 재생하고 파일 목록을 탐색합니다.

Chapter 7~11: DSP 이론, Z-변환 및 필터 설계 개념

  • 이산시간 시스템 및 Z-변환: 임펄스 응답, 컨볼루션 연산, Z-변환 수식 해석 및 inverse z-transform 기법을 분석합니다.
  • FIR 및 IIR 필터 설계 원리: Hamming, Kaiser 창(Window) 함수를 적용한 FIR 필터 설계와 Butterworth, Chebyshev 방식의 IIR 필터(Biquad 절 구조) 설계 개념을 다룹니다. ScopeFIR, ScopeIIR 등 전용 소프트웨어 및 MATLAB 활용법을 포함합니다.

Chapter 12: ESP32 기반 FIR 디지털 필터 실전 구현

  1. 정현파 신호 발생기 (Sinewave):
    • 구현: Arduino Audio Tools 라이브러리의 SineWaveGenerator 클래스를 활용해 2kHz 정현파를 생성하여 I2S로 출력합니다.
  2. Pmod I2S2 고속 ADC/DAC 입출력 (InOut / Shared):
    • 구현: 외부 24비트 ADC/DAC 모듈인 Pmod I2S2를 연결하고, 독립 또는 공유 I2S 포트 설정으로 신호를 실시간 입출력(Pass-through)합니다.
  3. 실시간 FIR 필터 구현 (FIR1):
    • 구현: ScopeFIR에서 추출한 계수(Coefficients)를 FilteredStream 클래스에 적용하여 저역 통과(Low-pass), 대역 통과(Band-pass), 고역 통과(High-pass) FIR 필터링을 실시간 수행합니다.
  4. 원천 알고리즘 기반 FIR 필터 구현 (FIRCircular):
    • 구현: 오디오 라이브러리 없이 ESP32 내장 ADC/DAC와 1ms 타이머 인터럽트(Timer Interrupt), 그리고 링 버퍼(Circular Buffer) 포인터 연산 알고리즘을 자체 제작하여 실시간 필터링을 수행합니다.

Chapter 13: ESP32 기반 IIR 디지털 필터 실전 구현

  1. 오디오 라이브러리 기반 IIR 필터 (IIR1):
    • 구현: Butterworth 저역 통과 필터의 분자/분모 계수(b_coefficients, a_coefficients)를 설정하고 IIR 필터 클래스를 통해 Pmod I2S2 입출력을 처리합니다.
  2. 원천 알고리즘 기반 IIR Biquad 필터 (IIRInt):
    • 구현: 외부 라이브러리 없이 2차 Biquad 차분 방정식 수식을 직접 코딩하고, 타이머 인터럽트 내부 ISR에서 내장 ADC/DAC를 통해 실시간 IIR 필터링을 구동합니다.

Chapter 14: 고속 푸리에 변환 (FFT)

  • 실시간 스펙트럼 분석 프로젝트 (FFT):
    • 구현: Pmod I2S2 입력 오디오 신호에 대해 AudioRealFFT 기반 8192 샘플 FFT를 실행합니다. 계산된 주파수, 주파수 크기(Magnitude), 해당 주파수와 일치하는 음계(Musical Note) 및 음계와의 주파수 차이를 계산하여 시리얼 모니터에 실시간 표시합니다.

💡 특정 프로젝트(예: I2S 앰프 회로 연결, FIR/IIR 필터 소스 코드 작성 등)에 대해 더 자세한 예제나 설명을 원하시면 말씀해 주세요.

 

 

반응형