Electronique > Réalisations > Lecteur audio 002

Dernière mise à jour : 26/11/2011

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


Présentation

Ce lecteur audio est un circuit qui permet de déclancher un ou plusieurs sons à la demande, 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 16 kHz (bande passante max 8 kHz), les autres formats ne peuvent pas être lus. Pour lecture à partir d'une carte SD, merci de vous reporter au lecteur audio 001.

Avertissements

- Pour le moment, le circuit ne peut jouer qu'un seul son.
- La résolution n'est que de 8 bits et la fréquence d'échantillonnage ne peut dépasser 16 kHz. Cela convient souvent 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 doit obligatoirement se faire avec un logiciel spécial fournit gratuitement sur mon site (à venir), via une liaison RS232 classique (si votre ordinateur ne dispose pas de port RS232, il est possible d'utiliser un adaptateur USB/RS232).

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'appellle-t-on capacité importante ? 4 KO ou 8 KO ? Vrai que c'est beaucoup pour stocker des infos utilisateurs, mais ça reste tout de même faible pour stocker un son, même si ce dernier est mono, quantifié sur 8 bits et joué avec une fréquence d'échantillonnage de 32 kHz. Un rapide calcul montre qu'avec 8 KO de mémoire, la durée max du fichier audio serait de 250 ms ! On peut bien sûr réduire la fréquence d'échantillonnage et se contenter d'une lecture à 16 kHz (pour une bande passante d'environ 8 kHz), mais on ne dépasserait pas dans ce cas 500 ms de durée de stockage audio. Toujours un peu faible, 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 ? Je ne maîtrise pas encore l'USB. Mais ça viendra...
- Mémoire EEPROM externe ? Je ne connaissais pas et j'ai décidé de m'y mettre !
- Carte SD ? Je commence à maîtriser - exemple.

Principe général de fonctionnement
Il consiste à stocker un ou plusieurs sons dans la mémoire EEPROM qui est reliée au microcontrôleur via une liaison I2C. Le remplissage de la mémoire avec les échantillons sonores se fait grâce à un logiciel spécifique disponible sur ce site (à venir) mais peut aussi être assurée avec le matériel de votre choix si vous en disposez. Le but est 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.

Choix de la mémoire
Il existe un certain nombre de mémoires qui peuvent être utilisées ici, celle que j'ai choisie répond aux impératifs de taille, de vitesse et de tension d'alimentation que je m'étais fixés, à savoir respectivement 512 K ou 1 M (soit 64 KO ou 128 KO, pour stocker un fichier son de quelques secondes), vitesse lecture 400 kHz ou 1 MHz et alimentation 5 V. J'ai opté pour la 24FC512 qui devra de préférence être commandée avec le suffixe "I/P", à moins que vous ne soyez très à l'aise avec les CMS (24FC512 = boîtier SOIC, 24FC512-I/P = boîtier DIP).

Transfert des échantillons sonores
Comme dit auparavant, le stockage des échantillons sonores dans la mémoire EEPROM se fait via un PC, au travers d'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, c'est pourquoi je ne me suis pas trop cassé la tête.


Logiciel du PIC

Code source (format MikroPascal Pro V5.30) et fichier binaire compilé *.hex disponible dans l'archive suivante.
Non dispo pour le moment
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é.