Índice:
- Suprimentos
- Etapa 1: Layout da placa de ensaio
- Etapa 2: Fiação do cartão SD
- Etapa 3: as bibliotecas de software
- Etapa 4: Plote os dados de MP3 no monitor serial
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Devido ao aumento da prevalência de microcontroladores rápidos como o ESP32 e a série ARM M, a decodificação de MP3 não precisa mais ser feita por hardware especializado. A decodificação agora pode ser feita no software.
Há uma ótima biblioteca disponível na Earlephilhower que mostra como decodificar uma ampla variedade de arquivos de áudio e reproduzi-los em microcontroladores ESP. Inspirado por isso, adaptei parte do código para criar um método modular de leitura de arquivos MP3 em microcontroladores.
Minha esperança é que este método seja genérico o suficiente para uso em qualquer microcontrolador rápido o suficiente (não apenas uma placa ESP32), mas até agora eu testei apenas em um ESP32.
Suprimentos
Como eu disse antes, espero que esse método funcione para qualquer microcontrolador rápido, mas pode não funcionar. Portanto, para replicar meus resultados, você precisará de:
- Uma placa ESP32
- SD breakout board
- cartão SD
- Jumper Wires
- tábua de pão
- Cabo micro USB (para fazer upload do esboço)
- IDE Arduino
Etapa 1: Layout da placa de ensaio
Coloque o ESP32 e o cartão SD na placa de ensaio.
Etapa 2: Fiação do cartão SD
As conexões do cartão SD (breakout ESP32 SD) são as seguintes:
GND GND
3v3 VDD
23 DI (MOSI)
19 DO (MISO)
18 SCLK
5 CS
Observe que essas conexões serão diferentes se você estiver usando um microcontrolador diferente.
Etapa 3: as bibliotecas de software
se você não tiver o ESP-IDF instalado, acesse o site e instale-o.
Em seguida, instale a biblioteca do microdecoder. Você pode fazer isso baixando o repositório e colocando-o na pasta Bibliotecas do Arduino. A biblioteca do microdecodificador atualmente oferece suporte a arquivos.wav e.mp3.
Independentemente do formato, existem alguns métodos comuns associados a cada classe e são abordados no código a seguir. Isso inclui obter alguns metadados dos arquivos e imprimi-los no monitor serial.
#include "SD.h" // input
#include "mp3.h" // decodificador #include "pcm.h" // contêiner de dados de áudio brutos mp3 MP3; void setup () {Serial.begin (115200); // Configurar SD.begin (); // Arquivo de configuração de conexão SD = SD.open ("/ cc.mp3"); // Abra um arquivo MP3 MP3.begin (arquivo); // diga à classe MP3 qual arquivo processar MP3.getMetadata (); // obtém os metadados Serial.print ("Bits por Amostra:"); Serial.println (MP3.bitsPerSample); // imprime bits por amostra Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // e taxa de amostragem} void loop () {}
Etapa 4: Plote os dados de MP3 no monitor serial
Com o código abaixo, você pode plotar alguns dados de áudio no monitor serial. Isso será muito lento, mas mostrará como usar a biblioteca de MP3. Ele também reduz a resolução dos dados por um fator de 16, de modo que, quando os dados são plotados, eles se parecem com uma forma de onda de áudio. Este código é retirado do exemplo SPI_MP3_Serial.ino que vem com a biblioteca do microdecoder. Claro, indo em frente, você vai querer tocar esses dados de áudio de alguma forma, mas esse é o tópico de um instrutível diferente.
#include "SD.h" // input
#include "mp3.h" // decodificador mp3 MP3; // Áudio MP3 Class pcm; // dados de áudio brutos void setup () {Serial.begin (115200); // Configuração de SD.begin (); // Arquivo de configuração de conexão SD = SD.open ("/ cc.mp3"); // Abra um arquivo MP3 MP3.begin (arquivo); // Passe o arquivo para a classe MP3} void loop () {audio = MP3.decode (); // Decodifique os dados de áudio na classe pcm / * há 32 amostras em audio.interleaved (16 à esquerda e 16 à direita) * mas vamos representar graficamente o primeiro ponto de dados em cada canal. * Isso efetivamente reduz a resolução dos dados por um fator de 16 (para * visualizar apenas a forma de onda) * / Serial.print (audio.interleaved [0]); // canal esquerdo Serial.print (""); Serial.println (audio.interleaved [1]); // canal certo}
Recomendado:
Programando um Arduino usando outro Arduino para exibir um texto de rolagem sem uma biblioteca: 5 etapas
Programando um Arduino usando outro Arduino para exibir um texto em rolagem sem uma biblioteca: Sony Spresense ou Arduino Uno não são tão caros e não requerem muita energia. No entanto, se o seu projeto tem limitação de energia, espaço ou até mesmo orçamento, você pode querer considerar o uso do Arduino Pro Mini. Ao contrário do Arduino Pro Micro, Arduino Pro Mi
Criando uma biblioteca Arduino para o YouTube Sight: 7 etapas
Fazendo uma biblioteca do Arduino para o YouTube Sight: Olá a todos, recentemente desenvolvi um serviço chamado YouTube Sight que pode extrair dados de assinantes da API do YouTube Analytics e fornecer contagens de assinantes mais precisas desde que o YouTube começou a agregar os resultados. Com ele, construí um exemplo
Plotagem de intensidade de luz usando Arduino e a biblioteca mestre de Arduino do Python: 5 etapas
Plotagem de intensidade de luz usando Arduino e a biblioteca mestre de Arduino do Python: Arduino sendo uma ferramenta econômica, mas altamente eficiente e funcional, programá-lo em Embedded C torna o processo de criação de projetos tedioso! O módulo Arduino_Master do Python simplifica isso e nos permite realizar cálculos, remover valores de lixo
Conversor de texto em fala Arduino usando LM386 - Projeto Falando do Arduino - Biblioteca Talkie Arduino: 5 etapas
Conversor de texto em fala Arduino usando LM386 | Projeto Falando do Arduino | Biblioteca Talkie Arduino: Olá pessoal, em muitos dos projetos exigimos que o arduino fale algo como um relógio falante ou contando alguns dados, então neste instructables iremos converter texto em fala usando o Arduino
Biblioteca para BMP280 e BME280: 7 etapas
Biblioteca para BMP280 e BME280: IntroduçãoI não me propus a escrever esta biblioteca. Isso " aconteceu " como efeito colateral de um projeto que iniciei que usa um BMP280. Esse projeto ainda não terminou, mas acho que a biblioteca está pronta para ser compartilhada com outras pessoas. Posteriormente, tive um ne