Erster Aufbau - benötige Hilfe beim Problemeingrenzen

Hallo in die Runde,

Ich bin neu hier, daher eine kurze Vorstellung (ungeduldige einfach einen Absatz überspringen):

Als vor etwas mehr als ein Jahr meine Tochter geboren wurde, dachte ich als E-techniker und jemand der ab und an mit dem Arduino programmiert hat (Fachrichtung ist eher Analgelektronik), dass ich mir so eine Tonuino Box selbst programmieren würde. Dann bin ich aber auf die Community gestoßen und die Software und Funktionen sind schon weit besser als alles was ich vermutlich zu Stande gebracht hätte. Daher bleibt etwas mehr Zeit an der Akustik zu feilen, habe da ein paar Ideen alle übertragenen mp3’s quasi mit der inversen Impulsantwort des Lautsprechers zu füttern.

Nun zu meinem Problem:

DF Player (Makuna) : 1.0.6
JC Button : 2.1.2
MFRC532: 1.4.6

Was funktioniert:

  • Ich kann Karten beschreiben (eine Kindergartenkarte wurde erstellt)
  • Ich kann durch das Administrator Menü navigieren und höre alle Ansagen richtig

–> Ich schließe daraus, dass die Hardware eigentlich funktionieren müsste.

Was nicht funktioniert:

  • Sobald ich eine Karte einem Ordner (z.B. 01 mit der Datei 001.mp3) zuweisen möchte, dann bleibt der Tonuino stehen.

Hier die Konsolenausgabe:

TonUINO Version 2.1
created by Thorsten Voß and licensed under GNU/GPL.
Information and contribution at https://tonuino.de.
=== loadSettingsFromFlash()
Version: 2
Maximal Volume: 25
Minimal Volume: 5
Initial Volume: 15
EQ: 1
Locked: 0
Sleep Timer: 0
Inverted Volume Buttons: 1
Admin Menu locked: 0
Admin Menu Pin: 1111
=== setstandbyTimer()
0
Firmware Version: 0x92 = v2.0
=== playShortCut()
3
Shortcut not configured!
Card UID: 67 BC A6 5F
PICC type: MIFARE 1KB
Authenticating Classic using key A...
Reading data from block 4 ...
Data on Card :
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

555
555

Gleiches passiert, wenn ich über das Administrationsmenü gehe (also von Beginn an alle 3 Tasten drücke):

TonUINO Version 2.1
created by Thorsten Voß and licensed under GNU/GPL.
Information and contribution at https://tonuino.de.

=== loadSettingsFromFlash()
Version: 2
Maximal Volume: 25
Minimal Volume: 5
Initial Volume: 15
EQ: 1
Locked: 0
Sleep Timer: 0
Inverted Volume Buttons: 1
Admin Menu locked: 0
Admin Menu Pin: 1111
=== setstandbyTimer()
0
Firmware Version: 0x92 = v2.0
Reset -> EEPROM wird gelöscht
=== loadSettingsFromFlash()
=== resetSettings()
=== writeSettingsToFlash()
Version: 2
Maximal Volume: 25
Minimal Volume: 5
Initial Volume: 15
EQ: 1
Locked: 0
Sleep Timer: 0
Inverted Volume Buttons: 1
Admin Menu locked: 0
Admin Menu Pin: 1111
=== playShortCut()
3
Shortcut not configured!
=== disablestandby()
=== adminMenu()
=== voiceMenu() (12 Options)
1
578
578
=== 1 ===
Karte wird neu konfiguriert!=== setupCard()
575
575
=== voiceMenu() (99 Options)
556
556
1
300
300

Aus den Zeilen in denen ausschließlich Zahlen stehen, werde ich leider nicht schlau.

Schon mal vielen Dank für das Lesen!

Deine Buttons scheinen dauerhaft betätigt zu sein.
Hast du Taster (Schließer) verwendet? Sieht eher nach Öffner aus…

Das werde ich später Mal ausprobieren, gerade schläft die kleine noch auf mir.

Es werden die internen Pull Up Widerstände des arduino verwendet, sodass die Buttons den Pegel auf Low ziehen. Richtig?

Ja aber nur in dem Moment, wo sie betätigt werden.

Ich habe es gerade nochmals mit dem Multimeter überprüft.
High Pegel ist dann vorhanden (4,63V) wenn der Schalter NICHT gedrückt wird.
Beim Drücken geht der Pegel bei allen drei Schaltern zuverlässig auf 0V,

