Noch ein Gremlin: Play, vor- und zurrück gehen nicht (5 button box)

Hallo Zusammen,

nachdem ich meine eigene box zum laufgen gebracht habe, wollte ich meinem Freund unter die Arme greifen, der auch Probleme hatten. Wir hatten leider beide zum Start weg defekte MP3 player, die wir auch beide ausgetauscht haben. Jetzt ist aber bei box 2 folgendes Problem übrig:

Play / Pause, Vor und Zurrück (A3, A4) gehen nicht, obwohl die Tastendrücke vom vom Arduino registriert werden. Siehe Fehlerausgabe ab 18:12:05.031 (test war 3x zurrück, 3x vor, 2x start stopp).

18:12:00.209 -> 
18:12:00.209 ->  _____         _____ _____ _____ _____
18:12:00.209 -> |_   _|___ ___|  |  |     |   | |     |
18:12:00.209 ->   | | | . |   |  |  |-   -| | | |  |  |
18:12:00.209 ->   |_| |___|_|_|_____|_____|_|___|_____|
18:12:00.244 -> 
18:12:00.244 -> TonUINO Version 2.1
18:12:00.244 -> created by Thorsten Voß and licensed under GNU/GPL.
18:12:00.244 -> Information and contribution at https://tonuino.de.
18:12:00.244 -> 
18:12:00.244 -> === loadSettingsFromFlash()
18:12:00.244 -> Version: 2
18:12:00.244 -> Maximal Volume: 30
18:12:00.244 -> Minimal Volume: 5
18:12:00.244 -> Initial Volume: 20
18:12:00.244 -> EQ: 1
18:12:00.244 -> Locked: 0
18:12:00.244 -> Sleep Timer: 0
18:12:00.244 -> Inverted Volume Buttons: 1
18:12:00.244 -> Admin Menu locked: 0
18:12:00.244 -> Admin Menu Pin: 1111
18:12:00.244 -> === setstandbyTimer()
18:12:00.244 -> 0
18:12:02.393 -> Firmware Version: 0x92 = v2.0
18:12:02.393 -> === playShortCut()
18:12:02.393 -> 3
18:12:02.393 -> Shortcut not configured!
18:12:02.393 -> Card UID: 63 5B 9C 3E
18:12:02.393 -> PICC type: MIFARE 1KB
18:12:02.393 -> Authenticating Classic using key A...
18:12:02.393 -> Reading data from block 4 ...
18:12:02.393 -> Data on Card :
18:12:02.393 ->  13 37 B3 47 02 04 03 18 EF 00 00 00 00 00 00 00
18:12:02.427 -> 
18:12:02.427 -> 4
18:12:02.427 -> 4
18:12:02.427 -> == playFolder()
18:12:02.427 -> === disablestandby()
18:12:02.700 -> 30 Dateien in Ordner 4
18:12:02.700 -> Party Modus -> Ordner in zufälliger Reihenfolge wiedergeben
18:12:05.031 -> === playShortCut()
18:12:05.031 -> 1
18:12:05.031 -> Shortcut not configured!
18:12:05.955 -> === playShortCut()
18:12:05.955 -> 1
18:12:05.955 -> Shortcut not configured!
18:12:06.426 -> === playShortCut()
18:12:06.426 -> 1
18:12:06.426 -> Shortcut not configured!
18:12:08.316 -> === playShortCut()
18:12:08.316 -> 2
18:12:08.316 -> Shortcut not configured!
18:12:08.791 -> === playShortCut()
18:12:08.791 -> 2
18:12:08.791 -> Shortcut not configured!
18:12:09.194 -> === playShortCut()
18:12:09.194 -> 2
18:12:09.194 -> Shortcut not configured!
18:12:10.716 -> === disablestandby()
18:12:11.458 -> === disablestandby()
18:12:15.629 -> Card UID: 63 5B 9C 3E
18:12:15.629 -> PICC type: MIFARE 1KB
18:12:15.629 -> Authenticating Classic using key A...
18:12:15.629 -> Reading data from block 4 ...
18:12:15.663 -> Data on Card :
18:12:15.663 ->  13 37 B3 47 02 04 03 18 EF 00 00 00 00 00 00 00
18:12:15.663 -> 
18:12:15.663 -> 4
18:12:15.663 -> 4
18:12:15.663 -> == playFolder()
18:12:15.663 -> === disablestandby()
18:12:15.932 -> 30 Dateien in Ordner 4
18:12:15.932 -> Party Modus -> Ordner in zufälliger Reihenfolge wiedergeben
18:12:18.415 -> === playShortCut()
18:12:18.415 -> 1
18:12:18.415 -> Shortcut not configured!
18:12:18.853 -> === playShortCut()
18:12:18.853 -> 1
18:12:18.853 -> Shortcut not configured!
18:12:20.644 -> === playShortCut()
18:12:20.644 -> 2
18:12:20.644 -> Shortcut not configured!
18:12:20.950 -> === playShortCut()
18:12:20.950 -> 2
18:12:20.950 -> Shortcut not configured!
18:12:21.731 -> === disablestandby()
18:12:22.440 -> === volumeUp()
18:12:22.474 -> 21
18:12:22.877 -> === volumeDown()
18:12:22.877 -> 20

