Voici un petit projet fun et rapide pour faire plaisir aux enfants (les miens ont actuellement 3 et 5 ans ).
Le use case est simple :
L’utilisateur allume le dispositif et une playlist MP3 se lance
Mais nous irons un peu plus loin en permettant à la playlist de reprendre après le dernier morceau joué.
L’Interface utilisateur
On a affaire à des enfants, l’U.I. doit donc se limiter au minimum. Un interrupteur tout simple permettra de lancer/arrêter le système.
Le fait d’arrêter brutalement le système avec un interrupteur pourrait corrompre le système, cependant :
- le système ne fera que lire des mp3s
- Il est très simple de « refaire » une SD Card en cas de problèmes
- Je ne me suis pas encore plongé dans l’interface I/O du Pi, mais je pense essayer de faire mieux 😉
Le système
Le Pi doit démarrer (à peu près) rapidement pour lancer la lecture des MP3s, nous partirons donc sur la distribution Arch Linux qui fournit le juste nécessaire pour la mise en oeuvre du système :
http://downloads.raspberrypi.org/arch_latest
Pour l’installation (depuis Linux), utilisez dd :
dd bs=1M if=archlinux-hf-yyyy-mm-dd.img of=/dev/mmcXXX
Depuis Windows, utilisez Win32DiskImager.
Une fois la SD card prête, démarrez votre Pi.
Les login/password sont :
root/root
Créez un compte utilisateur, par exemple « pi » :
useradd -m pi
Et ajouter un mot de passe :
passwd pi
Le logiciel
Nous allons maintenant procéder à l’installation des softs nécessaires.
Pour jouer les mp3s, nous aurons besoin de mpg123 :
pacman -S mpg123
Puis pour développer le programme, nous utiliserons Go :
pacman -S go
Puis, pour mettre en place l’environnement,
mkdir $HOME/go
Et ajoutez les lignes suivantes au .bash_profile :
export GOPATH="$HOME/go"
export PATH="$PATH:$GOPATH/bin"
Une première version du Juke Box
La version de base consistera à un simple lecteur MP3 : on allume et la playlist se lance.
N’oubliez pas de connecter des haut-parleurs ! (les hercules ci-contre fonctionnent parfaitement)
Nous allons configurer le système pour qu’il se connecte automatiquement au compte utilisateur « pi ».
Arch Linux permet de configurer l’autologin via systemd (cf. Automatic login to virtual console).
Pour ce faire, il faut d’abord créer le sous-répertoire suivant :
mkdir /etc/systemd/system/getty@tty1.service.d
Et créer le fichier /etc/systemd/system/getty@tty1.service.d/autologin.conf contenant :
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin pi --noclear %I 38400 linux
Type=simple
Transférez des mp3s sur la SD card, par exemple dans /home/pi/mp3.
Maintenant, il faut créer une playlist. Rien de plus simple, il faut créer un fichier (par exemple /home/pi/playlist.txt) contenant une ligne par mp3 à jouer :
/home/pi/mp3/Mon premier.mp3
/home/pi/mp3/Mon deuxieme.mp3
Bien, nous avons presque fini la première version !
Il reste à modifier le fichier /home/pi/.bash_profile pour ajouter :
mpg321 -@ /home/pi/playlist.txt
Sauvegardez, redémarrez et vous devriez entendre votre playlist !
Aller plus loin : redémarrer la playlist au dernier MP3 joué
Maintenant, plaçons la barre un peu plus haut : mon fils veut que le juke box recommence après le dernier MP3 joué.
J’ai décidé de me faire plaisir : j’ai développé un petit programme en Go pour gérer ce cas.
Les sources sont disponibles sur github : rotatingMpeg123Juke.go.
Pour l’installer, rien de plus simple, go se charge de tout :
go get github.com/gcastel/rotatingMpeg123Juke
et go va chercher les sources, les compiler et les installer sur votre environnement.
Le programme s’attend à trouver un fichier playlist.txt dans son chemin d’exécution.
Modifiez le fichier .bash_profile pour enlever l’appel de mpg123 et ajoutez:
rotatingMpeg123Juke
Redémarrez, et voilà, votre « JukeBox » est prêt.