Je vous présente le prototype 3 de The Open Music Box : un lecteur audio pour enfants piloté par cartes NFC, et surtout, un système complet et open source que n'importe qui peut reproduire à partir d'un Raspberry Pi.
Mais avant d'ouvrir la boîte, un mot sur le chemin parcouru. Dans l'article précédent, je vous présentais le deuxième prototype et sa grande nouveauté, les playlists, que mon fils adorait parcourir avec les deux boutons en façade. Il restait un point à améliorer : le boîtier était trop compact pour loger une batterie. Toujours branché au secteur, et une à deux minutes d'attente à chaque redémarrage. Le v3 poursuit cette amélioration continue : une version aboutie, prête à remplacer l'ancienne, et cette fois, à partager.
Une interface pour gérer le contenu
Sur le v2, ajouter une histoire impliquait de se connecter en SSH, déposer les fichiers MP3 dans le bon dossier, démarrer un script pour lancer l'association des cartes pour les nouvelles playlists, puis redémarrer le service. Pas vraiment compatible avec une utilisation familiale...
J'ai donc développé une interface web servie directement par le Raspberry Pi. Depuis n'importe quel téléphone ou ordinateur sur le même réseau, on peut créer des playlists, uploader des fichiers audio, et associer une carte NFC à une playlist. Sans terminal, sans manipulation de fichiers.

Tout ce qu'il faut faire, on peut le faire depuis cet écran. La box reflète immédiatement ce qui change côté téléphone, et inversement.

L'upload se fait par glisser-déposer, fichier par fichier, avec une barre de progression.

L'association d'un tag NFC suit la même logique : on lance le mode association depuis l'interface, on présente la carte au lecteur, et c'est lié à la playlist. Plus de manipulation manuelle d'identifiants.

Une batterie pour le rendre nomade
Côté hardware, le chantier principal du v3 était d'enfin caser une batterie dans le boîtier pour ne plus dépendre du secteur. J'ai donc redessiné l'enveloppe en partant de la batterie : la dimensionner d'abord, organiser tout le reste autour ensuite.
À l'intérieur, une batterie LiPo est connectée à une petite carte qui se charge en USB et bascule en mode autonome quand on débranche. Sur le papier, ça réglait le problème : plus de fil à la patte, plus d'attente au redémarrage.
Sauf qu'à l'usage, la bascule entre l'alimentation USB et la batterie provoque une micro-coupure électrique, ce qui fait redémarrer le Raspberry Pi. Résultat : on a gagné en mobilité, mais le délai d'une à deux minutes reste là.
Pas un drame, on s'organise autour, mais c'est plutôt frustrant. J'ai essayé de rajouter des condensateurs pour lisser le courant, mais je ne suis pas électronicien et ce problème persiste jusqu'à présent.
Des boutons pour les histoires interactives
Pendant la conception du v3, je commençais à réfléchir à des histoires interactives : un récit audio où l'enfant choisit la suite en appuyant sur un bouton. Pour ça, deux boutons en façade ne suffisaient plus, il en fallait quatre, pour un maximum d'interactivité.
J'ai donc placé ces quatre boutons colorés sur le dessus du boîtier. C'est aussi l'occasion d'une meilleure ergonomie au passage : un appui sur le dessus est plus agréable pour l'interaction, ça évite de pousser la boîte quand on appuie dessus.
Le format des histoires interactives est encore en chantier, mais le boîtier est déjà pensé pour les accueillir le jour où ce sera prêt.
Fabriquer le boîtier
Le boîtier final reste sur la même logique que le v2 : une structure imprimée en 3D pensée comme l'ossature d'un cube, des plaques de MDF découpées au laser pour les faces. Ce qui change : les dimensions, les ouvertures des nouveaux boutons sur le dessus, un accès à la batterie par le bas sans démontage complet, et une structure affinée.
Pour réussir à imprimer cette structure cubique en une seule pièce, il a fallu pas mal de calibrations. Le défi, c'étaient les longs ponts d'un mur à l'autre : il fallait qu'ils se posent proprement sans s'affaisser, et que les supports se retirent ensuite sans laisser de traces.

Beaucoup d'impressions sacrifiées avant d'arriver à un rendu propre.

Une fois la structure imprimée, il restait l'autre exercice : faire coïncider les cotes entre les plaques internes qui soutiennent les composants, les pièces imprimées, et les panneaux de bois découpés au laser. Trois techniques de fabrication, trois précisions différentes, à aligner. J'en suis ressorti avec beaucoup de choses apprises sur la calibration d'une imprimante 3D et sur les réglages qui influencent vraiment la qualité finale.
Reproduire le système
Le prototype 3 fonctionne, il tourne tous les jours à la maison. Restait une dernière étape pour qu'il devienne vraiment un projet : le rendre reproductible.
Pour l'instant, c'est surtout l'application qui est disponible : le code est fonctionnel sur GitHub, et un script de configuration prépare automatiquement le Raspberry Pi, de l'installation des dépendances jusqu'au lancement du service. Licence non-commerciale, libre d'usage personnel, éducatif, et de modification.
Côté boîtier, les fichiers STL et la BOM sont encore en cours de finalisation. Je préfère les publier une fois qu'ils seront vraiment prêts à être suivis. Ça arrive, et je réponds aux questions posées en issue.
Et après
Cette version Raspberry Pi est un point d'arrivée, mais aussi un point de bascule. À l'usage quotidien, il est cher, consomme beaucoup, démarre lentement, et nécessite un système d'exploitation complet pour ce qui reste, au fond, un lecteur audio piloté par NFC. C'est trop pour ce que ça fait. J'ai passé beaucoup (trop) de temps sur ce proof of concept, et il est temps de tourner la page pour des composants plus pertinents.
C'est pour ça que le repo Raspberry Pi est marqué comme déprécié sur GitHub : la suite mobilise toute mon énergie en ce moment, et je la présenterai dans le prochain article.
Cela dit, cette version reste open source, disponible, et utilisable par qui veut s'en emparer. Le code est là, fonctionnel. Les fichiers du boîtier suivront. Si vous fabriquez la vôtre, faites-moi signe.