Veja na figura abaixo a aparência de um modulo DSPLAYER,já vem equipado com entrada USB, comunicação rs_232 para fazer a interface e saída de som analógica(alto falantes) + saídas para fone de ouvido. Neste site tem um exemplo de como usa-lo com arduino além de explorar melhor seus aspectos construtivos https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299.
Graças ao meu parceiro Renato que tem me enviado vários materiais para postar (pois como já disse anteriormente em outros "post", estou tendo dificuldade para desenvolver novos projetos), este projeto conta com os recursos principais para fazer funcionar o modulo usando um microcontrolador PIC.Agradeço muito nosso colaborador por compartilhar conosco sua experiencia com este módulo.Ele ainda me deixou uma dica "Se alguém se interessar posso produzir o circuito impresso, só entrar em contato: -> Renato : lobosoft@oi.com.br".
A aparência do protótipo pronto ficou assim:
O código fonte:
Programa principal: Código para compilação no CCS.
//////////////////////////////////////////////////////////////////////////////// // Projeto: Aparelho de som com modulo DFPlayer Mini // // Nome: Renato Lôbo Rodrigues // // Data: 12/07/17 // // Email: lobosoft@oi.com.br // //////////////////////////////////////////////////////////////////////////////// #include "config_pic675.h" void main() { int1 st1=false, st2 = false, st3=false, st4 = false, play = true, di = false; int8 equ = 1,disp = 1; tris_bot1 = 1; tris_bot2 = 1; tris_bot3 = 1; tris_bot4 = 1; tris_bot5 = 1; GPPU = 0; delay_ms(2000); Uart_SendCMD(0x06 , 0 , 0x16 ) ; //volume inicial delay_ms(200); sorteia(); delay_ms(200); Tocar(); delay_ms(200); Proxima_trilha(); delay_ms(500); while(true) { if( bot1) st1 =false; //Equalizador delay_ms(50); if(!bot1 && !st1) { st1 = true; equ++; if(equ>5)equ=1; if(equ==1)equaliza(1); if(equ==2)equaliza(2); if(equ==3)equaliza(3); if(equ==4)equaliza(4); if(equ==5)equaliza(5); delay_ms(1000); } if( bot2) st2 =false; //troca o dispositivo: Memoria/Pendrive delay_ms(50); if(!bot2 && !st2) { st2 = false; di=~di; if(di) disp=2; else disp=1; dispositivo(disp); delay_ms(500); } if(!bot3) st3 =false; //toca tudo altomaticamente delay_ms(50); if( bot3 && !st3 && play) { st3 = true; Proxima_trilha(); delay_ms(200); } if( bot4) st4 =false; //tocar/pausa delay_ms(50); if(!bot4 && !st4) { st4 = true; play = ~play; if (play)Tocar();else Pausa(); delay_ms(500); } } } Configuração do PIC 12F675 //////////////////////////////////////////////////////////////////////////////// // Projeto: configuração de cabeçalho de projeto com pic12F675 // // Nome: Renato Lôbo Rodrigues // // Data: 12/07/17 // // Email: lobosoft@oi.com.br // //////////////////////////////////////////////////////////////////////////////// #include "12F675.h" #use delay(clock=4Mhz) #include "DFPlayer.h" //======================================================================= //Configurando fusiveis //======================================================================= #fuses NOWDT #fuses PUT #fuses NOBROWNOUT #fuses NOMCLR #fuses INTRC_IO #fuses PROTECT //======================================================================= //Configurando I/O de direção dos pinos //======================================================================= #bit bot1 = 0x05.0 #bit bot2 = 0x05.2 #bit bot3 = 0x05.3 #bit bot4 = 0x05.4 #bit bot5 = 0x05.5 #bit tris_bot1 = 0x85.0 #bit tris_bot2 = 0x85.2 #bit tris_bot3 = 0x85.3 #bit tris_bot4 = 0x85.4 #bit tris_bot5 = 0x85.5 #bit GPPU = 0x81.7 Biblioteca do DSPlayer Mini //////////////////////////////////////////////////////////////////////////////// // Projeto: Biblioteca para acessar o DFPlayer Mini // // Nome: Renato Lôbo Rodrigues // // Data: 12/07/17 // // Email: lobosoft@oi.com.br // //////////////////////////////////////////////////////////////////////////////// #use rs232(baud=9600,xmit=PIN_A1,rcv=PIN_A2, ERRORS) static unsigned INT8 Send_buf[10] = {0} ; void SendCmd(unsigned INT8 leng) { INT8 i = 0 ; putc(0x7E); for(i=0; i<leng; i++)//dados { putc(Send_buf[i]); } putc(0xEF); } void DoSum( unsigned INT8 *Str, unsigned INT8 len) { unsigned INT16 xorsum = 0; unsigned INT8 i; for(i=0; i<len; i++) { xorsum = xorsum + Str[i]; } xorsum = 0 -xorsum; *(Str+i) = (unsigned INT8)(xorsum >>8); *(Str+i+1) = (unsigned INT8)(xorsum & 0x00FF); } void Uart_SendCMD(unsigned INT8 CMD ,unsigned INT8 feedback , unsigned INT16 dat) { Send_buf[0] = 0xFF; //bytes reservados Send_buf[1] = 0x06; //comprimento Send_buf[2] = CMD; //instruções de controle Send_buf[3] = feedback; //A necessidade de feedback Send_buf[5] = (unsigned INT8)(dat); //datal Send_buf[4] = (unsigned INT8)(dat >> 8); //datah DoSum(&Send_buf[0],6); //Verifique SendCmd(8); //Esta transmissão da trama de dados } void Arquivo_musica(int8 pasta,int8 numero) { int16 pasta_numero; pasta_numero = (pasta * 256) | numero ; Uart_SendCMD(15 , 0, pasta_numero); } void Proxima_trilha() { Uart_SendCMD(1 , 0, 0); } void Trilha_anterior() { Uart_SendCMD(2 , 0, 0); } void Diminuir_volume() { Uart_SendCMD(5 , 0, 0); } void Aumentar_volume() { Uart_SendCMD(4 , 0, 0); } void Volume(int8 vol) { Uart_SendCMD(6 , 0, vol); } void Equaliza(int8 equa) { Uart_SendCMD(7 , 0, equa); } Void Pausa() { Uart_SendCMD(14 , 0, 0); } Void Tocar() { Uart_SendCMD(13 , 0, 0); } void dispositivo(int8 disp) { Uart_SendCMD(9 , 0, disp); } void sorteia() { Uart_SendCMD(24 , 0, 3); } void sequencia() { Uart_SendCMD(24 , 0, 1); }
Até a próxima pessoal.
Nenhum comentário :
Postar um comentário
olá,digite aqui seu comentário!