Folgendes troubleshooting wurde schon durchgeführt:

  1. Tausch Arduino gegen known good - fehler bleibt (gegenprobe funktionert, also arduino in known good box)
  2. Tausch DFPlayer gegen known good - fehler bleibt (gegenprobe funktionert, also player in known good box)
  3. Betrieb mit und ohne powerbank (direkt via usb)
  4. Flash mit 3 button firmware - gleiches Bild
  5. Wegen verdacht, dass es ein problem mit dem busy pin gibt - jupmper direkt von DFPlayer nach D4 gelötet - keine Besserung
  6. Gleicher verdacht - busy auf dem Arduino auf D5 gelegt und noch mal einen jumper gelötet - keine Besserung
  7. RFID reader abziehen (alle komplett alle pins) - keine Besserung.
  8. Basisplatine komplett neu verlötet

So, und jetzt bin ich ein bischen am ende mit meinem Latein, wo ich noch entstören könnte. Die box ist fast baugleich mit meiner ersten, in der die komponenten die ich gewechselt habe funktionieren. Unterschied sind der RFID leser (nicht getauscht da in beiden boxen verschraubt) und dass in box 2 ein GRND verteiler drin ist, an dem die knöpfe hängen (ausser A0) - aber das habe ich mit wildem hin und her stecken versucht zu isolieren. Ausserdem kommt der buttonpress ja am Arduino an.

Klar, könnte wieder ein Lötproblem sein, aber das board sieht sauber aus, und es hat sich trotz komplett neu verlöten nix geändert.

Ideen?

Deine Lötstellen sehen gut aus. Aber es scheint mir, als würden die Buttons als dauerhaft gedrückt erkannt!? Hast due die vielleicht irgendwie falsch verdrahtet oder Öffner statt Schließer?

Nein, leider auch nicht. Wenn ich alle Buttons ab mache und nur einen known-good umstecke zum testen (also nur 1x button für alle funktionen verwenden) bleibt das Problem genau so vorhanden. Ebenso wenn ich andere kurzschlussquellen abklemme. Es sind auch baulich die gleichen buttons wie an der anderen box, da geht alles. Sollte also kein Kurzschluss da sein (ausser es ist irgenwo im baseboard oder Arduino wo ich es nicht sehe).

  1. Kein Button hat einen Kurzschluss - Gegenprüfung mit known-good button, Fehler bleibt.
  2. Seperate Stromversorgung ab, Fehler bleibt.
  3. Lautsprecher ab, Fehler bleibt.

Es werden LONGPRESSES registriert und das möchte dann jeweils einen Shortcuts (kartenloser Modus / virtuelle Karte) abspielen.

Danke @Thorsten - aber wie?! Ich bin so verwirrt. Ich habe alle buttons physisch von der platine getrennt - nicht mal GRND wird geteilt und ich benutze statt dessen ein jumperkabel (female-male) um die kontakte kurz zum auslösen anzuticken und das Fehlerbild bleibt das gleiche.

Wo könnte ich noch nach einem Kurzschluss suchen, der das erklären könnte? also ein kontakt <1s zwischen A0, A3 oder A4 und GRND wird als longpress erkannt?

Wenn du nichts am Code geändert hast, dann ist
#define LONG_PRESS 1000
und somit ab 1s.

Du könntest mal noch versuchen, die direkten Kontakte (A0 usw.) an dem Arduino direkt zu nehmen.

Danke - ja, das meinte ich. Wenn ich manuell (ohne button) kontakt schließe bleibe ich sicher unter 1s - firmware frisch runtergeladen und die einzige veränderung ist das entfernen der „//“ für den 5 button modus.

Gesagt, getan, gleiches Ergebnis. Arduino blinkt „TX“ bei kontaktschluss, genauso wie die led am DFPlayer.

Ist ja erstmal OK. Du willst ja die Musik auch anhalten bzw. weiterspielen.
Was sagt die Konsole?

@Manu Siehe erster Post - das blieb bei allen Versuchen bisher konstant.

ch friemel mich jetzt noch mal mit Jumperkabeln durch und nimm Thorstens Platine als Fehlerquelle auch noch mal raus. Mal sehn …

Ich verstehe absolut garnichts mehr :sob:

Also - nach 15 minuten häkeln ist alles soweit angeschlossen (nur 1 button, zur sicherheit). Das Fehlerbild ist anders, es geht aber immer noch nicht richtig. Ich weiß auch nocht mehr …

Jetzt geht alles ausser start-stopp. Wenn A0 geschlossen wird stoppt es, startet aber nicht mehr wieder an. Karte neu Auflegen geht, aber nicht A0. Alle anderen button-trigger gehen jetzt (ohne die Platine).

Hier noch mal ein Konsolen dump:

12:15:06.991 -> 
12:15:06.991 ->  _____         _____ _____ _____ _____
12:15:06.991 -> |_   _|___ ___|  |  |     |   | |     |
12:15:06.991 ->   | | | . |   |  |  |-   -| | | |  |  |
12:15:06.991 ->   |_| |___|_|_|_____|_____|_|___|_____|
12:15:06.991 -> 
12:15:06.991 -> TonUINO Version 2.1
12:15:06.991 -> created by Thorsten Voß and licensed under GNU/GPL.
12:15:06.991 -> Information and contribution at https://tonuino.de.
12:15:06.991 -> 
12:15:06.991 -> === loadSettingsFromFlash()
12:15:06.991 -> Version: 2
12:15:06.991 -> Maximal Volume: 30
12:15:06.991 -> Minimal Volume: 5
12:15:06.991 -> Initial Volume: 20
12:15:06.991 -> EQ: 1
12:15:06.991 -> Locked: 0
12:15:06.991 -> Sleep Timer: 0
12:15:07.025 -> Inverted Volume Buttons: 1
12:15:07.025 -> Admin Menu locked: 0
12:15:07.025 -> Admin Menu Pin: 1111
12:15:07.025 -> === setstandbyTimer()
12:15:07.025 -> 0
12:15:09.132 -> Firmware Version: 0x92 = v2.0
12:15:09.132 -> === playShortCut()
12:15:09.132 -> 3
12:15:09.132 -> Shortcut not configured!
12:15:09.165 -> Card UID: 63 5B 9C 3E
12:15:09.165 -> PICC type: MIFARE 1KB
12:15:09.165 -> Authenticating Classic using key A...
12:15:09.165 -> Reading data from block 4 ...
12:15:09.165 -> Data on Card :
12:15:09.165 ->  13 37 B3 47 02 04 03 18 EF 00 00 00 00 00 00 00
12:15:09.165 -> 
12:15:09.165 -> 4
12:15:09.165 -> 4
12:15:09.165 -> == playFolder()
12:15:09.165 -> === disablestandby()
12:15:09.401 -> 30 Dateien in Ordner 4
12:15:09.401 -> Party Modus -> Ordner in zufälliger Reihenfolge wiedergeben
12:15:14.239 -> === previousTrack()
12:15:14.239 -> Anfang der Queue -> springe ans Ende 23
12:15:18.264 -> === previousTrack()
12:15:18.264 -> Party Modus ist aktiv -> zurück in der Qeueue 2
12:15:20.936 -> 2332
12:15:20.936 -> === nextTrack()
12:15:20.936 -> Party -> weiter in der Queue 23
12:15:23.001 -> === volumeDown()
12:15:23.001 -> 19
12:15:24.584 -> === volumeUp()
12:15:24.584 -> 20
12:15:24.620 -> === volumeUp()
12:15:24.653 -> 21
12:15:31.143 -> === setstandbyTimer()
12:15:31.143 -> 0
12:15:31.311 -> === setstandbyTimer()
12:15:31.311 -> 0
12:15:34.315 -> === volumeUp()
12:15:34.315 -> 22
12:15:38.590 -> === volumeUp()
12:15:38.624 -> 23
12:15:42.581 -> === setstandbyTimer()
12:15:42.581 -> 0

Das hier ist der A0 kontakt - wird immer brav registriert, stoppt aber nur ohne wieder zu starten.

12:15:31.143 -> === setstandbyTimer()
12:15:31.143 -> 0
12:15:31.311 -> === setstandbyTimer()
12:15:31.311 -> 0

Änderungen zu vorher:

  1. Platine raus, statt dessen Jumperkabel
  2. Anderer 1k resistor
  3. power source physisch getrennt (hatte ich allerdings mit platine auch schon mal probiert)

Gleich waren

  1. Arduino (inclusive Firmware, nicht gepatcht zwischen durch)
  2. DFPlayer
  3. Kabel vom RFID leser wurde nur verlängert, also MF kabel an das FF kabel drangemacht - das ist also auch gleich geblieben.
  4. Lautsprecherkabel
  5. Buttons (test aber mit Button & Jumperwire - beide gleiches Ergebnis)

