Bonjour,
C'est long, je sais... Je travaille sur un projet un peu similaire au jukebox mp3 de Daniel Herrera (Juke Box MP3), avec quelques différences car j'ai besoin de fonctionnalités un peu particulières et aussi d'utiliser des noms de fichiers mp3 longs.
Je développe avec une carte Arduino Uno, un afficheur LCD 4x20 sur I2C, 7 touches de commandes encodées sur 3 fils avec des diodes, un lecteur de carte µSD basique sur SPI avec juste MISO, MOSI, CLOCK et CS, et un encodeur mp3 LC-Technology à base de VS1053 (MP3 LC).
Mon lecteur de carte µSD est équipé d'un circuit LVC125A qui gère l'adaptation de niveau 5V vers 3,3V sur les 4 signaux MISO, MOSI, CLOCK et CS.
Le lecteur mp3 par contre, bien qu'alimenté en 5V n'accepte que des niveaux 3,3V en entrée, j'ai donc chuté les sorties MOSI, CLOCK, CS, RST et DCS de l'Arduino avec de simples diviseurs (3,3 kΩ + 5,6 kΩ). L'entrée MISO étant elle reliée directement.
J'utilise la bibliothèque <SdFat.h> standard pour le lecteur µSD et pour le module MP3 LC-Technology la librairie qu'on trouve sous l'appellation "Arduino_Library-vs1053_for_SdFat" (<vs1053_SdFat.h>).
J'ai rencontré une première difficulté car le module mp3 démarrait en MIDI, j'ai donc court-circuité les pattes 33 & 34 du VS1053 comme c'est suggéré ici ou là, ça a fonctionné mais j'ai découvert plus tard que celà pouvait être corrigé logiciellement en agissant sur GPIO0 et GPIO1 au niveau de la fonction vs_init() de la bibliothèque. J'ai enlevé le shunt et appliqué la modif de la bibliothèque, et en effet ça fonctionne.
J'en vient au problème qui justifie ce post, j'ai ensuite eu de grosses difficultés avec le module mp3 qui rendait une erreur code 4 au begin, erreur qui traduirait un problème de communication SPI. j'ai vu sur des forums étrangers que je n'étais pas le seul à rencontrer ce problème, mais apparemment personne ne proposait de solution. Malgré cette erreur je parvenais à lancer la lecture de fichiers mp3, l'envoi d'une commande au mp3 et le transfert de data entre la SD et le mp3 fonctionnaient donc.
Par contre il m'était impossible de lire les registres du vs1053, ils remontaient tous et toujours 0xFFFF, comme si la sortie MISO du module mp3 n'envoyait que des 1. J'ai bien sûr joué un peu à forcer les CS et DCS des modules pour palier un éventuel problème de conflit sur le bus, en vain. M'étant aperçu que tout allait bien lorsqu'il n'y avait pas de module SD j'ai pensé qu'il devait y avoir un problème de niveaux de signaux entre la sortie MISO de la carte SD en 5V et celle du mp3 en 3,3V qui sont toutes les deux reliées ensemble à l'entrée 12 de l'Arduino.
J'ai effectué divers essais en désespoir de cause, avec des diodes et diverses résistances au niveau de ce nœud MISO et je me suis aperçu qu'il n'y avait plus aucun problème en mettant une résistance de 220 à 470 Ω sur la ligne MISO en provenance de la carte SD.
Maintenant tout fonctionne parfaitement, plus d'erreur code 4 au begin du player mp3 et plus de problème pour lire ses registres, avec donc les deux lignes MISO reliées à D12 de l'Arduino mais via une résistance de 470Ω en série sur la ligne qui vient du lecteur SD. C'est bien, mais si des experts pouvaient m'expliquer pourquoi, je me sentirait mieux .
Amicalement,
Paulo