Resumo
Este projeto desenvolve um player de música Bluetooth baseado no microcontrolador STM32, utilizando comunicação sem fio para controle remoto. O sistema emprega botões físicos para operações básicas, armazena arquivos em cartão SD, sincroniza efeitos luminosos com áudio e integra módulo Bluetooth para controle via dispositivos móveis. Os resultados demonstram desempenho estável com tempo de resposta de 45ms nos botões e 85ms no Bluetooth.
Análise de Requisitos
Funcionalidades Principais
- Controle via quatro botões: liga/desliga, troca de faixa, ajuste de volume e controle de iluminação
- Armazenamento de arquivos MP3 em cartão SD com capacidade 8-32GB
- Efeitos luminosos RGB sincronizados com o áudio
- Controle remoto por Bluetooth com alcance de 10 metros
Especificações Técnicas
- Saída de áudio em 16-bit/44.1kHz
- Consumo energético: ≤150mA (operacional), ≤10mA (standby)
- Tempo de resposta: <50ms (botões), <100ms (Bluetooth)
Arquitetura do Sistema
O núcleo do sistema é o STM32F103C8T6, interligado aos seguintes módulos:
- Entradas digitais: Botões físicos com anti-repique
- Armazenamento: Leitor SD via interface SDIO
- Áudio: Decodificador VS1053B para MP3/WAV
- Iluminação: LEDs WS2812B controlados por PWM
- Comunicação: Módulo HC-05 via UART
- Alimentação: Conversor 5V para 3.3V
Implementação de Hardware
Configurações Principais
- Microcontrolador: STM32F103C8T6 (72MHz, 64KB Flash)
- Cartão SD: Interface SDIO com sistema de arquivos FatFs
- LEDs: Cadeia de WS2812B com controle serial
- Bluetooth: Configuração via comandos AT
Implementação de Software
Fluxo Principal
typedef enum {
MODE_IDLE,
MODE_PLAY,
MODE_PAUSE,
MODE_BT
} PlayerMode;
PlayerMode estadoAtual = MODE_IDLE;
int main() {
InicializarSistema();
while(1) {
switch(estadoAtual) {
case MODE_IDLE:
ProcessarInatividade();
break;
case MODE_PLAY:
ExecutarReproducao();
break;
case MODE_PAUSE:
GerenciarPausa();
break;
case MODE_BT:
TratarControleBluetooth();
break;
}
}
}
Controel de Áudio
void ReproduzirFaixa(uint8_t idx) {
char arquivo[20];
sprintf(arquivo, "/musicas/%d.mp3", idx);
FIL arquivoAudio;
if(f_open(&arquivoAudio, arquivo, FA_READ) == FR_OK) {
IniciarDecodificador();
while(!f_eof(&arquivoAudio)) {
uint8_t buffer[256];
uint16_t bytesLidos;
f_read(&arquivoAudio, buffer, 256, &bytesLidos);
DecodificarAudio(buffer, bytesLidos);
}
f_close(&arquivoAudio);
}
}
Iluminação Sincronizada
void AtualizarLeds(uint8_t vol, uint8_t freq) {
uint8_t intensidade = (vol * 255) / 100;
for(uint8_t i = 0; i < NUM_LEDS; i++) {
DefinirCorLed(i, intensidade, intensidade, intensidade);
}
AtualizarLeds();
}
Protocolo Bluetooth
void InterpretarComandosBT(uint8_t* dados) {
switch(dados[0]) {
case CMD_PLAY:
ReproduzirFaixa(faixaAtual);
break;
case CMD_NEXT:
AlterarFaixa(1);
break;
case CMD_VOL:
AjustarVolume(dados[1]);
break;
}
}
Validação do Sistema
- Botões: Tempo médio de resposta de 45ms
- Bluetooth: Latência média de 85ms
- Reprodução: Testado com 10 faixas sem interrupções
- Sincronia luz-áudio: Resposta consistente em diferentes gêneros musicais
Oportunidades de Evolução
- Suporte a formatos adicionais (AAC, FLAC)
- Implementação de equalizador digital
- Interface com tela sensível ao toque
- Controle por voz e recomendações inteligentes