Boîte à musique version 4

La dernière version de la boîte à musique utilisait un écran OLED 128x32 pour afficher la piste courante.

Cette fois, je tente un affichage e-ink.

Problème de mémoire

Je commande cet écran 200x200 : https://www.amazon.fr/gp/product/B07Q6V93HQ/

Et je le teste sur un Arduino Micro, comme sur les précédentes boîte à musique. Mais en incluant la librairie de l’écran, celle du lecteur MP3 et une autre pour manipuler une carte SD, je me rend compte que je n’ai déjà presque plus de mémoire.

Je réfléchis même à utiliser plusieurs Arduino qui communiquent.

Finalement, j’ai opté pour un Raspberry Pico qui a beaucoup plus de mémoire.

Deux cartes SD

J’utilise habituellement le DFPlayer Mini MP3 mais ce dernier ne permet pas de lire autre chose que les fichiers MP3.

J’ai donc cherché à manipuler directement un lecteur de carte SD. J’ai testé plusieurs solutions avec les différentes façons de programmer sur le Raspberry Pico (MicroPython, CircuitPython, C++). Finalement, je n’ai pas réussi et ça sera avec 2 cartes SD, une pour les MP3 et l’autre pour les données.

Affichage lent

J’ai perdu en réactivité avec l’écran e-ink.

Pire même, le fait de devoir attendre la fin du refresh ralenti la navigation. Du coup, je joue un peu avec un affichage partiel mais ce n’est quand même pas génial.

Au prochain projet de ce genre, je testerai peut-être avec 2 micro contrôleurs dont 1 dédié à l’affichage afin de ne pas bloquer le programme principal. Juste une idée comme ça, s’il n’y a pas un autre solution de type thread.

Générateur d’image

Avec le problème de lenteur d’affichage, j’ai donc décidé de ne pas composer l’image programmatiquement.

Mais il me fallait tout de même afficher des informations pour chaque musique/histoire. J’ai alors créé un générateur d’image à partir de composantes. Aucun soucis particulier avec Sharp.

Par exemple, à partir de ces 3 images :

J’obtiens un bitmap 24 bpp que je vais pouvoir parser correctement en C++ :

Les numéros sont ajoutés en code, ils indiquent le numéro du dossier et le numéro de la piste.

Sauvegarde de l’état

Comme j’ai accès maintenant en lire et écriture à une carte SD, j’en profite pour sauvegarder l’état. C’est à dire le dernier numéro du dossier et de la piste.

On peut donc éteindre et rallumer l’appareil sur la même musique/histoire.

Je sauvegarde également le volume, ça évite de le modifier à chaque fois.

Conclusion

Expérience intéressante sur cet écran e-ink. Il faudra que réfléchisse bien pour la prochaine version.

En tout cas, mon fils aime bien lorsqu’il y a des dessins affichés pour chaque musique/histoire, hehe.

La source est ici : https://github.com/neolao/sound-box-portable/tree/version-3

(Oui je sais, c’est la branche “version-3” mais c’est bien la 4ième boîte à musique, je n’ai pas créé de repo pour la première très simple)

Commentaires