Problemi con DFminiplayer

Ciao ragazzi, sono giorni su giorni che non ne vengo a capo. sto usando un DFminiplayer (per chi non sa cosa è, sarebbe un modulino contenente una schedina in cui puoi mettere file audio che cosi arduino potrà comandarle e farle riprodure) ovvero il progetto è semplice: sto creando una statuina e ci ho messo 5 pulsanti, ogni pulsante semplicemente, quando viene premuto, dovrà far riprodurre ESATTAMENTE e PRECISAMENTE un file audio, ogni pulsante è assocciato ad un preciso file audio, cosa che quando lo premi, la prima volta lo farà senza problemi (cosa che con altri pulsanti no, ovvero alcuni si e altri no alla prima prova), ma poi quando lo ripremi, riproduce un altro file audio che sarebbe dedicato ad un altro pulsante. oggi ho testato un nuovo sketch con la sola aggiunta del fatto che ad ogni pulsante ho messo il fatto che dovra inviare il segnale SOLO quando esso sarà premuto per piu di 200ms per evitare fali segnali dovuti al pulsante. allego lo sketch

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

long t = 0;
long debounce_delay = 200;

int pulsante1 = 13;
int pulsante2 = 12;
int pulsante3 = 11;
int pulsante4 = 10;
int pulsante5 = 9;
int nfiles;

SoftwareSerial  gg(0, 1);  //nome player  ed i
DFRobotDFPlayerMini mp3;


void setup() {

  Serial.begin(9600);  //velocità di comunicazione
  gg.begin(9600);   //velocità di comunicazione
  nfiles = mp3.readFileCounts();  //  legge/conta quanti mp3 ci sono
  mp3.volume(20);     //  volume del audio

  mp3.play(5);   // riproduci il primo file
  if (!mp3.begin(gg)) {   //controllo se ci sono errori
    Serial.println("errore mp3");
    for (;;);
  }

  pinMode(pulsante1, INPUT);
  pinMode(pulsante2, INPUT);
  pinMode(pulsante3, INPUT);
  pinMode(pulsante4, INPUT);
  pinMode(pulsante5, INPUT);

  Serial.println(nfiles);

  delay(200);
}


void loop() {

  if (digitalRead(pulsante1) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(0);   // riproduci il primo file
    }
  }


  if (digitalRead(pulsante2) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(1);   // riproduci il primo file
    }
  }


  if (digitalRead(pulsante3) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(2);   // riproduci il primo file
    }
  }


    if (digitalRead(pulsante4) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(3);   // riproduci il primo file
    }
  }


    if (digitalRead(pulsante5) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(4);   // riproduci il primo file
    }
  }

}

Che scheda arduino stai usando?

arduino uno, all'inizio andava con lo sketch in cui non c'era il discorso dei 200ms per pulsante, ma anche se ritorno a quello o creo un semplice sketch dove dico solo, appena ti accendi avvia mp3 Nr°1 non fa nulla, ho provato sia con arduino Uno che Nano ma nulla, ho testato anche con resistenza da 10k, 1k, 2k, e 100ohm ma nulla di nulla, se è tanto, becco ogni tanto un piccolo bzzz venire dalla cassa
, i collegamnti ho usato il vcc per lui i 3,3v di arduino, il gnd va bhe gnd, il rx e tx e i 2 fili gia amplificati per la cassa

Stai usando per la soft serial i pin dedicati alla usb

Cambiali

messo i pin 5 e 6, non cambia nulla

Beh

I pin 0 e 1 non li puoi usare

Adesso si vede il secondo problema

camiati in 5 e 6, non è cambiato nulla, non si accende neanche il led del DF

Scordatelo ... hai idea dell'assorbimento di quei moduli?

Guglielmo

fin'ora andava sempre e lggo che si può collegarlo benissimo ad arduino, comunque testato anche da alimentazione esterna, non cambia nulla

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

long t = 0;
long debounce_delay = 200;

int pulsante1 = 13;
int pulsante2 = 12;
int pulsante3 = 11;
int pulsante4 = 10;
int pulsante5 = 9;
int nfiles;

SoftwareSerial  gg(6, 5);  //nome player  ed i
DFRobotDFPlayerMini mp3;


void setup() {

  Serial.begin(9600);  //velocità di comunicazione
  gg.begin(9600);   //velocità di comunicazione
  nfiles = mp3.readFileCounts();  //  legge/conta quanti mp3 ci sono
  mp3.volume(20);     //  volume del audio

  mp3.play(5);   // riproduci il primo file
  if (!mp3.begin(gg)) {   //controllo se ci sono errori
    Serial.println("errore mp3");
    for (;;);
  }

  pinMode(pulsante1, INPUT);
  pinMode(pulsante2, INPUT);
  pinMode(pulsante3, INPUT);
  pinMode(pulsante4, INPUT);
  pinMode(pulsante5, INPUT);

  Serial.println(nfiles);

  delay(200);
}


