Eltern werden zumindest mal davon gehört haben: Die Toniebox, ein kleiner Würfel mit Lautsprecher und WLAN an Bord.
Da hatte jemand einfach eine prima Idee: In Zeiten, wo Kassetten und CDs out sind...wie sollen da Kinder Hörspiele und Musik anhören? Muss ich einer 2jährigen beibringen, wie sie sich durch's Computer- oder Handy-Menü klickt?
Nein, Box hinstellen, eine beliebige drollige Figur aus dem Regal draufstellen und das gewünschte Hörbuch oder Album wird im wahrsten Sinne des Wortes kinderleicht abgespielt.

Wenn ich schreibe, dass hier jemand eine prima Idee hatte, dann nicht nur in Sachen Nutzererlebnis, sondern auch in Sachen Cashcow: Einerseits kostet so eine Box um die 80 €, ein Ton kommt andererseits nur raus, wenn man sich noch einen "Tonie" kauft. Dies ist eine Figur, die man oben auf die Box stellt und welche das Pendant zu genau einer CD ist. So eine Figur kostet dann jeweils 12 – 15 €.
Da kommt natürlich einiges zusammen, und da es sich um ein geschlossenes System handelt, ist die einzige Freizügigkeit, die man hat, sich einen "kreativ Tonie" zu kaufen: Eine Figur, welche mit keinem Inhalt verknüpft ist; deren Inhalt man selbst in seinen Tonie-Account hochladen kann (von dem es dann nachher wieder auf die Box runter geladen wird).

Geschlossenes System, alles läuft irgendwie "über die Cloud"...da frage ich mich natürlich gleich, ob's nicht irgendwie anders geht.

Das TonUINO-Projekt hat die Toniebox-Idee in Opensource umgewandelt. Mit einem Arduino und wenigen anderen Elementen kann man sich eine Box baseln, die mir irgendwie flexibler, als eine Toniebox erscheint.
Auf der Website des Erfinders ist alles bestens beschrieben, aber im Folgenden möchte ich noch ein paar Punkte hinzufügen, die ich auf der Homepage vermisst hatte.

Was ist der TonUINO genau?

Arduino + Musicplayer-Chip + RFID-Chip + Lautsprecher – irgendwie zusammengelötet und nett in ein Gehäuse gestopft.
Die ganze wichtige Arbeit übernimmt der MusicPlayer-Chip, an welchem der Lautsprecher angeschlossen wird und eine SD-Karte reingeschoben werden kann, welche die abzuspielenden MP3-Dateien enthält.
Der Arduino ist für die Ansteuerung zuständig.

Der Gedanke hinter dem ganzen ist es, Kindern die Bedienung möglichst einfach zu machen. Dafür habe ich einen Stapel RFID-Tags gekauft, welche man entweder auf irgendwelche Figürchen oder ausgedruckte Karten klebt. Auf jeden RFID-Tag wird Ordner- und Dateiname der MP3-Datei geschrieben, welche jeweils abgespielt werden soll, wenn man den RFID-Tag an die Box hält.

Was kostet mich der Spaß?

Neben etwas Geduld kostet es überspitzt gesagt 20 €. Das aber in meinem Fall nur, weil ich die meisten Komponenten sowieso zu Hause rumliegen hatte.
Muss man sich alles erst zulegen, landet man immerhin bei um die 50-60 €, wobei die nötige Stromzufuhr (z.B. über eine Powerbank) hier noch nicht enthalten ist.

