Depuis quelques temps, la mode en daronnie est que ses (petits) enfants aient une boite à musique 2.0. Un truc utilisable par un enfant de quelques années mais avec un niveau de « sécurité » supérieur au téléphone moyen1
Alors oui, pour quelques dizaines d’euros vous pouvez vous équiper avec un Lunii ou autre Toniebox, mais ce sont des écosystèmes ultra-fermés2 sans possibilité de rajouter son propre contenu et surtout les « consommables » (les trucs qui déclenchent les histoires ou chansons) sont à des tarifs exorbitants.
Heureusement, des allemands ont pris les choses en main et proposent une solution DIY où on n’a pas trop à faire. Cette solutions, c’est la Phoniebox.
Qu’est-ce qu’il nous faut?:
- Un Raspberry Pi (j’ai pris un Zero 2 WH – ouais, le H est important, parce que la soudure et moi, ça fait deux, je l’ai appris à mes dépends et à celui d’un Zero 2 W dont les GPIO sont inopérants)
- Un dispositif permettant de diffuser du son, enceintes USB ou dans mon cas un HAT3 audio WM8960 de chez Waveshare
- Un lecteur RFID (j’ai pris un lot de RC522 no-name – et bien m’en a pris parce qu’il m’en a fallu trois avant que la soudure des connecteurs soit suffisamment correcte pour que ça marche de façon fiable)
- Des jetons ou des cartes RFID compatibles avec le lecteur (généralement, ils en filent un échantillon avec la carte, ça permet de démarrer)
- Les bricoles habituelles, une carte microSD, un câble USB et un bloc d’alim
- Une boite pour mettre tout ça dedans avec quelques ouvertures pour faire sortir le câble et le son (j’ai voulu opter pour une solution maison à base de découpeuse laser et de Boxes.py, ça m’a coûté trois planches de MDF et j’aurais eu plus tôt fait d’acheter un truc en balsa en magasin de loisirs créatifs)
- Optionnel: des boutons, voire des potentiomètres pour régler certaines fonctions (j’avais quelques restes d’un projet précédent )
- Des câbles Dupont pour connecter les différents éléments (je vous ai dit que j’étais fâché avec la soudure?)
- Pas grand chose comme matériel à part de quoi faire quelques trous, un pistolet à colle chaude (pour fixer les composants dans la boite) et peut-être un fer à souder si vous achetez le même lecteur RFID que moi (ou que vous voulez faire un truc de pro)
Ensuite on fait quoi?
On assemble les composants. C’est (en théorie) plutôt facile: on enfiche le HAT sur le Raspberry Pi, on connecte le lecteur RFID sur les bons pins…
Et c’est là que les galères commencent. Parce qu’il y a 50 tutos sur Internet, et qu’aucun ne file la même connectique. Je n’ai pas la prétention d’avoir LA réponse, mais voilà comment j’ai connecté le mien au final:
Port du lecteur RFID | Pin physique du RPi4 |
SDA | 24 |
SCK | 23 |
MOSI | 19 |
MISO | 21 |
IRQ | 18 |
GND | 20 |
RST | 22 |
3.3V | 17 |
(les boutons seront connectables après, et c’est aussi simple que de trouver un GPIO pas utilisé et un GND libre – à une petite subtilité près, mais on en parlera plus tard)
Tout est branché?
C’est bien, mais on est encore loin du compte, il faut passer à la partie logicielle.
Je ne vous refais pas le tuto des gens de Phoniebox, il y a juste une petite subtilité si comme moi vous partez directement sur un truc « headless »: la distribution qu’ils recommandent dans le Raspberry Pi Imager (OS legacy 32 bit lite, de tête) ne prend pas en compte la config que vous passez dans l’Imager. Si vous voulez directement vous connecter à distance et en Wifi pour toute l’installation, il faut ajouter deux petits trucs dans le répertoire de boot:
- un fichier ssh vide (juste un truc que vous appelez ssh)
- un fichier wpa_supplicant.conf qui contient les infos de votre réseau Wifi. Ca ressemble à ça:
country=fr
update_config=1
ctrl_interface=/var/run/wpa_supplicant
network={
scan_ssid=1
ssid="NomDeMonReseauWifi"
psk="MotDePasseDuWifi"
}
Une fois que tout ça est fait, on met la carte dans le Pi, on boote, on attend 5 minutes (le premier boot est toujours long) et on s’empresse de ne pas suivre tout de suite la suite du guide car il faut d’abord…
installer la carte-son.
Là aussi c’est un peu chiant, le guide sur le site est un peu limite, mais globalement ça passe, faut juste pas oublier d’activer i2c et SPI5 avant de faire l’install.
Une fois que la carte-son est installée et testée (testez-la, vraiment, parce que c’est con quand ça marche pas après avoir installé toute la partie soft derrière – been there, done that), on peut suivre le guide d’installation.
Cette partie-là est plutôt simple, on active les composants qu’on veut, ça reboote une fois et hop, c’est magique ça fonctionne…
Quand ça marche pas
Parce que c’est à ce moment-là qu’on voit si (que) le lecteur RFID est mal soudé. Disons-le assez simplement: si aucun tag n’est lu par le lecteur RFID à cette étape du processus (et que vous avez bien fait les branchements tels qu’indiqué plus haut), c’est que vous avez chié un truc dans la soudure, même si la diode rouge est bien allumée. Je n’ai pas (encore) testé pour vous de dessouder/ressouder les pins, mais globalement on est bon pour souder une nouvelle série, en faisant gaffe, cette fois-ci…
Quand ça marche pas bien
Les tags RFID, c’est quelque chose d’un peu capricieux, et vous vous rendrez compte que certains marchent vachement bien dans (à peu près) n’importe quel cas d’usage (typiquement derrière les plusieurs millimètres de bois de votre boite) et d’autres sont plus susceptibles.
Donc c’est bien d’avoir une série de tags sous la main de différents formats.
Par exemple, j’ai acheté un lot de petits tags qu’on peut scotcher n’importe où, et que j’envisageais d’utiliser dans des boîtes à pièces en plastique pour faire des jetons (ou des socles en les collant sur des figurines en plastique achetées en vide-grenier pour vraiment pousser l’expérience jusqu’au bout) qui, une fois dans la boite, ne marchent que quand le capteur RFID est vraiment à côté, et sont reconnus aléatoirement quand il est dans la boîte (aucune solution n’étant évidemment children-compatible). je me suis rabattu sur les modèles de style « badge d’immeuble » qui marchent dans toutes les circonstances.
Une fois que ça marche
C’est assez simple: on charge les musiques ou les histoires qu’on veut dans des dossiers, on associe chaque tag RFID au dossier qu’on veut déclencher (on le note sur chaque tag, parce que 25 tags uniformément bleus dans une boite, c’est moins facile quand Térébinthe ou Eloanne demande à cors et à cris la chanson de la pluie6), tout ceci dans l’interface web accessible sur http://[nom que vous avez donné à votre machine dans le Pi Imager au début de l’article].local (ou, moyennant quelques manips en plus, sur \\ip.de.la.phoniebox – ce qui est plus facile pour du chargement en masse de musique, ainsi que pour mettre les pochettes des répertoires, mais plus chiant pour associer les tags RFID7)
Et les boutons?
Pour les boutons, pas de mystère, on a branché les boutons, on a bien noté le GPIO qui va bien, on modifie le fichier de configuration pour associer le bon bouton à la commande qu’on veut (on arrête et on relance la détection des GPIO dans l’interface web pour tester sans rebooter complètement la machine) et, comme on a un peu de lettres, on se dit « tiens, et si j’utilisais la fonction intégrée du Pi pour mettre le bouton on/off? »
GROSSIERE ERREUR!
(en tous cas si comme moi vous avez une carte I2C)
Parce que la fonction intégrée du Pi pour le bouton « on », c’est sur le GPIO3. Et que donc, si on veut mettre la fonction « off » sur ce même bouton, il faut l’associer au GPIO3. Sauf que le GPIO3, c’est un port réservé par l’I2C et que donc si on paramètre un bouton GPIO dessus, ben l’I2C saute, et vous avez plus de son dans votre carte-son – been there, done that, once again). Donc PAS DE BOUTON ON-OFF8 !
On n’oublie pas de bien tester à blanc dans la boite
Non seulement que tout rentre (oui, mesurer, c’est bien, mais franchement, avoir de la marge, c’est essentiel quand on gère des trucs avec des câbles), mais aussi que tout fonctionne bien une fois dans la boite (typiquement les jolis tags RFID dont vous êtes si fier 😭 ) avant de coller ce qui ne doit pas bouger (le capteur RFID, les enceintes), de bourrer le reste et de refermer tout ça d’une manière qui sera résistante aux tentatives de ces chères têtes blondes d’aller voir ce qu’il y a dedans (y’a pas grand risque de choc électrique, c’est que du 5V max, mais ce serait con que Jules-Maurice arrache toute la connectique que vous avez passé bien trop de temps à installer au bout de 5 minutes).