Bei dem Zweiten Log habe ich alle 3 Tasten absichtlich gedrückt um in die Einstellungen zu gelangen. Die Info habe ich jetzt auch in den Startbeitrag geschrieben.

Schade, das wäre ein schnell behebbarer Fehler gewesen.

Hast du die Möglichkeit einen anderen df Player zu testen…? Klingt so das entweder der Player oder die sd Karte ein Problem in der Verarbeitung von Daten hat. Würde der Player KOMPLETT defekt sein, so mutmaße ich mal, ginge er nicht an bzw. wäre nicht ansteuerbar und würde demzufolge schon vorab eine Fehlermeldung im seriellen Monitor anzeigen… Oder täusche ich mich da nun…?

Bitte nicht vorige Beiträge derart ändern. Macht es komplizierter zu lesen.
Ursprünglich hattest du die drei Tasten aber nicht gedrückt gehabt, oder hatte ich das gestern zu der späten Stunde überlesen?

Hallo Manu,
Um ins Service Menü zu kommen, müssen ja alle 3 Tasten gedrückt werden. Die habe ich auch schon gestern von Beginn an gedrückt, dies aber nicht extra hingeschrieben. Ich hoffe es ließt sich jetzt sogar besser, verstehe aber genau was du meinst!

Ich habe den Player übrigens 2 mal aufgebaut gehabt, das erste mal auf einem Testboard, dem ich aber nicht ganz was Wackelkontakte angeht vertraue und dann meine momentan gelötete Version. Beide haben die selben Probleme, allerdings auch die folgende Charge an DF Playern.

Mich wundert nur, das alle Sprachbefehle auf der SD Karte richtig eingelesen werden.
Ich habe es mit eigenen mp3 Dateien und mit den Sprachbefehlen (alle entsprechend benannt) in dem Ordner 01 probiert, kein Unterschied.

Ist das jetzt mit Kanonen auf Spatzen geschossen den Seriellen Bus zwischen DF Player und Arduino mitzuschneiden?

Das erklärt jetzt natürlich, dass du diese Ausgabe auf dem Monitor hattest. :smiley:
Wenn die Taster beim Starten gedrückt werden, wird der EEPROM geresettet. Ins Admin Menü kommt man, wenn man die drei Tasten drückt, das stimmt. Aber nachdem der Arduino gestartet ist. Dies funktioniert ja bei dir soweit inkl Sprachausgabe. Daher ist mit deinem Player alles Ok.

Was passiert denn, wenn du eine „leere“ RFID Karte auflegst? Eigentlich müsste ja dann eine Meldung kommen, dass die Karte noch nicht bekannt ist.

Nur der Vollständigkeit halber. Wie ist deine SD-Karte aufgebaut? „Advert“, „MP3“ und „01“ mit MP3 Dateien beginnend mit 001.mp3? Durchgängig nummeriert? Also ohne Lücke?

Wenn ich eine Leere Karte auflege, passiert das, was im ersten Log kommt. Es wird „oh eine Neue Karte“ abgespielt. Die Dateien sind auch nach bekanntem Schema drauf gewesen.

Ich habe den Fehler gefunden:
Der Busy Pin war bei beiden Aufbauten nicht richtig verbunden. Das führt natürlich zu einem undefinierten Zustand am Pin D4. Und so lange der Arduino wartet, kann nichts anderes passieren.

bool isPlaying() {
  return !digitalRead(busyPin);
}

void waitForTrackToFinish() {
  long currentTime = millis();
#define TIMEOUT 1000
  do {
    mp3.loop();
  } while (!isPlaying() && millis() < currentTime + TIMEOUT);
  delay(1000);
  do {
    mp3.loop();
  } while (isPlaying());
}

Dieser Fehler könnte man natürlich abfangen wenn man nicht so doof ist wie ich und falsch lötet oder vielleicht wie folgt:

  • Auf der Konsole ausgeben ob der DF Player busy ist
  • Beim Abspielen des Menüs überprüfen, ob der Player so lange busy ist, wie die mp3 Datei lang ist (die vorhandenen Sprachdateien sind ja bekannt), ansonsten eine Warnung ausgeben

Es ist wahrscheinlich absicht, dass man im Menü nicht wartet bis das Abgespielte zu Ende ist (sowas ist ja auch bei Jeder Telefonhotline mit Tasteneingabe ein Ärgernis).