Hardware
O módulo possui 16 pinos:
- Três pinos para a alimentação: em de Vcc (3,2 a 5,0 V) e dois de ground (GND).
- Dois pinos para comunicação serial assíncrona: Rx e Tx. A comunicação é a 9600bps (formato 8N1) e os sinais estão em nível lógico. Por motivos que não estão claros para mim, deve ser colocado um resistor de 1K em série na ligação do pino Rx.
- Dois pinos para ligar diretamente um alto-falante: SPK+ e SPK-. Usando estes pinos o som será mono e com potência máxima de 3W.
- Dois pinos para ligar um fone de ouvido ou um amplificador: DAC_R e DAC_L. Estes sinais são em relação ao GND e fornecem som em estéreo.
- Dois pinos para ligar um pendrive USB: USB- e USB+
- Um pino para indicar que uma música está sendo tocada: BUSY
- Dois pinos para ligar botões de forma digital: I/O1 e I/O2.
- Dois pinos para ligar botões de forma digital ou analógica: ADKEY1 e ADKEY2
Temos portando duas formas de pegar o áudio de saída:
- Ligar um alto-falante diretamente aos pinos SPK+ e SPK- para obter um som amplificado e mono
- Ligar um fone de ouvido ou um amplificador aos pinos DAC_R, DAC_L e GND para obter som estéreo.
O módulo pode ser usado de forma autônoma (sem um microcontrolador externo), sendo controlado por botões. Existem duas formas de fazer isto:
- Ligar quatro botões entre os pinos I/O1, I/O2, ADKEY1 e ADKEY2 e GND. Esta montagem fornece seis funções: próxima música/diminui volume, música anterior/aumenta volume, primeiro "segmento" (primeiro arquivo) e quinto segmento. No caso de botões com duas funções, a primeira é com um aperto curto e a segunda com um aperto longo.
- Ligar 20 teclas entre os pinos ADKEY1 e ADKEY2 e GND. Cada tecla deve ter em série um resistor de um certo valor, conforme a figura abaixo.
Mesmo na forma autônoma os arquivos e diretórios devem ter os nomes inciados por números. Para confundir, ao navegar pelos botões os nomes são ignorados e é seguida a ordem em que os diretórios e arquivos foram criados. Além disso, o módulo acorda sempre com o volume no máximo.
Comunicação com um Microcontrolador
A comunicação usa os pinos Rx e Tx. Cada comando deve ser enviado em um pacote com 10 bytes:
- byte inicial: 0x7E
- versão: 0xFF
- tamanho: 0x06
- comando: ver no documento
- feedback: 0 (sem), 1 (com)
- byte mais significativo do parâmetro (ver no documento)
- byte menos significativo do parâmetro (ver no documento)
- byte mais significativo do checksum
- byte menos significativo do checksum
- byte final: 0xEF
O checksum é o negativo da soma (em 16 bits) dos bytes da versão até o parâmetro (inclusive).
O datasheet lista 26 comandos "de controle" e 12 comandos "de consulta" (descartando os reservados). As respostas utilizam o mesmo formato de pacote que os comandos.
Os comandos que mais nos interessam são os de tocar um arquivo. Os arquivos podem estar em formato MP3 ou WAV e existem quatro formas tocar um arquivo específico:
- Usar arquivos com nomes de 0001.mp3 (ou .wav) a 3000.mp3 no diretório raiz do cartão SD (ou pendrive). Isto é feito com o comando 0x03, com o número da faixa (1 a 3000) no parâmetro. Obs: o diretório raiz costuma ter uma quantidade fixa de entradas de diretório, normalmente menor que 3000.
- Usar arquivos com nomes de 0001.mp3 (ou .wav) a 3000.mp3 no diretório \mp3. Isto é feito com o comando 0x12, com o número da faixa (1 a 3000) no parâmetro.
- Usar arquivos com nomes de 001.mp3 (ou .wav) a 255.mp3 nos diretórios \01 a \99. Isto é feito com o comando 0x0F com o número do diretório no byte mais significativo e o número do arquivo no byte menos significativo do parâmetro.
- Usar arquivos com nomes de 0001.mp3 (ou .wav) a 1999.mp3 nos diretórios \01 a \15. Isto é feito com o comando 0x14 com o número do diretório nos 4 bits mais significativos do parâmetro e o número do arquivo nos 12 bits menos significativos.
De um modo geral, eu considero a segunda forma a mais prática. A terceira e quarta formas podem ser interessante se você tiver um número grande de arquivos e/ou quiser organizá-los em diretórios.
Os demais comandos permitem interromper a execução, mudar alguns parâmetros e consultar algumas informações. Um recurso exótico é permitir interromper uma música e tocar um outro arquivo, com o uso sugerido de inserir anúncios.
Um exemplo (bem simples) de uso da comunicação serial está no meu projeto com o Franzininho. A biblioteca oficial está aqui.
Nenhum comentário:
Postar um comentário