void loop() {

  if (digitalRead(pulsante1) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(0);   // riproduci il primo file
    }
  }


  if (digitalRead(pulsante2) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(1);   // riproduci il primo file
    }
  }


  if (digitalRead(pulsante3) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(2);   // riproduci il primo file
    }
  }


    if (digitalRead(pulsante4) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(3);   // riproduci il primo file
    }
  }


    if (digitalRead(pulsante5) == HIGH) {

    if ( (millis() - t) > debounce_delay) {
      t = millis();
      mp3.play(4);   // riproduci il primo file
    }
  }

}

Adesso starei usando questo sketch che sarebbe poi quello che dovrei usare per il progetto, con uqesto sketch all'inizio si sente un continuo bzzz per 4 o 5 volte poi silenzio, scheda arduino alimentata non vedo errori, modulo DF sempre spento (sempre alimentato esternamente)

L'alimentazione esterna è obbligatoria ... hai idea che c'è attaccato un altoparlante da 3W ... quell'affare, al massimo del volume, arriva ad assorbire anche 1A !

... di idiozie è piena la rete!

dai retta, fai una piccola applicazione di prova in cui lo alimenti, lo colleghi, e provi semplicemente a dirgli di riprodurre un brano.

SOLO DOPO che ti fuziona, prendi la stessa applicazione e cominci ad aggiungerci prima la lettura dei pulsati con il debounce (e fai scrivere su porta seriale il pulsante premuto, così vedi che funziona).

Una volta che tutto è a posto aggiungi la parte che, identificato il pulsate fa partire il brano voluto.

Ma ti sei studiato il WiKi sul sito DFRobot?

Guglielmo

1 Like

ripeto, si, l'ho letto e c'è scritto che consuma 20mA, ma comunque ho capito, l'ho sto alimentando da esterno. il problema persiste.

Ma se aggiorni continuamente t quanto dovrebbe finire la pausa?

200ms, comunque sto provando anche senza questo impkemento del debounce e non cambia nulla il semplice sketch dove gli dico nel void loop *.play(); non funziona, continua a darmi l'errore di inserire la scheda sd cosa che c'è gia, provato anche a formattarla, a cambiare il nome svariate volt dei file audio ma nulla

In stand-by ... sai cosa vuol dire? SENZA fare nulla ... appena comincia a riprodurre l'assorbimento sale e di parecchio.

Comuqne, come ti ho detto, comincia a vedere una cosa per volta e POI metti tutto assieme ... perché così non capisci dove è il problema!

Guglielmo

P.S.: Con quei moduli (versione flash e non SD) ci ho fatto un prodotto che è stato pubblicato si Elettronica In e ... t'assicuro che quando riproduceva i files mp3, se il volume era poco poco alto, NON ce la faceva ad alimentarlo neanche la USB che da 500 mA!

ho capito, lo so cosa vuol dire in stand by, e ripeto, lo sto alimentando esternamente e non vedo piu di 100mA ma comunque passando oltre questo punto, tutto il resto che ho provato non sta migliorando il funzionamento, continua a non fare nulla

Ma almeno si accende? ... e se usi un esempio di DFRobot funziona?

Guglielmo

a basso volume :smiling_imp:

Comunque, il pin 3.3V di Arduino UNO, da al massimo qualche decina di mA ...

Guglielmo

in tutto questo tempo non si è mai accesa

I have not yet fully studied your code but after building several quite complex projects using this module I'm confident the issue is not related to current consumption of your (presumably small, say <= 3W) speaker.

Take a look at a couple of the demo sketches I wrote recently to see if they help. Not sure if there will be a language difficulty, but I suggest you study the whole thread for context before trying the code.

Possible translation of above:

Non ho ancora studiato a fondo il tuo codice, ma dopo aver realizzato diversi progetti piuttosto complessi utilizzando questo modulo, sono sicuro che il problema non sia correlato al consumo attuale del tuo altoparlante (presumibilmente piccolo, diciamo <= 3W).

Dai un'occhiata ad un paio di schizzi dimostrativi che ho scritto di recente per vedere se sono d'aiuto. Non sono sicuro se ci saranno difficoltà linguistiche, ma ti suggerisco di studiare l'intero thread per contestualizzarlo prima di provare il codice.

Terry, UK