Ich mache gleich noch mal Bilder von der Platine (Version 1.51 - die von der anderen box zu Gegenprüfung kam aus der gleichen Lieferung) - aber ich sehe beim besten willen nichts verdächtiges. Hatte sie auch schon mit alkohol und Druckluft mal gerreinigt & wie gesagt schon komplett neu verlötet.

Track startet auch bei vor- und zurrück buttons, nur nicht bei play/pause nach dem stoppen.

Juchuu! Der Besitzer der Box ist ein viel besserer coder als ich, und er hat den Fehler denke ich präzise eingegrenzt jetzt, zumindest softwareseitig:

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

isPlaying() wird nicht getoggelt. Und aus irgendeinem grund habe ich durch das rumbasteln mit der Platine den Wert geändert. Aber der player triggert den Arduino nicht, um den wert zu ändern. Dass heisst alle funktionen die sich jeweils mit dem Wert ändern bleiben auf einer Seite „hängen“.

OK - ich bin 95% sicher dass es das ist. Jetzt kommt aber die nächste spannende Frage: Wie kann das sein? Warum triggert der busy pin am player den Arduino nicht? Ich hatte ursprünglich sogar mal den PIN im Arduino auf D5 geändert und eine brücke direkt von DFPlayer zu Arduino gelötet und es ging trotzdem nicht.

Kann ich das irgendwie am player ausmessen, ob der busy pin korrekt funtionert?

EDIT: Ok, was für ein Zufall. Ich hatte beim Kabelsalat den Busy Pin vergessen. Als ich den auch noch gejumpert habe, ging alles einwandfrei. Jetzt habe ich alles mit Plantine wieder zusammengesteckt, und der fehler ist wieder da wie vorher.

Habe die Platine auch nochmal versucht soweit durchzumessen - ich konnte keine ungewünschte Konnektivität von irgendeinem pin ausser zwischen D4 und Busy feststellen. Wenn ich den Tonuino an mache, ist ca. 5V Spannung zwischen Busy und GRND - sobal eine Karte aufgelegt wird und die Musik startet, geht die Spannung runter. Aber der isPlaying() scheint nicht auf true gesetzt zu werden.

Dann kann es eigentlich nur an der Platine liegen. Ich habe doch die Lötstellen in Verdacht. Was für ein Flussmittel hast du verwendet. Eventuell Lötfett? Das ist für elektroniklötungen absolut nicht brauchbar, weil es säure enthält. Und diese erzeugt Kriechstrecken, die das Hochohmige abfragen der Tastenpegel verfälschen können. Falls das der Fall sein sollte, empfehle ich folgendes. Die Platine ohne Baugruppen natürlich in heisses Wasser legen. So um die 60 Grad solten genügen. Das ganze ruhig 1-2 Stunden einwirken lassen. Dann gründlich abspülen und in Alkohol oder Spiritus legen. Das zieht das Wasser wieder aus allen Ritzen. Auch ruhig einige Minuten einwirken lassen. Dann die Platine trocknen, ev mit einem Fön. Dann sind auf jeden Fall alle Flussmittelreste entfernt.

3 Like

Melde dich mal per Mail bei mir - ich schicke dir dann eine neue Platine zu.

@Thorsten - super lieb, danke! Ist aber glaube ich nicht nötig, denn der Preis geht an @Thomas-Lehnert. Ich kann es noch immer nicht ganz glauben, aber waschen hat es tatsächlich gelöst!

wow …

1 Like

Erstmal, schön daß es jetzt funktioniert! :+1:t2:

Dann jetzt aber doch nochmal die Frage, hat dein Freund denn denn wirklich irgend ein extra Flussmittel verwendet? Falls ja, bestärkt mich das doch mal wieder in meiner Meinung, daß Lötzinn mit Flussmittelkern absolut ausreicht. Es sei denn, man weiß was man tut.

Freut mich, dass meine Vermutung zur Lösung des Problems geführt hat. Viel Spaß beim Weiterbasteln.

Der geht auf meine Kappe - ja, Lötfett wurde eingesetzt. Ich war der mit er Hardware- und Löterfahrung - hatte aber nur bleifreies solides Lötzinn, daher brauchten wir noch irgend ein flussmittel. Komme mehr von der grobschlächtigen Ecke - hab sicher schon 500 Kabel und Stecker (meist Audio) gelötet, aber selten mit solch „delikater“ Elektronik :wink: Man lert nie aus.

1 Like

Hier wurden schon mehrfach Beiträge zum Löten gepostet. Es lohnt sich da mal nachzulesen. Wenn man zusätzliches Flussmittel braucht, ist mein Tipp immernoch: Löthonig von Conrad. Will keine Werbung machen aber das Zeug ist wirlich sehr gut.