Benötigt hatte ich für meine Box:
(Affilinate-Links zu Amazon, um mal ein Bild davon zu bekommen...die Komponenten können auch irgendwo anders bezogen werden)

  • Arduino Nano (bekommt man für 3-5 €)
  • Mini MP3 Player DFPlayer (5 €)
  • RFID Kit RC522 (5 €)
  • Eine Micro-SD-Karte (max. 32GB! ~7 €)
  • Einen kleinen passiven Lautsprecher (hatte ich aus einer alten Box ausgebaut..oder so einer für 7€)
  • Mindestens 3 Knöpfe (z.B. hier als 10er-Pack für 8 € ... so gesehen die teuerste Position, wenn man grad keine anderen Knöpfe rumliegen hat)
  • Einen Schalter wie zum Beispiel dieser hier...kann man sicher aus einem alten Elektrogerät ausbauen
  • Eine Powerbank zur Stromversorgung...haben die meisten ja irgendwo rumliegen
  • So viel RFID-Tags wie benötigt. Ich habe zum Bespiel solche für 14 ct das Stück bei eBay gekauft (sollten NTAG 213-216 sein). Fand ich praktischer (und günstiger), als die Karten, von denen man beim TonUINO-Projekt öfters liest
  • 1k-Widerstand
  • Kabel (z.B. Klingeldraht) für die Platine und USB-Kabel, um Arduino mit Powerbank zu verbinden

Tipp: Um sich die Löterei etwas einfacher zu machen, kann man sich beim Erfinder der TonUINO-Box auch eine fertige Platine kaufen, auf welche man Arduino und MP3-Player einfach drauflöten kann, ohne sich um die Verkabelung der Kontakte Sorgen machen zu müssen. Ein paar Kabel und den benötigten 1k-Widerstand legt er auch noch gleich bei.
Siehe Homepage, Kapitel "TonUINO Platine".

Ich hatte es mir irgendwie selbst zusammengelötet, um die 10€ zu sparen, würde es aber nicht wieder so machen.
Wobei mein "Fehler" eher war, dass ich an Arduino, MP3-Player und RFID-Kit gleich die PIN-Leisten drangelötet hatte, was es nachher erschwert hatte, die ganzen Kabel dranzulöten. Ohne Pin-Leisten wäre dies einfacher gewesen.

HowTo

Hardware

Auf www.voss.earth/tonuino findet sich ein übersichtlicher Schaltplan, wie man alles miteinander verdrahten muss.

Was mir in Sachen Hardware auf der Homepage gefehlt hatte, war die Info, wie ich das mit der Stromversorgung lösen könnte.

In der Schublade hatte ich noch eine kleine Powerbank, aber die will ich ja nicht immer ein- und ausstecken.
So hatte ich eines von zahlreichen USB-Kabeln genommen, die man so rumliegen hat, dieses an einer Stelle abisoliert und das rote Kabel durchtrennt. Es ist meistens das rote Kabel, will aber nicht meine Hand dafür ins Feuer legen, dass das auch bei eurem Kabel so ist! ;-)
Nun habe ich einen Kippschalter dazwischengelötet, der nachher von außen an der Box zugänglich ist, so dass sie sich einfach ein- und ausschalten lässt.
Die Powerbank schaltet sich automatisch ein, wenn man den Schalter umlegt und der Arduino Strom zieht und auch nach einiger Zeit wieder automatisch aus, wenn man die "Verbindung kappt".

Allerdings stellte es sich anfangs als reiner Glücksfall heraus, dass meine Powerbank genau das tat, was ich von ihr erwartete. Unter den Millionen von Powerbanks, die man so kaufen kann, gibt es welche, bei denen man einen Schalter zum Einschalten drücken muss (ungünstig, wenn man dafür jedes Mal die Box auseinandernehmen muss) oder die dank des geringen Stromverbrauchs des Arduinos gar nicht merken, dass ein Gerät dran hängt und sich nach 20 Sekunden wieder ausschalten.
Auch bei zwei identischen Powerbanks kann man nie sicher sein: Nachdem meine erste Powerbank den Geist aufgab und ich eine neue gekauft hatte, hatte die auch prima funktioniert, also habe ich gleich eine zweite gekauft, die dann allerdings bei der Stromaufnahme etwas anders denkt, als erstere und sich nach 20 Sekunden immer ausschaltet.

Hier gibt es einen tollen Forums-Thread mit Powerbank-Übersicht.
Auf den hätte ich vor dem Kauf mal aufmerksam gemacht werden sollen...