Enfin, vous pourrez présenter le produit fini à votre progéniture (et aux cinquante autres pourcents de l’autorité parentale, si applicable). En tous cas, l’échantillon témoin de une personne a l’air ravi!
- Vous seriez étonnés de voir à quel point un gosse de 18 mois est à l’aise avec un smartphone ↩︎
- Evidemment que j’ai regardé si ce genre de truc était hackable avant de mettre les mains dans le cambouis ↩︎
- Pour les deux du fond, un HAT, c’est un truc qui se branche directement sur les pins du Rasberry Pi. Si vous ne savez pas ce qu’est un pin, c’est que vous n’avez vraisemblablement jamais eu un Raspberry Pi entre les mains, donc Google est votre ami 😀 ↩︎
- Ils sont numérotés de gauche à droite de haut en bas quand on tient la carte avec les ports à droite. Si vous avez un doute, regardez n’importe quel tuto Internet. ↩︎
- C’est pour le lecteur RFID, mais comme il faut rebooter pour que ce soit pris en compte, autant faire les deux d’un coup ↩︎
- Non, pas celle-ci, l’autre. Non, l’autre encore… ↩︎
- (ou si vous êtes vraiment barbus, via SSH, mais qu’est-ce que vous foutez là, vous êtes meilleurs que moi dans le domaine…) ↩︎
- Il y a peut-être une siouxerie en faisant un câble en Y qui irait fermer le circuit du GPIO3 et d’un autre en même temps, en associant la fonction OFF à cet autre bouton, mais je vous avoue qu’après avoir passé une demi-journée à essayer de comprendre pourquoi j’avais subitement plus de son, j’ai pas cherché plus loin. Pour rallumer ma phoniebox, il faut la débrancher et la rebrancher épicétou – en plus ça évite qu’une petite main sournoise décide de lancer la musique à trois plombes du mat’… ↩︎
1 commentaire
Les commentaires sont fermés.