1 of 48

Explorando Áudio

Digital Embarcado

com Micropython

Construindo um processador de audio com ESP32 e ADAU1401

Belo Horizonte Maio 2025

2 of 48

👋 Lucas Emerick

Engenheiro de Dados & Backend | Pythonista há +10 anos

  • Especialista em pipelines em tempo real, APIs e sistemas distribuídos
  • Projetos de alto impacto em educação e campanhas políticas.
  • Formação em Engenharia de Sistemas Autônomos (PUC Minas) e Antropologia (UFMG)
  • Construo caixas acústicas, ensino engenharia de som, programo DSPs e produzo uma rádio online que nunca dorme!

📍 lucasemerick.com 🔗 github.com/lvdopqt 💼 linkedin.com/in/lucasvemerick

Explorando Áudio Digital Embarcado com Micropython

3 of 48

Function FM – Web Rádio Independente

  • De plataforma de DJ sets a polo da cena eletrônica�
  • Programação 24/7 com sets, podcasts, debates e performances ao vivo�
  • Apoio à música independente e vozes marginalizadas�
  • Organização de eventos culturais e foco na inclusão e representatividade

Explorando Áudio Digital Embarcado com Micropython

4 of 48

CAIXA ALTA – Associação Cultural

  • Solução coletiva e econômica para gestão e uso de equipamentos de performance na Grande BH

  • Criação de inventário de equipamentos subutilizados, com acesso e manutenção garantidos

  • Promoção da diversidade e inclusão por meio da cultura Sound System e eventos artísticos

  • Fortalecimento de redes entre pessoas e coletivos de som, luz e palco

  • Desenvolvimento de software e hardware destinado a instalações artísticas e sistemas de som em geral

Explorando Áudio Digital Embarcado com Micropython

5 of 48

6 of 48

7 of 48

Índice

  • Introdução
  • Sobre o Micropython
  • Protocolos de Comunicação I²C, I²S
  • Programando o DSP
  • Programando o ESP32

Explorando Áudio Digital Embarcado com Micropython

8 of 48

Explorando Áudio Digital Embarcado com Micropython

9 of 48

Explorando Áudio Digital Embarcado com Micropython

10 of 48

Introdução

O que é um processador de áudio?

Explorando Áudio Digital Embarcado com Micropython

11 of 48

Introdução

O que é um DSP?

Explorando Áudio Digital Embarcado com Micropython

12 of 48

Introdução

O que é um DSP?

Explorando Áudio Digital Embarcado com Micropython

13 of 48

Introdução

Aplicações de um DSP:

  • Equalizadores de áudio
  • Crossovers digitais
  • Sistemas multicanais
  • Efeitos sonoros
  • Sistemas para line arrays
  • Interfaces de Audio
  • Codificação e decodificação de voz
  • Cancelamento de ruído em chamadas

Explorando Áudio Digital Embarcado com Micropython

14 of 48

Introdução

Aplicação exemplo: “Crossover Digital”

Explorando Áudio Digital Embarcado com Micropython

15 of 48

Introdução

Itens utilizados no projeto:

Explorando Áudio Digital Embarcado com Micropython

16 of 48

Sobre Micropython

  • Implementação leve da linguagem Python 3 criado em 2013 por Damien P. George�
  • Projetado para rodar em microcontroladores (ESP32, STM32, RP2040 etc.)�
  • Código simples e legível, ideal para prototipagem rápida�
  • Acesso direto a hardware: pinos, sensores, atuadores�
  • Ideal para educação, arte interativa, IoT e automação�

Explorando Áudio Digital Embarcado com Micropython

17 of 48

Protocolos de Comunicação

I2C

O que é I²C? – Protocolo de comunicação serial síncrono, ideal para conectar múltiplos dispositivos com apenas dois fios (SDA e SCL).

Como funciona? – Comunicação controller-target com endereçamento único, onde o controller manipula a transmissão dos dados.

Vantagens – Simplicidade, baixo custo, suporte a múltiplos dispositivos no mesmo barramento.

Aplicações – Sensores, displays, EEPROMs, conversores AD/DA, microcontroladores e DSPs.

Explorando Áudio Digital Embarcado com Micropython

18 of 48

Protocolos de Comunicação

I2S

O que é I²S? – Protocolo de comunicação serial usado para transmissão de áudio digital entre dispositivos.

Como funciona? – Utiliza três linhas principais: BCLK (clock de bit), WS ou LRCLOCK (word select) e SD (dados de áudio).

