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
-

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é.