Software / Firmware

Man benötigt am Computer die ArduinoIDE und ein paar Bibliotheken für das MP3- und RFID-Modul...dies ist auf www.voss.earth/tonuino gut beschrieben.

Auf GitHub kann man sich den Sketch Tonuino.ino herunterladen.
Dies ist der eigentliche Programmcode in C, welcher sich mit der ArduinoIDE öffnen und auf den Arduino flashen lässt.

Ich hatte anfangs noch die Version 2.0 in die Finger bekommen, aber mit meinen RFID-Tags Probleme, da die kleinen Dinger zum Aufkleben nicht mit diesem Code zusammenarbeiten.
Stand Anfang 2020 gibt es eine WIP/DEV-Version, die auch jene RFID-Tags unterstützt. Diese Version ist zwar noch nicht so ganz fertig, aber bei mir funktioniert sie ohne Probleme.

Der Code der Version 2.0 ist allerdings um einiges schlanker und übersichtlicher. Wer sich nur inspirieren lassen möchte oder schauen, wie's funktioniert, dem rate ich, eher einen Blick in die Version 2.0 zu werfen.
In der neuen Version werden wohl noch zahlreiche Funktionen wie ein Admin-Menü dazugebastelt, die man nicht unbedingt benötigt.

Media

Alles, was abgespielt werden soll, muss im MP3-Format auf der SD-Karte vorhanden sein.

Hierbei sollten Unterordner benannt von 01 bis 99 verwendet werden, die darin enthaltenen MP3-Dateien müssen mit einer dreistelligen Zahl von 001 bis 255 benannt sein. Hinter der Zahl kann auch noch optional Text (zur besseren Erkennbarkeit, was sich hinter dieser Datei verbirgt) stehen. Auf Leer- und Sonderzeichen sollte man besser verzichten.

Man kann entweder mehrere Hörspiele, welche jeweils nur aus einer MP3-Datei bestehen, in einen Ordner packen und nachher den RFID-Tag mit einer bestimmten Datei im Ordner verknüpfen oder nur ein Hörspiel/Album, welches aus mehreren MP3-Dateien besteht in einen eigenen Ordner packen und dann den Ordner mit dem RFID-Tag verknüpfen. Jener kann dann im Zufallsmodus oder normal Track für Track abgespielt werden.

Der kleine Musicplayer hat zum einen Probleme mit Lücken in der Nummerierung (also keine Zahl auslassen) und zum anderen mit Mac-Resource-Daten. Jene sollte man, falls man die SD-Karte am Mac beschreibt, mit dem Terminal-Befehl dot_clean /Volumes/SD-Karten-Name entfernen.
Zusätzlich habe ich auch noch die unsichtbaren Ordner mit einem . am Anfang des Namens auf der SD-Karte gelöscht, welche wohl durch den dot_clean-Befehl nicht entfernt werden.
Der Musicplayer ist generell ziemlich zickig (siehe unten "Com Error 255").

Zusätzlich gehören noch die beiden Ordner mp3 und advert von der GitHub-Seite (im Ordner "sd-card") mit auf die SD-Karte, welcher Sprachdateien zur Bedienung beinhalten.
Wobei mir der Ordner advert nicht zwingend notwendig zu sein scheint. Ich habe ihn bei mir weggelassen. Er scheint nur notwendig zu sein, wenn man seine Titel angesagt haben möchte (optional einrichtbar).

Pro-Tipp: Mono

Da die Box nur einen Lautsprecher verbaut hat, macht es eventuell Sinn, alle MP3-Dateien, die man auf der SD-Karte abspeichert, von Stereo in Mono zu wandeln, um Speicherplatz zu sparen. Ich hatte meine 32GB-Karte recht bald voll und war froh, wieder einiges an Platz zu gewinnen, indem ich von Stereo in Mono konvertierte.

Mehrere Titel sind per Kommandozeile mit Hilfe von ffmpeg recht flott konvertiert.

Eine MP3-Datei in Mono wandeln:

ffmpeg -i <mp3-datei> -ac 1 <name der neuen mono-datei>

Einen ganzen Ordner von MP3-Dateien in Mono wandeln:

cd <ordner>
find . -name '*.mp3' -exec ffmpeg -i '{}' -ac 1 '{}.mono.mp3' \;

RFID-Tags

Ich habe kleine Zettelchen ähnlich alter Kasetten-Cover erstellt, um nachher noch zu wissen, wo sich die Datei auf der SD-Karte befindet, Ordner- und Datei-Nummer mit drauf gedruckt, die Zettelchen einzeln einlaminiert (da gibt es Laminierfolien im Visitenkartenformat). So hat man etwas relativ robustes.
Auf die Rückseite habe ich dann jeweils einen RFID-Aufkleber geklebt.
 
Die Tags können mit der Box selbst beschrieben werden.
Legt man einen Tag auf, der noch nicht beschrieben ist, dann meldet sich die Box zu Wort, dass man einen Ordner und eine Datei mit Hilfe der Lautstärketasten auswählen soll.

Zu Anfang mit vielen neuen Tags ist dies eine mühselige Angelegenheit, deshalb hat sich ein findiger Entwickler eine Android-App gebastelt, mit Hilfe derer das Tag-Beschreiben wie's Brezelbacken funktioniert.
NFC-fähiges Handy vorausgesetzt, natürlich!

Achtung: Ich hatte um die hundert Tags bestellt und kein Problem damit. Bei einer Nachbestellung landete ich bei anderen Tags, die sich zwar mit der Handy-App beschreiben ließen, die die Box aber nicht lesen wollte.
Erfolg hatte ich bisher immer mit diesen nTag213-Stickern.

Com Error 255

Die ersten Tage lief die Box hervorragend im Testbetrieb, bis ich eine Karte erstellen wollte, die den Inhalt eines Ordners im Zufallsmodus abspielt. Die Box blieb bei dieser Karte leider still.
Arduino an Laptop (statt an Powerbank) angeschlossen, ArduinoIDE und Werkzeuge > Serieller Monitor (mit 115200 baud) geöffnet und dort die Fehlermeldung Com Error 255 zu Gesicht bekommen. Außerdem ist zu sehen, dass die Rückgabe der Funktion, wie viele Dateien in einem Ordner enthalten sind, eine 0 ist.

Laut TonUINO-Forum hat das bei verschiedenen Usern schon verschiedene Ursachen gehabt:

SD Karte
  • Ordner müssen strikt 2stellig durchnummeriert sein (ohne Lücken), plus die beiden Ordner mp3 und advert (welche natürlich nicht numerisch benannt sind)
  • enthaltene MP3-Dateien müssen strikt 3stellig durchnummeriert sein (ohne Lücken; Ausnahme mp3 und advert – dort ist der Inhalt 4stellig durchnummeriert)
  • Keine Mac-Resource-Daten oder sonstige Dateien auf der Karte!
  • (Meine Lösung, die kurz Abhilfe schafft:) SD-Karte nochmal neu formatieren (FAT), erst mp3-Ordner und (optional) advert-Ordner draufkopieren, dann den Rest, dann von Mac-Resourcen befreien...läuft! :-)
  • Mal eine andere SD-Karte versuchen. Vielleicht ist diese zu langsam. Gerade bei vielen Dateien braucht das MP3-Modul recht lange, bis es die Anzahl errechnet hat und dies kann zum Timeout führen
  • Mal mit weniger Dateien versuchen. Einige Nutzer hatten ab insgesamt 1500 Dateien Probleme bekommen
Hardware
  • Lötstellen am MP3-Modul könnten nicht ganz so sauber sein. Falls es Kurzschlüsse am TX- oder RX-Kontakt gibt, kann sich dies auch auf diese Art und Weise äußern. Bei einer Person gab es nur einen kleinen Kontakt zwischen einer Lötstelle und einer Lasche (sieht Bild hier im Forum)