Forum: Mikrocontroller und Digitale Elektronik Arduino Dfplayer Probleme beim einschalten


von Tobias K. (Gast)


Lesenswert?

Hallo zusammen,

ich hoffe Ihr könnt mir helfen. Ich habe für meinen Sohn einen Dfplayer 
gekauft und wollte diesen über einen Arduino steuern. Es soll 
alsSound/Effekt Wiedergabe an seinem Elektroauto eingebaut werden.

Nun habe ich diese Sound alle auf der Sdkarte und den Code geschrieben.
Hier kommt das Problem:

Starte ich den Arduino bzw. den DFplayer lädt dieser einmal hoch und 
gibt mir in einer wilden Reihenfolge die Sounds wieder. Erst nach 
einigen Sek. wenn die Sounds abgespielt sind und nichts mehr kommt, kann 
ich über meine Buttons die gewünschten Sound abspielen.

Nach diesen paar sek. funktioniert alles wunderbar aber ich würde gerne 
die Sounds beim einschalten bzw. Spannungsversorgung abgestellt 
bekommen.
Vielleicht hat ja jemand Erfahrung damit gemacht.
Der Code ist sehr Simpel und wurde von der Original Homepage benutzt, 
genauso wie die Library.

von Tobias K. (Gast)


Lesenswert?

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

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

const int button1 = 2;
int buttonState1 = 0;
const int button2 = 3;
int buttonState2 = 0;
const int button3 = 4;
int buttonState3 = 0;


void printDetail(uint8_t type, int value);

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(9600);
  pinMode(button1,INPUT);
  pinMode(button2,INPUT);
  pinMode(button3,INPUT);



  myDFPlayer.setTimeOut(500); //Set serial communictaion time out 500ms


  myDFPlayer.volume(15);  //Set volume value (0~30).



  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);

  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);



}

void loop()
{

  buttonState1 = digitalRead(button1);
    if (buttonState1 == HIGH)
    {
    myDFPlayer.play(1);
    }
    else
    {

    }

    buttonState2 = digitalRead(button2);
    if (buttonState2 == HIGH)
    {
    myDFPlayer.play(2);
    }
    else
    {

    }

    buttonState3 = digitalRead(button3);
    if (buttonState3 == HIGH)
    {
    myDFPlayer.play(3);
    }
    else
    {

    }


}

von Brain 2.0 (Gast)


Lesenswert?

Ich kenne ein ähnliches Problem, wenn die Betriebsspannung des DFPlayers 
nicht sauber 5 Volt im getrennt von der des Arduinos ist.
Hast du Widerstände in RX und TX
Leitungen ?

von Brain 2.0 (Gast)


Lesenswert?

Hast du Pulldown-Widerstände an deinen Eingangspins ?

von Tobias K. (Gast)


Lesenswert?

habe wie auf der Seite beschrieben 1 K ohm widerstand genommen zwischen 
RX und TX.

Pulldown widerstände habe ich bei allen 3 Buttons.
diese Dimension weiss ich aber gerade nicht genau.
was würdet ihr empfehlen? ich meine ich habe nur unter 1K ohm.

Habe nach dem Wirrwarr ja keine Probleme, daher bin ich nicht auf die 
Widerstände gekommen.

von Brain 2.0 (Gast)


Lesenswert?

Und die Spannung des DFPlayer ist ok ?
Macht er das auch, wenn die Loop leer ist, also keine Mp3 gestartet 
werden ?

von Brain 2.0 (Gast)


Lesenswert?

Ach, die Werte der Widerstände sind hier unkritisch.

von Tobias K. (Gast)


Lesenswert?

Die Spannung ist ok, habe diese über einen Regler mal hoch und 
runtergenommen um zu testen.

Ne das mit der loop habe ich noch nicht getestet.
versuche ich mal

von Tobias K. (Gast)


Lesenswert?

Habe heute nochmal alles aufgebaut um eure Vorschläge zu testen und was 
musste ich feststellen, der Fehler ist weg hahahaha

habe am Sketch nichts verändert. Ich kann es mir auch nicht erklären

von Tobias K. (Gast)


Lesenswert?

jetzt ist nur noch die Kleinigkeit, dass es beim Laden einmal knackt an 
dem Lautsprecher.
Habt ihr dafür eine Lösung?

von Tobias K. (Gast)


Lesenswert?

habe das war rausgefunden. Immer wenn im Serial Monitor die Verbindung 
zu Software Serial steht, dann kommt kommt dieses kurze kratzen im 
Lautsprecher.

  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to 
communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));



bei dieser ausgabe

von Brain 2.0 (Gast)


Lesenswert?

Ich habe keine direkte Lösung dafür, aber ein Workaround.
Ich verwende in meinem Projekt einen externen Verstärker, den ich 
zusätzlich ein bzw. ausschalte.
Da hört man keinen Knacks.

von Tobias K. (Gast)


Lesenswert?

Worüber schaltest du den externen Verstärker?
Relais oder einen Schalter?

von Brain 2.0 (Gast)


Lesenswert?

Den schalte ich mit einem Mosfet IRF5305 (o.ä. IRFU9024N), der wiederum 
durch einen BC548 angesteuert wird.

von Trace84 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

habe ein ähnliches Problem wie vom Anfangsthread. Bei mir ist es eine 
Schaltung zur Beleuchtung und für Soundeffekte für ein Sci-Fi-Modell.

Den Sketch für die Lichteffekte habe ich online gefunden. Dieser 
funktioniert auch ohne Probleme.

Habe dann den Sketch für die Funktionen des DFPlayers erweitetert. Und 
hier habe ich das Problem, dass beim Einschalten der Spannung, der 
ersten Teil des Skechtes abgespielt wird (Disruptor-Effekt). Sowohl 
Lichteffekte als auch der entsprechende Sound

Danach funktioniert alles ganz normal. Es passiert nur dann etwas, wenn 
ich den Knopf drücke bzw. halte.

Habe Widerstände in TX RX. Spannungen sind in Ordnung, keine Lötfehler 
auf den Boards zu sehen.

Nehme ich aus dem Loop die Soundfunktion wieder raus, bleibt das Problem 
gleich, nur eben ohne Sound.

Es ist ein Arduino-Nano-Clone mit CH340 Chip und DFPlayer mini.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.