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