Marco's Affenbox Fork

Hallo,

ich habe schon des öfteren meinen Fork hier im Forum verlinkt, jetzt würde ich ihn nochmal im Detail Präsentieren.

Dieser Fork ist nach und nach gewachsen und ich habe immer wenn ich einen sinnvollen Anstoß für eine Anpassung gefunden habe, diesen integriert.
Mir geht es darum die besten Funktionen (meiner bescheidenen Meinung nach) aus den ganzen Forks und Vorschlägen im Forum, in einer Software zusammen zu fügen.

Der Fork baut auf @Thorsten 's Software auf und enthält folgende funktionale Änderungen und Ergänzungen. Hier in einer kurzen Übersicht: (Detailbeschreibungen findet Ihr bei GitHub, die Dokumentation ist noch WIP)

  • Es wurde ein Start- und Shut Down Sound eingefügt, der im mp3 Ordner abgelegt ist. Dafür wurde der Shortcut Nr. 3 entfernt. (über ein #define zu-/abwählbar)

  • Support eines MOSFET Lautsprecherschalters, um das anfängliche Störgeräusch auszublenden. (über ein #define zu-/abwählbar)
    Geräusch beim Start der Box, allerdings nicht bei jedem Start

  • Ausschalten der Box über einen längeren Druck (2s) der Pausetaste. Setzt einen Pollolu (oder ähnliches) voraus. (über ein #define zu-/abwählbar)

  • Um Programmspeicher für die neuen Funktionen frei zu geben, sind die Debugausgaben gekürzt worden und in englischer Sprache, sowie über ein #define zu-/abwählbar.

  • Support eines Rotary Encoder KY 040 um die Lautstärke ein zu stellen. (über ein #define zu-/abwählbar). Adaptiert aus @Ullergr 's SW.

  • „Stopp wenn Karte weg“-Funktion, zu- und abschaltbar über das Adminmenü. Diese habe ich aus @mcgreg 's SW.

  • Neue Spielemodifier: Puzzle, Quiz & Button Smash. Nähere Informationen dazu im Repository.
    + neuer Kartenvariante: Puzzleteil, welche für die Spiele Puzzle und Quiz gebraucht wird.
    Spiele: Puzzle, Quiz & Button Smash

  • Neuer Abspielmodi: Spezial Hörbuch von bis + Weitere Hörbuchspeicher pro Ordner. Die Idee und Teile des Codes stammen von @Peer
    Anfängerfrage - Unterschiede Abspielmodi Hörbuch/Hörspiel

  • Modifier können im EEPROM abgespeichert werden, damit sie bei einem Reset direkt wieder reaktiviert werden.

  • Support eines Drehschalters. Dieser soll eine alternative Steuerungsmöglichkeit bieten. Man kann die einzlenen Stellungen des Schalters über das Adminmenü konfigurieren, ähnlich der Shortcuts. Es sind aber auch Modifiktionen und System Befehle(Pause, Vor, Zurück, Lautstärke & entfernen des Modifiers) konfigurierbar. (über ein #define zu-/abwählbar)
    Tonoino für die Kita

Das hier sind natürlich nur die Oberflächlichen Änderungen, im Code habe ich auch noch an eingien Stellen Veränderungen vorgenommen, diese erläutere ich aber hier nicht im Detail. Mich kann aber jeder gerne dazu ausfragen. Eine Interressante Änderung möchte ich hier dennoch nennen. Um die weiteren Hörbuchspeicher auf die RFID Tags zu speichern, habe ich dort zwei weiter Bytes in Verwendung: Special 3 & 4.
Verwendung finden diese aktuell nur beim Hörbuch und bei den Modifierkarten, die im EEPROM gespeichert werden sollen. Aber sie schaffen Raum für weitere Möglichkeiten, mal sehen…

Die Funktionen sind von @kobayashi_maru und mir zu großen Teilen getestet worden.
Nochmals Danke dafür!
Aber als 100% stabil würde ich den Fork noch nicht beschreiben, deshalb freue ich mich über jede Fehlermeldung die ihr mir zukommen lasst!

Ich habe auch noch eine große Erweiterung offen:
@stephan 's Fernbedienungsintegration. Diese stellt mich allerdings aktuell vor die Herausforderung, eines zu geringen Programmspeichers. Hier muss ich noch die Speicherfresser finden und beheben.
Aber eine Lösung werde ich schon finden und dann berichten.

Ich hoffe der ein oder andere probiert meinen Fork mal aus und berichtet.
Grüße Marco

12 Like

In meinem Fork gab es Fehler beim Erstellen von neuen Karten, sowie Fehler bei den von bis Modis.
Die von bis Grenzen wurden nicht richtig eingehalten.

Um transparent fest zu halten, welche Funktionen validiert sind, habe ich ein Testprotokol angefügt.
Hier kann man nachvollziehen, welche Funktionen von mir bereits getestet sind und welche nicht.

1 Like

Ich habe meinen Fork jetzt zu ca. 95% getestet und nahezu alle Bugs behoben.
Es gibt noch ein paar sehr spezielle Fehler, die im normalen Betrieb nicht weiter auffallen sollten.
Vor ein paar Minuten hab ich die Version aktualisiert.

4 Like

Moin Marco,

vielleicht kannst du mir weiterhelfen bei deinem Fork, den ich sehr interessant finde & gerne ausprobieren würde.

Also lade ich deinen Fork runter, tausche die mp3 gegen meine aus (nutze die 2.1 DEV von Thorsten) und lade die im Tonuino Ordner befindliche Ino Datei - den advert Ordner lasse ich unberührt.

Die im Ordner Specials befindliche TonUINO_ShortCutButtons Ino ist ja was anderes richtig ? Auch die im Specials Ordner befindlichen 3 mp3 Files gehören dann auch zum Shortcut Fork ?

Da Kompilieren klappt

Der Sketch verwendet 26282 Bytes (85%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes. Globale Variablen verwenden 1174 Bytes (57%) des dynamischen Speichers, 874 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Auch das hochladen. Bekomme folgende Debug Ausgabe:
Allerdings beim auflegen oder drücken der Taster, kommt nicht’s in der Ausgabe.

07:51:42.994 -> ]⸮I\T]ox⸮⸮⸮Aê⸮iPV-i3⸮TonUINO Version 2.1
07:51:44.353 -> created by Thorsten Voß and licensed under GNU/GPL.
07:51:44.353 -> Information and contribution at https://tonuino.de.
07:51:44.353 ->
07:51:44.387 -> Fork by Marco Schulz
07:51:46.367 -> load settings from flash
07:51:46.367 -> Version: 2
07:51:46.367 -> Max Vol: 25
07:51:46.367 -> Min Vole: 5
07:51:46.367 -> Init Vol: 15
07:51:46.367 -> EQ: 1
07:51:46.367 -> Locked: 0
07:51:46.367 -> Sleep Timer: 0
07:51:46.367 -> Inverted Vol Buttons: 1
07:51:46.367 -> Admin Menu locked: 1
07:51:46.367 -> Admin Menu Pin: 11255255
07:51:46.367 -> Saved Modifier Mode: 255
07:51:46.400 -> set modifier: 255

Nur beim auflegen einer Karte, oder versuchen ins Admin mit den Buttons zu gelangen passiert gar nichts … Auch am Arduino leuchtet nur Grün, ich erinnere mich das sonst beim Auflegen einer Karte die rote LED leuchtet. Ich nutze nur 3 Tasten

Ich hab dann auch mal meinen advert Ordner mit deinem ausgetauscht, ohne erfolg. Ich habe //#define DEBUG_QUEUE und #define DEBUG unkommentiert,

Hast du noch einen Tipp was ich falsch mache?

Danke & Gruß

Soweit ist alles korrekt.
Ich würde als erstes mal probieren den EEPROM zu löschen.
Alle drei tasten drücken und dann einschalten.

Bei dir ist das Adminmenü gesperrt und ein Pin ist hinterlegt.

Das könntr daran liegen das Maine Fork den EEPROM anderes nutzt und nun falsche Daten aus deinem ließt, aufgrund der Originalen Software.

Kannst du danach noch eine Konsolenausgabe mit aufgelegter Karte und Adminmenü posten?

Das hat schon mal geklappt… Vielen Dank dafür. Ich kann Karten spielen und komme in’s Admin Menü:

09:16:10.654 -> TonUINO Version 2.1
09:16:10.654 -> created by Thorsten Voß and licensed under GNU/GPL.
09:16:10.654 -> Information and contribution at https://tonuino.de.
09:16:10.654 ->
09:16:10.687 -> Fork by Marco Schulz
09:16:12.668 -> load settings from flash
09:16:12.668 -> Version: 2
09:16:12.668 -> Max Vol: 25
09:16:12.668 -> Min Vole: 1
09:16:12.668 -> Init Vol: 1
09:16:12.668 -> EQ: 1
09:16:12.668 -> Locked: 0
09:16:12.668 -> Sleep Timer: 0
09:16:12.668 -> Inverted Vol Buttons: 1
09:16:12.702 -> Admin Menu locked: 0
09:16:12.702 -> Admin Menu Pin: 1111
09:16:12.702 -> Saved Modifier Mode: 0
09:16:12.702 -> set standby timer

Ich hatte dann im Anschluss eine Fehlermeldung, die aber mit dem neu befallen des mp3 Ordners anscheinend erledigt ist:
09:22:01.125 -> packet header error

Jetzt bekomme ich noch die Meldung
09:42:08.923 -> write settings to flash
09:42:08.923 -> set standby timer
09:42:08.960 -> milis: 0
09:42:08.960 -> cant read card

was könnte cant read card bedeuten ?

wenn ich im Admin menu was speichere

Gruß

Das könnte mit der „Pause wenn Karte weg“ Funktion zusammenhängen, dann wäre es kein Fehler. Eventuell muss ich die Debugausgaben an der Stelle verbessern.
Muss ich mir bei Gelegenheit nochmal ansehen.

Aber die Funktion ist nicht beeinträchtigt?

Nein, funktioniert alles super…Danke für deine sehr schnelle Hilfe

@marco-117: Hallo Marco, ich bin gerade dabei für meinen Sohn einen TonUINO zu bauen. Habe bereits diverse Firmwares probiert und deine Version hat so ziemlich alles was ich in dem TonUINO aufbauen und haben möchte. Vielen Dank an dieser Stelle dafür.

Ich habe allerdings ein Problem beim Abspielen des letzten Songs eines Ordners festgestellt. Danach stoppt nicht die Wiedergabe, sondern der letzte Song wird nochmal wiederholt und danach erst stoppt die Wiedergabe. Nach dem Standby-Timeout wird der Shutdown-Track abgespielt, doch das System fährt nicht runter. Stattdessen wir der letzte Song in Dauerschleife abgespielt. Ich nutze die Funktion „Pause wenn Karte weg“. Wenn ich die Karte dann wegnehme, Spielt der Song weiter. Das System reagiert dabei auch nicht mehr auf Tastenbetätigungen. Wo und was müsste ich ändern um dieses Verhalten zu ändern bzw anzupassen?

Ich hoffe ich habe mein Problem genau genug schildern können. Wenn ich noch was tun soll, sag mir bitte Bescheid.

Vielen Dank und schöne Grüße!

Das letztere Problem ist mir bekannt und ich habe auch ne Lösung. Ist aber noch nicht hoch geladen.

Das erste Problem ist mir noch nicht begegnet.
Kannst du mir sagen welchen Abspielmodus du verwendet, dann Versuch ich es zu reproduzieren.

Ich habe die Änderung für den shut down timer Fehler hoch geladen.

Vielen Dank für die Änderung, werde diese heute Abend, wenn der Kleine schläft, ausprobieren.

Der Abspielmodus ist hier Album.

Hab den geänderten Code eben getestet. Musste vorher noch eine Anpassung durchführen, welche den Pin 5 des Arduino zur Impulsbelastung der Powerbank benutzt, damit die Powerbank nicht automatisch aus geht. Dieser Code sollte allerdings keinen Einfluss auf das Verhalten haben. Sonst ist alles original von dir.

Nun deine Änderung was den Shutdown angeht funktioniert (nicht immer). Wenn die Karte draufbleibt, spielt das System den letzten Song noch einmal ab, allerdings ist das System hierbei stummgestellt (der DFPlayer leutet blau, also spelt er was ab). Danach läuft der Schutdowntimer und das System fährt runter. Hierbei wird das Shutdowngeräusch nicht wiedergegeben (vermutlich nicht, da der Speaker stumm gestellt ist).

Nehme ich allerdingst während der Shutdowntimer läuft die Karte weg und leg sie wieder drauf, wird das letze Lied nochmal abgespielt (man hört es), danach fährt das System nicht mehr in den Standby runter, obwohl nichts abgespielt wird.

An welchen Stellen könnte ich im Code schauen um das anzupassen? Oder ist es zu umfangreich um das auf Anhieb zu verstehen (bin zwar ein absoluter Anfänger, lerne aber schnell)?

Gruß

Hat etwas gedauert aber ich konnt mich leider nicht früher um das Problem kümmern.
Ich habe das Problem gefunden. Es wurde die nextTrack Methode nicht richtig abgebrochen, nachdem der letzte Track erkannt wurde.

Ich habe den Code aktualisiert und hochgeladen.

Wenn es noch Probleme gibt, gerne melden.

1 Like

Hallo Marco, vielen Dank für deine Unterstützung. Das ist echt super! Ich teste die upgedatete Version. Sollte ich weiter Probleme haben, melde ich mich. Danke dir nochmal!

Gruß

@marco-117 Hab es nun endlich geschafft die Version zu testen. Hab irgendwie nur noch Probleme mit der Firmware. Komme nicht mehr ins Admin Menü und die Tracks werden auch nicht mehr vernünftig abgespielt. Hier funktioniert die Methode Pause wenn Karte weg irgendwie nicht sauber. Hab das EEPROM auch schon mehrmals gelöscht und mehrmals die Firmware aufgespielt, ohne Erfolg.

Das Seltsame ist, dass die alte Firmware auch nicht mehr so läuft wie am Anfang. Ich verstehe das nicht so richtig. Bin deshalb zurück zu einer anderen Firmware gewechselt. Ich danke dir trotzdem vielmals für deine Unterstützung!

Gruß

Es würde mir helfen, wenn du eine Konsolen Ausgabe und deine #define Einstellungen aus dem Quelltext mitteilen könntest.

Falls du vom Orignal Schaltplan abweichst wäre es interressant zu wissen, welche das sind.

Es kann sein, dass meine Ergänzungen deines Codes was durcheinander gebracht haben. Ich werde morgen die „nackte“, unveränderte Version von dir mit den aktivierten Features, die ich benötige, testen.

Ich berichte sobald ich neue Erkenntnisse habe.
Gruß

@marco-117 Das Verhalten ist genauso, leider kein Admin Menü. Das ist die Ausgabe beim Druck auf die 3 Buttons gleichzeitig:

Meine #define Einstellungen sind so:

///////// uncomment the below line to enable the function ////////////////
//#define FIVEBUTTONS
#define DEBUG
//#define DEBUG_QUEUE
#define PUSH_ON_OFF
#define STARTUP_SOUND
#define SPEAKER_SWITCH
//#define ROTARY_ENCODER
//#define ROTARY_SWITCH
#define POWER_ON_LED
//////////////////////////////////////////////////////////////////////////

Ich benutze eine Platine nach dem Standard-Schaltplan von Thorsten. Zusätzlich habe ich, angelehnt an deine Firmware, die Mosfet Schaltung für den Speaker Switch drin (an Pin D8). Weiterhin benutze ich einen Pololu Switch LV zum Einschalten über den Play Button. Eine weitere Schaltung um die Auto-Off Funktion der Powerbank auszuhebeln benutzt den Pin D5 (wäre aber hier erstmal außer Funktion). Und schließlich sind noch zwei LEDs für AN/AUS Anzeige (Pin D6) drin.

… Ach so, und ich benutze die Funktion „Pause wenn Karte weg“.

Gruß

Am Besten den Text kopieren und wie Code mit </> formatieren.