Vantagens – Baixa latência, alta qualidade de áudio, suporte a múltiplos canais e fácil integração com DACs e ADCs.

Aplicações – Conversores digitais-analógicos (DACs), amplificadores de áudio, interfaces de áudio para microcontroladores e DSPs.

Explorando Áudio Digital Embarcado com Micropython

19 of 48

Protocolos de Comunicação

Resumo

📡 I2C (Inter-Integrated Circuit):

  • Comunicação serial síncrona com dois fios (SDA e SCL).
  • Suporta múltiplos dispositivos com endereços únicos (1 mestre, vários escravos).�
  • Mais lento, porém simples e ideal para conexões curtas e periféricos de baixa velocidade.�

🎧 I2S (Inter-IC Sound):

  • Projetado para transmissão de áudio digital.
  • Usa 3 fios principais: Word Select (WS), Clock (SCK), e Data (SD).

Explorando Áudio Digital Embarcado com Micropython

20 of 48

Programando o DSP

Estrutura da Placa de desenvolvimento:

  • Alimentação
  • IO
    • I2C e I2S
    • Entradas e Saídas Analógicas
    • Entradas e Saídas Digitais

- EEPROM

Explorando Áudio Digital Embarcado com Micropython

21 of 48

Programando o DSP

Ligação I2C para programação

Explorando Áudio Digital Embarcado com Micropython

22 of 48

Programando o DSP

Configuração Inicial no SigmaStudio

Explorando Áudio Digital Embarcado com Micropython

23 of 48

Programando o DSP

Programa de um crossover digital

Explorando Áudio Digital Embarcado com Micropython

24 of 48

Programando o DSP

Configuração de cortes de frequência de um crossover 2 vias

Explorando Áudio Digital Embarcado com Micropython

25 of 48

Programando o DSP

Programando usando a API do SigmaStudio via Python

Explorando Áudio Digital Embarcado com Micropython

26 of 48

Programando o DSP

Metodologia de teste - Função de Transferência

Explorando Áudio Digital Embarcado com Micropython

27 of 48

Programando o DSP

Setup do DSP para testes

Explorando Áudio Digital Embarcado com Micropython

28 of 48

Programando o DSP

Setup do DSP para testes

Explorando Áudio Digital Embarcado com Micropython

29 of 48

Programando o DSP

Resposta de frequência pós crossover

Explorando Áudio Digital Embarcado com Micropython

30 of 48

Programando o ESP32

Instalação do Firmware;

Download: https://micropython.org/download/ESP32_GENERIC/

Explorando Áudio Digital Embarcado com Micropython

31 of 48

Programando o ESP32

Estrutura do Software

Explorando Áudio Digital Embarcado com Micropython

32 of 48

Programando o ESP32

Inicializando a comunicação com o ADAU1401

https://github.com/lvdopqt/sigmadsp_minimal

Explorando Áudio Digital Embarcado com Micropython

33 of 48

Programando o ESP32

Arquivo de Parâmetros:

Explorando Áudio Digital Embarcado com Micropython

34 of 48

Programando o ESP32

Representação do Filtro Biquad

Fórmula do Filtro Biquad

Explorando Áudio Digital Embarcado com Micropython

35 of 48

Programando o ESP32

Implementação de um filtro passa baixa

Explorando Áudio Digital Embarcado com Micropython

36 of 48

Programando o ESP32

Explorando Áudio Digital Embarcado com Micropython

37 of 48

Programando o ESP32

Implementação do LCD via I2c

Explorando Áudio Digital Embarcado com Micropython

38 of 48

Programando o ESP32

Implementação de um Bus de Eventos

Explorando Áudio Digital Embarcado com Micropython

39 of 48

Programando o ESP32

Implementação de um botão simples

Explorando Áudio Digital Embarcado com Micropython

40 of 48

Programando o ESP32

Event Bus + LCD + Inputs

Explorando Áudio Digital Embarcado com Micropython

41 of 48

Programando o ESP32

Memória Não Volátil

Explorando Áudio Digital Embarcado com Micropython

42 of 48

43 of 48

Referências

44 of 48

PERGUNTAS?

45 of 48

OBRIGADO!

46 of 48

Teoria do Controle

y(t) = x(t) * h(t)

O resultado de um sistema LTI é a convolução da entrada pela função de transferência

47 of 48

Teoria do Controle

Sinal de Impulso

Resposta ao Impulso

48 of 48

Filtro Biquad

Representação do Filtro Biquad

Fórmula do Filtro Biquad