C’est lors d’échanges avec Julien, technicien chez Kubii, qu’est née l’idée de cet article. La problématique c’était de lire des .mp3 grâce à un Raspberry Pi PICO sous Circuit Python, monté sur la carte Cytron MakerPi PICO qu’on trouve sur le site Kubii. La carte Maker Pi Pico est décrite plus en détails dans l’article. Les .mp3 sont stockés sur une carte SD et on les envoie sur un ampli I2S de type MAX98357A. Je vous présente ici de quoi démarrer ce genre de projet.
Au sommaire :
- 1 Lecteur mp3 sur carte SD avec Raspberry Pi PICO et ampli I2S
- 1.1 Le Raspberry Pi PICO
- 1.2 La carte Cytron MAKER PI PICO
- 1.3 Quelques détails de la carte Maker Pi PICO
- 1.4 Matériel utilisé pour cette application
- 1.5 L’amplificateur I2S MAX98357A
- 1.6 Câblage du projet
- 1.7 Préparer les .mp3
- 1.8 Circuit Python
- 1.9 Programme en circuit Python
- 1.10 Une démo du lecteur MP3 en vidéo
- 2 Conclusion
- 3 Sources
Lecteur mp3 sur carte SD avec Raspberry Pi PICO et ampli I2S
Il existe des lecteurs MP3 et des cartes à quelques euros qui permettent de lire les mp3. Après on peut profiter des vacances pour apprendre un peu plus sur le sujet et fabriquer son propre lecteur, non ?
Le Raspberry Pi PICO
C’est la carte microcontrôleur développée par la fondation Raspberry Pi autour d’un RP2040. Il existe plusieurs version, avec ou sans connecteur soudé, avec ou sans interface wifi/bluetooth…
Pour l’occasion, j’ai choisi un PICO W, c’est le troisième modèle à partir de la gauche sur la photo ci-dessus.
Je vous ai présenté le Raspberry Pi PICO en janvier 2021 lors de sa sortie, et il y a de nombreux articles du blog qui en parlent.
- Microcontrôleur RP2040 conçu par Raspberry Pi au Royaume-Uni
- Processeur ARM Cortex M0+ à double cœur, horloge flexible fonctionnant jusqu’à 133 MHz
- 264 Ko de SRAM et 2 Mo de mémoire Flash embarquée
- Le module peut se souder directement sur une carte
- Puce CYW43439 d’Infineon, 2,4GHz IEEE 802.11 b/g/n
- Prise en charge de l’hôte et du périphérique USB 1.1 (OTG)
- Mise en veille à puissance réduite et modes « dormants »
- Programmation par glisser-déposer en utilisant le stockage de masse via USB
- 26 broches GPIO multifonctions
- 2 × SPI, 2 × I2C, 2 × UART, 3 × 12-bit ADC, 16 × canaux PWM contrôlables
- Horloge et minuterie précises intégrées
- Capteur de température
- Bibliothèques accélérées en virgule flottante intégrées
- 8 × machines d’état à entrées/sorties programmables (PIO) pour le support de périphériques personnalisés
Le Raspberry Pi PICO contrairement à d’autres microcontrôleurs, n’a pas de bus I2S dédié. Vous pouvez le chercher sur l’image ci-dessus… Il n’y est pas ! Ici le bus I2S sera disponible sur les GPIO 0, 1 et 2 et sera fourni par le module audiobusio de circuitPython.
La carte Cytron MAKER PI PICO
C’est une carte de développement pour le Raspberry Pi PICO fabriquée par CYTRON. Elle existe en 2 versions, avec ou sans le Raspberry Pi PICO Soudé sur la carte :
La version de gauche possède le Raspberry Pi PICO monté sur la carte. Celle de droite a un support sur lequel on pourra monter le Raspberry Pi PICO de son choix. Dans les deux cas on dispose de connecteurs Grove pour connecter des modules existants.
La carte est bien documentée, et ses différentes fonctions sont disponibles, avec les ports GPIO utilisés.
La carte sans PICO possède deux rangées de contacts, une rangée sert à connecter le PICO, l’autre accueille les fils Dupont pour connecter des périphériques extérieurs.
La carte avec le PICO a les mêmes fonctions. A noter le switch qui permet de couper le buzzer si besoin. Le GP18 est utilisé pour le buzzer et la sortie canal gauche de la BF sur la prise Jack 3,5mm. Cette carte avec le PICO intégré est disponible chez Kubii.
Schéma de la carte.
Schéma des LEDs de signalisation. Chaque GPIO possède sa LED, ce qui permet de suivre ce qui se passe en temps réel.
L’idée ici c’est de développer un projet avec ce support puis de le porter sur une carte de circuit imprimé (PCB) directement.
Quelques détails de la carte Maker Pi PICO
La carte SD se place ici. c’est un connecteur type clic-clic tu enfonces la carte, il clic et verrouille. Pour sortir la carte tu appuies dessus à nouveau, ça clic et elle sort ! A côté la sortie SON sur les GP18 et 19. LE GP18 va aussi sur le buzzer mais on a un switch pour le couper.
La LED WS2812B Neopixel permet de mettre de la couleur sur la carte. Chaque patte du Pico est bien repérée et possède une diode LED.
Rangée de diodes LED et transis de commandes + les prises Grove.
Le switch du buzzer à gauche et les 3 boutons sur GP20, GP21 et GP22.
Les GP utilisés pour la SD sont indiqués sous la carte
Si besoin on peut couper cette piste et éteindre les LEDs
Matériel utilisé pour cette application
La carte avec les LED allumées
Pour ce développement, j’ai opté pour la carte sans Raspberry Pï PICO, ce qui permet de monter son propre PICO (ici un picoW) mais aussi de changer le PICO en fonction du projet tout en conservant programme et bibliothèques sur le PICO utilisé pour un projet particulier. Vous travaillez toujours sur un seul projet à la fois, vous ?
L’amplificateur I2S MAX98357A
Ici c’est Adafruit qui a créé le module amplificateur I2S. Cette carte combine un DAC I2S et un ampli BF en classe D.
I2S
Le bus I2S du Raspberry Pi PICO est utilisé pour transférer l’audio vers le DAC de l’ampli.
Source https://infocenter.nordicsemi.com/index.jsp?topic=%2Fps_nrf9160%2Fi2s.html
I2S, également appelé Inter-IC Sound, Integrated Interchip Sound, ou IIS, un standard d’interface électrique de type bus série pour connecter des matériels audio numériques ensemble. Il est principalement utilisé pour transporter des informations PCM entre le CD et le DAC dans un lecteur de CD.
Le bus I2S est synchrone, et sépare l’horloge et les signaux de données, contrairement à la liaison asynchrone S/PDIF qui les mélange, ce qui simplifie et fiabilise le traitement de l’horloge. (source Wikipedia)
Amplificateur classe D MAX98357A
Les informations ci-dessous sont traduites depuis la page Adafruit du MAX98357A sauf mention particulière.
Présentation
Si votre microcontrôleur ou votre micro-ordinateur peut sortir de l’ audio numérique, cet amplificateur est fait pour vous ! Il accepte en entrée de l’audio numérique standard I2S, la transforme en signal analogique, et l’amplifie pour le haut-parleur.
I2S (à ne pas confondre avec I2C) est un protocole sonore numérique utilisé sur les circuits imprimés pour transmettre des données audio. De nombreuses puces et processeurs haut de gamme gèrent tout l’audio au format numérique I2S. Ensuite, pour entrer ou sortir des données, trois ou quatre broches sont utilisées (entrée de données, sortie de données, horloge et sélection du canal gauche-droit). En général, pour les appareils audio, il y a une puce DAC qui prend l’entrée I2S et la convertit en signal analogique qui peut alimenter un casque.
Source Audiophonics
Ce petit amplificateur mono est étonnamment puissant – capable de délivrer 3,2 watts de puissance dans un haut-parleur d’une impédance de 4 ohms (puissance sous 5V @ 10% THD). À l’intérieur de la puce miniature se trouve un contrôleur de classe D, capable de fonctionner de 2,7V à 5,5VDC. Comme l’ampli est de classe D, il est très efficace, ce qui le rend parfait pour les projets portables et alimentés par batterie. Il est doté d’une protection thermique et d’une protection contre les surintensités, mais vous verrez qu’il chauffe à peine car il travaille en commutation.
L’entrée audio est au standard I2S, vous pouvez utiliser des données logiques de 3,3V ou 5V. Les sorties sont « Bridge Tied » – ce qui signifie qu’elles sont connectées directement aux sorties, sans connexion à la masse. La sortie est une onde carrée PWM de ~300KHz qui est ensuite «moyennée» par la bobine du haut-parleur – les hautes fréquences ne sont pas entendues. Vous ne pouvez pas connecter la sortie à un autre amplificateur, elle doit alimenter les haut-parleurs directement.
La carte possède une entrée Gain qui peut être manipulée pour changer le gain. Par défaut, l’ampli donne 9dB de gain. En connectant une résistance pullup ou pull down, ou en la reliant directement, la broche Gain peut régler le gain à 3dB, 6dB, 9dB, 12dB ou 15dB.
la broche ShutDown/Mode peut être utilisée pour mettre la puce en veille ou pour définir le canal audio I2S qui sera envoyé au haut-parleur. Par défaut, l’ampli délivre un mixage stéréo (L+R)/2 dans une sortie mono. En ajoutant une résistance, vous pouvez modifier la sortie pour qu’elle soit juste canal gauche ou juste canal droite, ce qui permet de monter un ampli stéréo avec 2 cartes MAX98357A.
La carte fonctionne parfaitement avec Raspberry Pi, Arduino, PICO, et tout autre microcontrôleur ou micro-ordinateur avec des sorties audio I2S.
Spécifications
-
-
- Puissance de sortie : 3,2W à 4Ω, 10% THD, 1,8W à 8Ω, 10% THD, avec alimentation 5V
- PSRR : 77 dB typ @ 1KHz
- Taux d’échantillonnage I2S de 8kHz à 96kHz
- MCLK pas obligatoire
- Réduction des clics et des bruits parasites
- Cinq gains sélectionnables par broche : 3dB, 6dB, 9dB, 12dB, 15dB
- Excellente suppression des clics et des pops
- Protection thermique
-
Connexions
Le MAX98357A est un amplificateur I2S – il ne possède pas d’entrées analogiques, il ne supporte que les entrées audio numériques ! Ne pas confondre I2S et I2C : I2S est un protocole audio alors que I2C est pour de petites quantités de données.
Sortie Haut-parleur
Cet amplificateur est conçu pour piloter uniquement des haut-parleurs à bobine mobile. L’impédance du haut-parleur doit être de 4Ω ou plus. Le signal de sortie est une onde carrée PWM de 330 kHz avec un rapport cyclique proportionnel au signal audio. L’inductance de la bobine du haut-parleur sert de filtre passe-bas pour atténuer les composantes à haute fréquence. N’essayez pas d’utiliser cet appareil comme préamplificateur.
Les sorties de chaque canal sont « pontées » sans connexion à la masse. Cela signifie que pour chaque canal, le + et le – alternent la polarité pour créer un amplificateur à canal unique avec deux fois la tension disponible.
Connectez vos haut-parleurs à l’aide d’un borniers à vis de 3,5 mm.
- 5V dans 4Ω @ 10% THD – 3W max
- 5V dans 4Ω @ 1% THD – 2.5W max
- 3,3V dans 4Ω @ 10% THD – 1,3W max
- 3,3V dans 4Ω @ 1% THD – 1,0W max
- 5V dans 8Ω @ 10% THD – 1.8W max
- 5V dans 8Ω @ 1% THD – 1.4W max
- 3,3V dans 8Ω @ 10% THD – 0,8W max
- 3,3V dans 8Ω @ 1% THD – 0,6W max
Alimentation
Il s’agit de l’alimentation de l’amplificateur et de la logique de l’amplificateur. Vous pouvez alimenter entre 2,5V et 5,5V. Notez qu’à 5V, vous pouvez fournir jusqu’à 2,8W dans votre haut-parleur, alors assurez-vous que votre alimentation peut fournir au moins 650mA et il vaut mieux prévoir une alimentation spécifiée pour au moins 800mA afin d’avoir un peu de marge.
Si vous disposez d’un appareil qui fournit des signaux logiques de 3,3 V, vous pouvez quand même alimenter l’amplificateur en 5 V. C’est d’ailleurs ce que je fais dans mon application pour obtenir la plus grande puissance possible !
Pins I2S
Trois broches sont utilisées pour recevoir les données audio. Elles peuvent recevoir des signaux logiques de 3,3 à 5 V.
- LRC (Left/Right Clock) – c’est la broche qui indique à l’amplificateur quand les données sont pour le canal gauche et quand elles sont pour le canal droit.
- BCLK (Bit Clock) – C’est la broche qui indique à l’amplificateur quand lire les données sur la broche de données.
- DIN (Data In) – C’est la broche qui reçoit les données réelles, les données gauche et droite sont envoyées sur cette broche, la broche LRC indique quand la gauche ou la droite est transmise.
- Notez que cet amplificateur ne nécessite pas de broche MCLK, si vous avez une sortie MCLK, vous pouvez la laisser déconnectée !
Autres broches
Les autres réglages sont gérés par les broches GAIN et SD
Gain
GAIN c’est… le réglage du gain. Vous pouvez avoir un gain de 3dB, 6dB, 9dB, 12dB ou 15dB.
- 15dB si une résistance de 100K est connectée entre GAIN et GND
- 12dB si le GAIN est connecté directement à GND
- 9dB si GAIN n’est connecté à rien (c’est la valeur par défaut)
- 6dB si GAIN est connecté directement à Vin
- 3dB si une résistance de 100K est connectée entre GAIN et Vin
De cette façon, le gain par défaut est de 9dB mais vous pouvez facilement le changer en modifiant la connexion à la broche GAIN. Notez qu’il peut être nécessaire d’effectuer une réinitialisation de l’alimentation pour ajuster le gain. Sur mon montage j’ai relié GAIN à la masse pour avoir un gain de 9dB
SD / MODE
Cette broche est utilisée pour le mode Shutdown (Silencieux) mais elle est également utilisée pour définir le canal de sortie. C’est un peu déroutant, mais en gros, ça se passe comme ça :
- Si SD est connectée directement à la masse (tension inférieure à 0,16V), l’ampli s’éteint.
- Si la tension sur SD est comprise entre 0,16V et 0,77V, la sortie est (gauche + droite)/2, c’est-à-dire un signal mono qui représente la somme des deux canaux stéréo..
- Si la tension sur le SD est comprise entre 0,77V et 1,4V, la sortie est uniquement le canal droit.
- Si la tension sur SD est supérieure à 1,4V, la sortie est uniquement le canal gauche.
La broche SD est reliée à la masse par une résistance interne de pulldown de 100KΩ, vous devez donc utiliser une résistance de pullup sur SD pour équilibrer le pulldown interne de 100KΩ.
Sur la carte breakout, il y a une résistance de 1MΩ entre SD et Vin qui, lorsqu’elle est alimentée par 5V, vous donnera la sortie « moyenne stéréo ». Si vous voulez le canal gauche ou droit seulement, ou si vous alimentez à partir d’une alimentation autre que 5V, vous devrez peut-être expérimenter avec différentes résistances pour obtenir la tension désirée sur SD. ( ça se calcule…)
Câblage du projet
On va passer à la partie matérielle du projet avec le câblage de l’ampli sur la carte Maker Pi Pico. Pour ma part ce sont des fils Dupont qui font les liaisons.
Le bouton 1 permet de passer à la chanson suivante, le 2 baisse le volume, le 3 augmente le volume (de 0 à 10). Il n’y a que 3 fils pour le bus I2S, plus deux pour l’alimentation et un pour le gain. Les connexions sont les suivantes :
Amplificateur | Maker Pi Pico |
Vin | VBUS |
GND | GND |
GAIN | GND |
DIN | GP2 |
BCLK | GP0 |
LRC | GP1 |
Préparer les .mp3
Les .mp3 répondent à la demande de julien : il faut des fichiers MONO, 16bits à 22050 Hz de fréquence d’échantillonnage. Les essais que j’ai faits montrent qu’avec ces critères et un débit de 128Kbits/s on obtient un son « correct ». Bon, c’est sûr avec ces paramètres, on n’a pas une qualité audiophile, mais pour l’application envisagée, c’était bien suffisant.
Avec Audacity
Dans Audacity, ouvrez votre fichier stéréo
Pistes > Mix > Mix stéréo vers mono
Audacity fait la somme des signaux gauche et droit
Vous pouvez normaliser (ou pas) l’audio pour avoir un son toujours à peu près constant
> Exporter l’audio
>Export to computer
Débit 128 Kb/s
> Échantillonnage à 22050 Hz
> Exporter
Avec ces valeurs le .mp3 est lu par le programme. Je n’ai pas testé d’autres combinaisons. I existe un mode « macro » sur Audacity mais apparemment on ne peut pas encore paramétrer la fréquence d’échantillonnage. Pour la modif en batch j’ai opté pour ffmpeg.
Avec ffmpeg
Après avoir cherché qques tutoriels j’en ai trouvé un qui transforme les .mp3 en .wav mono à 22050 Hz , puis un autre qui transforme mes .wav en .mp3. Ça fonctionne. Je n’ai pas été plus loin, on peut sans doute faire la manip en une seule fois, je vous laisse vous amuser avec ça 😛
Conversion mp3 => wav
for i in *.mp3; do ffmpeg -i « $i » -acodec pcm_s16le -ac 1 -ar 22050 « ${i%.mp3}-encoded.wav »; done
Conversion Wav => mp3
for i in *.wav; do ffmpeg -i « $i » -ac 1 -ar 22050 « ${i%.mp3}-pico.mp3 »; done
Circuit Python
Une autre demande, c’était d’utiliser Circuit Python pour réaliser le player. Circuit Python est basé sur Python et destiné à la programmation des microcontrôleurs. C’est le langage choisi par Adafruit. Il en existe des versions pour le PICO et le Raspberry Pi, mais aussi pour de nombreuses autres cartes. Vous trouverez ces versions sur cette page qui les regroupe.
Programme en circuit Python
Le code Circuit Python
Programme code.py que vous pouvez télécharger en cliquant sur ce lien.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
import board import digitalio import busio import storage import audiomp3 import audiobusio import sdcardio import os import time import neopixel from audiomixer import Mixer # Boutons de la Maker Pi Pico et LED de PICO led = digitalio.DigitalInOut(board.LED) led.direction = digitalio.Direction.OUTPUT # Eteindre la LED du PICO led.value = False # Bouton 1 = GP20 = Musique suivante button1 = digitalio.DigitalInOut(board.GP20) button1.direction = digitalio.Direction.INPUT # Bouton 2 = GP21 = Volime - button2 = digitalio.DigitalInOut(board.GP21) button2.direction = digitalio.Direction.INPUT # Bouton 3 = GP22 = Volime + button3 = digitalio.DigitalInOut(board.GP22) button3.direction = digitalio.Direction.INPUT # Déclaration de la LED NeoPixel pixel_pin = board.GP28 num_pixels = 1 pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.2, auto_write=False) # Couleurs pour NeoPixel RED = (255, 0, 0) YELLOW = (255, 150, 0) GREEN = (0, 255, 0) DARK_GREEN = (0, 100, 0) CYAN = (0, 255, 255) BLUE = (0, 0, 255) PURPLE = (180, 0, 255) WHITE = (50, 50, 50) BLACK = (0, 0, 0) # Gestion de la carte SD spi = busio.SPI(board.GP10, MOSI = board.GP11, MISO = board.GP12) cs = board.GP15 sd = sdcardio.SDCard(spi, cs) # Monter la carte SD dans le système de fichiers vfs = storage.VfsFat(sd) storage.mount(vfs, '/sd') # Liste des fichiers print (os.listdir("/sd")) # Garder les fichiers .mp3 mp3files = sorted("/sd/" + filename for filename in os.listdir("/sd") if filename.lower().endswith("mp3")) time.sleep(1) # Volume de sortie (Réglable de 0 à 10) # Utliser des valeurs entières pour éviter les erreurs d'approximation volume = 2 # Liste des fichiers triés print("La liste contient ", len(mp3files), "fichiers") print(mp3files) # Créer instance i2s i2s = audiobusio.I2SOut(board.GP0, board.GP1, board.GP2) def play_sound(filename): global volume # Ouvrir fichier .mp3 et l'envoyer au décodeur mp3_filename = f"{filename}" mp3 = open(mp3_filename, "rb") mp3_decoder = audiomp3.MP3Decoder(mp3) # Configurer le mixer mixer = Mixer(voice_count=1, sample_rate=mp3_decoder.sample_rate, channel_count=mp3_decoder.channel_count, bits_per_sample=16, samples_signed=True) mixer.voice[0].level = volume/10 # Volume initial (Réglable de 0.0 à 1.0) # Attacher le mixer à la sortie i2s i2s.play(mixer) # Jouer le fichier mp3 sur la voie 0 du mixer mixer.voice[0].play(mp3_decoder) while mixer.playing: # Arrêter le morceau en cours Bouton 1 = GP20 # Arrête le morceau en cours et passe au suivant if button1.value == False: print("Stop", filename, "\n\r") mixer.stop_voice() mp3.close() # Baisser le volume Bouton 2 = GP21 if button2.value == False: if volume > 0: volume = volume - 1 print("Volume - : ", volume, "\n\r") mixer.voice[0].level = volume/10 # Le sleep(0.5) sert de debounce time.sleep(0.5) else: pass #Augmenter le volume Bouton 3 = GP22 if button3.value == False: if volume < 10: volume = volume + 1 print("Volume + : ", volume, "\n\r") mixer.voice[0].level = volume/10 # Le sleep(0.5) sert de debounce time.sleep(0.5) else: pass if __name__ == '__main__': while True: # Lire les fichiers de la liste for musique in mp3files: # Allumer les LEDs led.value = True pixels.fill(DARK_GREEN) pixels.show() print("Playing : ", musique) play_sound(musique) # Eteindre les LEDs led.value = False pixels.fill(BLACK) pixels.show() time.sleep(1) |
Il y a pas mal de commentaires dans le programme cela devrait vous guider si vous voulez le modifier. Comme je dis souvent « C’est un programme de Maker ! » Qu’est ce que ça veut dire ? Que l’appli fonctionne mais que c’est codé « avec les pieds ». On peut certainement faire mieux, alors n’hésitez pas à améliorer le programme, je publierai vos versions ci-dessous !
Comment ça marche
Avec Circuit Python il faut créer un dossier vide appelé /sd à la racine du PICO. C’est ce dossier qui servira au montage de la carte SD. J’ai formaté la carte SD « à blanc » avec SD formater pour être certain qu’elle soit propre. C’est un modèle Samsung 8Go.
Lorsqu’on connecte le lecteur (on branche la prise USB sur le PICO), le lecteur monte la carte SD, fait la liste des fichiers .mp3 présents sur la carte puis les joue 1 par 1. Si vous êtes connecté(e) avec Thonny par exemple, des messages dans la console permettent de suivre ce qui se passe.
Lorsqu’un fichier est en cours la LED du PICO est allumée et la LED de la MakerPiPico est allumée en vert. Le bouton 1 permet de passer à la plage .mp3 suivante et les boutons 2 et 3 règlent le volume en 10 niveaux (de 0 à 10, avec 0 = son coupé)
Je n’ai pas mis d’anti rebond sur les boutons, juste une tempo de 0,5 sec qui suffit sur ce genre d’appli sauf si vous tapez sur les boutons comme un forcené ! Sans cette tempo et avec la boucle, le volume passe de 0 à 10 et de 10 à 0 trop vite ! Là aussi si vous voulez vous amusez le code est fourni en CC BY NC SA et vous en faites ce que vous voulez !
Une démo du lecteur MP3 en vidéo
Désolé, je ne peux pas mettre le fichier sur Youtube car les qques secondes de musique font que la vidéo est BLOQUÉE ! allez faire des essais dans ces conditions !
La vidéo est disponible ici :
https://drive.google.com/file/d/182sbeBFPUy1ADY30CMNx4cs8Kra6oSir/view?usp=sharing
Vous entendez 2 fois le même morceau au changement de mp3 car j avais les 2 versions faites avec Audacity et ffmpeg pour comparer.
Conclusion
Cette collaboration distante avec Julien m’a permis de découvrir une utilisation du Raspberry Pi PICO que je n’avais pas encore abordée. Quelques problèmes à résoudre pour faire fonctionner tout ça ensemble mais ça pourra resservir quand il faudra attaquer un ampli directement depuis un Raspberry Pi PICO.
Je pense à Vador qui tourne actuellement sur Raspberry Pi Zero 2 W mais qui pourrait se voir doter dans une prochaine version d’un simple PICO à 5€ !
Sources
https://www.adafruit.com/product/3006
https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp
https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/assembly
Conversion mp3 avec ffmpeg
https://gist.github.com/whizkydee/804d7e290f46c73f55a84db8a8936d74
Sympathique et pas trop cher à réaliser. Merci
merci ! ça peut être sympa pour des ateliers ados => comprendre comment ça fonctionne 🙂
Merci Francois pour cet article.
Cela peux fonctionner sous micropython également, même si cela reste encore ‘expérimental’ pour ceux intéressé je vous conseil github.com/miketeachman/micropython-i2s-examples
Cordialement
merci Sophie 🙂