Electronique > Réalisations > Lecteur audio 002

Dernière mise à jour : 06/08/2015

Projet en cours de développement, volontairement non référencé dans les sommaires du site


Présentation

Ce lecteur audio permet de déclencher un ou plusieurs sons à la demande (un seul à la fois), via par exemple un bouton poussoir, un relais ou transistor, ou pourquoi pas une LDR qui agit quand la nuit tombe ou quand le jour se lève. L'ensemble est basé sur l'emploi d'un microcontrôleur PIC associé à une mémoire flash EEPROM externe pour le stockage du ou des fichiers son à faire jouer. Ce lecteur peut lire les fichiers audio monophoniques au format WAV 8 bits non signé (unsigned) avec une fréquence d'échantillonnage de 8 kHz (bande passante max 4 kHz), les autres formats audio ne peuvent pas être lus. Il va de soi que ce système n'est pas fait pour restituer des sons de haute qualité et que son objectif premier est plutôt de délivrer des sons "simples" (bruitages par exemple). Un lecteur audio de même type mais capable de lire des fichiers son échantillonnés à 22 kHz a également vu le jour, voir page Lecteur audio 006. Pour un sujet ayant trait à la lecture de fichiers son à partir d'une carte SD, merci de vous reporter au Lecteur audio 001 ou encore au Lecteur audio 004.

Avertissements

- Le circuit ne peut jouer qu'un seul son à la fois.
- La résolution n'est que de 8 bits et la fréquence d'échantillonnage ne peut dépasser 8 kHz. Cela suffit pour jouer des sons style bruitage (explosion, aboiement de chien, etc) ou des voix humaines (annonce, alarme, etc), mais ce n'est pas du tout adapté pour de la musique hifi !
- Le chargement (stockage) des sons dans la mémoire EEPROM se fait avec un logiciel dédié (logiciel gratuit à venir sur mon site) via une liaison RS232 classique. Si votre ordinateur ne dispose pas de port natif RS232, il est possible d'utiliser un adaptateur USB/RS232. Le logiciel permet également de construire un fichier "brut" qui peut être transféré dans l'EEPROM via le programmateur de votre choix.

Schéma

-

lecteur_audio_002

Pourquoi utiliser une mémoire externe ?
Certains microcontrôleurs offrent une capacité de mémoire flash importante, que l'on pourrait utiliser pour stocker un son. Mais qu'appelle-t-on capacité importante ? 4 KO ou 8 KO ? Il est vrai que 8 KO pevent suffire pour stocker pas mal d'infos utilisateurs, mais cela reste tout de même un peu étroit pour stocker un son, même si ce dernier est mono, quantifié sur 8 bits et joué avec une fréquence d'échantillonnage de 8 kHz. Un rapide calcul montre qu'avec 8 KO de mémoire, la durée max d'un tel fichier audio serait de 1 s ! Avec une fréquence d'échantillonnage de 32 kHz (bande passante 15 KHz), la durée max serait de 250 ms ! Un peu limite, non ? La solution réside bel et bien dans l'emploi d'une unité de stockage externe tel qu'un disque dur, une mémoire flash externe, une clé USB ou une carte SD ou MMC.
- Disque dur ? Un peu trop gros pour moi.
- Clé USB ? Ca viendra...
- Carte SD ? Déjà fait : Lecteur audio 001 et Lecteur audio 004.
- Mémoire EEPROM externe ? pourquoi pas... Et hop !

Principe général de fonctionnement
Le principe du lecteur audio 002 consiste à stocker un ou plusieurs sons dans une mémoire EEPROM externe I2C ou SPI qui est reliée au microcontrôleur via une liaison... I2C ou SPI. Le remplissage de la mémoire avec les échantillons sonores se fait grâce à un logiciel dédié (spécifique) mais peut aussi être assurée avec un  programmateur. Mon intention de départ était de permettre le chargement aisé des sons avec une simple liaison série RS232. Une foix les échantillons disposés dans la mémoire EEPROM, ils peuvent être lus à la demande, les uns après les autres, et sont convertis en analogique avant d'être amplifiés et conduits vers un petit haut-parleur. Dans le principe, tout cela est fort simple.

Choix de la mémoire
Il existe tellement de références de mémoires qu'on pourrait presque s'y perdre. Après quelques recherches et lecture de nombreuses feuilles de caractéritiques (datasheet), j'ai opté pour une mémoire qui répondait aux impératifs de taille, de vitesse et de tension d'alimentation que je me suis fixé plus ou moins arbitrairement (durée de stockage de quelques secondes, vitesse du bus I2C ou SPI de 400 kHz ou 1 MHz et alimentation 5 V). Après avoir essayé une mémoire I2C 24FC512 (512 Kb, soit 64 KO) j'ai finalement retenu une mémoire SPI de 1 Mb (soit 128 KO) de type 25AA1024 (type de mémoire SPI également utilisé dans mon lecteur audio 006).

Transfert des échantillons sonores
Comme dit auparavant, le stockage des échantillons sonores dans la mémoire EEPROM se fait via un PC, grâce à une liaison série RS232. Bien que non impératif, l'usage d'un MAX232 (ou équivalent) pour assurer l'interfaçage TTL (côté microcontrôleur) / RS232 (côté liaison série PC) simplifie bien les choses. Il faut toutefois reconnaitre qu'il est tout aussi facile d'ajouter directement un adaptateur USB/RS232 qu'on trouve à un prix dérisoire.

Prototype

Pour l'instant ce circuit a été uniquement simulé sous Proteus, avec succès.

Logiciel du PIC

Code source (format MikroPascal Pro V5.30) et fichier binaire compilé *.hex disponible dans l'archive suivante.
Code non disponible 
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Non réalisé.

Historique

06/08/2015
- Première mise à disposition.