Pessoal, boa tarde. 

Adquiri este modulo recentemente, e estou tendo alguma duvidas para comanda-lo. Quero comanda lo pela serial. A unica documentação que achei na internet é um codigo exemplo  conforme descrito abaixo:

Minha dúvida por exemplo, qual comando necessito dar para aumentar e abaixar o volume do audio, dar um stop, selecionar qual musica toca e etc... Basicamente são esses comandos que preciso, mas quero entender também qual é a logica para a execução dos outros comando.  Além do codigo, estou postando o datasheet do mesmo. Obrigado desde já.

Codigo.docx

Exibições: 725

Anexos

As respostas para este tópico estão encerradas.

Respostas a este tópico

Obrigado.

Bom dia Ney, 

Acho que esse Github poderá ser util:

https://github.com/dasaki/XY-V17B_arduino

Obrigado José, mas estou utilizando o Esp32 e no caso a biblioteca softwareserial não poderia ser utilizada por ser incompativel. Estou utilizando a Hardwareserial. E o codigo informado é o mesmo que estou utilizando, somente alterando esses detalhes e nele não informa como abaixa e aumenta o volume. Valeu

Engano, o ESP32 pode fazer sim Software Serial, portanto a biblioteca indicada pelo Murta funciona perfeitamente com ESP32.

https://www.arduino.cc/reference/en/libraries/espsoftwareserial/

Referência da Casa: https://labdegaragem.com/forum/topics/softwareserial-com-esp32

Desejo-lhe uma Boa Codificação!

Ok, não tinha utilizado desta forma, mas a questão não é de que forma usar a serial. Estou conseguindo conversar com o modulo. ele le e informa qtas faixas tem no cartão, executa o play. Não estou conseguindo fazer o volume funcionar. Obrigado

Como o RV disse:

"Por exemplo, para baixar o volume vc tem que enviar o comando  0xAA 0x14 0x00 0xBF e para aumentar o volume tem que enviar o comando 0xAA 0x14 0x00 0xBE."

Portanto o código deve declarar essas duas sequencias de bytes e enviá-las ao módulo via porta serial.

Já tentou colocar no seu código:

Serial1.write(volPlus, sizeof(volPlus));       // aumenta o volume um passo

Serial1.write(volMinus, sizeof(volMinus));  // reduz o volume um passo

Certo, vou tentar. mas ele tem a faixa de volume de  0 a 30.  Se eu quiser colocar no volume 20, teria como já colocar esse valor direto ou outro qualquer? Obrigado

O código que vai colocar em um volume de 0 a 30 diretamente é:

void ajustaVolumeMP3(uint8_t novoVol) {

  static byte cmdVol[] = {0xAA, 0x13, 0x01, 0x00, 0x00}; // {0xAA, 0x13, 0x01, VOL, SM} VOL: 0 a 30, SM: "checkSum" do pacote

  if (novoVol > 30) novoVol = 30;    // vol max permitido 30
  cmdVol[3] = novoVol;  // coloca novo volume no pacote
  cmdVol[4] = ( cmdVol[0] + cmdVol[1] + cmdVol[2] + cmdVol[3] );  // calcula SM
  Serial1->write(cmdVol, sizeof(cmdVol)); // envia o comando via Serial1

}

Obrigado, mas a minha duvida é como sera essa linha no codigo. Tentei da forma que v falou, mas não acontece nada. Obrigado

Boa tarde, o meu codigo ´exatamente o do Gustavo. Só fiz algumas alterações pois estou utilizando o Esp32. A unica alteração foi retirar a Biblioteca SoftwareSerial e incluir a HardwareSerial. Obrigado

Boa noite Ney, 

No Datasheet que você enviou , veja os comandos de volume na pagina 6 

Para registrar aqui tembém, o que respondi anteriormente:

O código que vai colocar em um volume de 0 a 30 diretamente é:

void ajustaVolumeMP3(uint8_t novoVol) {

  static byte cmdVol[] = {0xAA, 0x13, 0x01, 0x00, 0x00}; // {0xAA, 0x13, 0x01, VOL, SM} VOL: 0 a 30, SM: "checkSum" do pacote

  if (novoVol > 30) novoVol = 30;    // vol max permitido 30
  cmdVol[3] = novoVol;  // coloca novo volume no pacote
  cmdVol[4] = ( cmdVol[0] + cmdVol[1] + cmdVol[2] + cmdVol[3] );  // calcula SM
  Serial1->write(cmdVol, sizeof(cmdVol)); // envia o comando via Serial1

}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço