Dernière mise à jour :
02/10/2015
Projet
en cours de
développement, volontairement non référencé dans les sommaires du site
Présentation
Ce lecteur audio, très proche du
lecteur
audio 002, permet
de déclencher à la demande un son parmi plusieurs, via des fils de
commandes eux-mêmes raccordés à des boutons-poussoirs, relais
ou
transistors. L'ensemble est basé sur l'emploi d'un
microcontrôleur PIC associé à une mémoire flash EEPROM externe où sont
stockés les 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 22 kHz (bande passante max 10
kHz), les autres
formats de fichiers audio ne peuvent pas être lus. Trois systèmes sont
proposés :
-
version 006
: avec PIC 18F2520, commande de 6 sons, mémoire 1 Mb ou 4 Mb (durée
totale max = 5,95 sec ou 23,8 sec)
-
version 006b
: avec PIC 18F26K22, commande de 6 sons, mémoire 2 Mb ou 8 Mb (durée
totale max = 11,9 sec ou 47,5 sec)
-
version 006c
: avec PIC 18F46K22, commande de 10 sons, mémoire 4 Mb ou 16
Mb (durée totale max = 23,8 sec ou 95,1 sec)
Les trois versions sont capables de stocker et relire
les sons depuis une ou plusieurs mémoires non amovibles
(EEProm externes) soudées sur circuit imprimé pour des
raisons de fiabilité mécanique. Bien entendu la capacité de stockage
des sons est bien plus réduite que si on utilisait un support amovible
(carte SD ou clé USB),
mais cela ne pose pas de problème pour la lecture de sons de courte
durée.
Cahier des charges
Le circuit a été développé sur demande et devait répondre aux
critères suivants :
- possibilité de lire un son parmi 6, chacun ayant une durée
de une seconde maximum.
- possibilité de lire chaque son en boucle, de manière continue et sans
interruption.
- format des sons : Mono / 8 bits / 22 kHz (et non pas 8 kHz comme pour
le lecteur audio 002).
-
utilisation de mémoires soudées (EEPROM) pour stocker et relire les
sons (système utilisé en conditions sévères, support mémoire avec
contacts électriques - type carte SD ou clé USB - non
autorisé).
- transfert des sons dans la mémoire via une liaison RS232 (ou
adaptateur
USB/RS232) avec un logiciel spécifique (développé pour l'occasion).
Seules les versions 006b et 006c sont retenues.
Schéma 006 - avec PIC 18F2520
Le système repose sur un PIC 18F2520 pour gérer l'écriture et la
lecture de la mémoire externe SPI, modèle 25AA1024 (1 Mb) ou AT25F4096
(4 Mb).
Principe général de fonctionnement
Il consiste à stocker un
ou plusieurs sons dans une mémoire EEPROM externe reliée au
microcontrôleur via une liaison SPI. Le remplissage de la
mémoire avec
les fichiers son se fait grâce à un logiciel spécifique (
AudioPlayerLoader).
Une foix
les échantillons enregistrés dans la mémoire EEPROM externe, ils
peuvent être lus
à la demande après conversion en analogique
et amplification.
Choix de la mémoire
Il
existe un certain nombre de mémoires I2C ou SPI qui peuvent être
utilisées ici,
celle que j'ai choisie répond aux impératifs du cahier des charges. Il
fallait en effet disposer d'au moins 6 secondes de son (6 sons de 1
seconde max chaque), tout en ayant la possibilité d'étendre la capacité
pour d'éventuelles évolutions. Une mémoire de 1 Mb permet de stocker un
peu moins de 6 secondes de son mono / 8 bits / 22 kHz, c'est
pourquoi j'ai prévu une mémoire 25AA1024 de 1 Mb (2 x 1 Mb
= 256 kO) qui peut être directement remplacée par une mémoire
AT25F2048 de 2 Mb (11,8 sec) ou AT25F4096 de 4 Mb (23,8 sec).
Transfert des échantillons sonores dans la ou les mémoires
Le transfert pour stockage des échantillons
sonores dans la ou les mémoires
EEPROM externes nécessite l'emploi d'une application spécifique Win32
pour PC. Le transfert s'effectue grâce à une liaison série RS232.
L'application qui assure le transfert (
AudioPlayerLoader)
permet de choisir les fichiers à transférer
et se charge de la vérification du format des fichiers audio
sélectionnés et de leur taille. Le transfert ne peut pas
démarrer si la taille totale requise pour l'ensemble des
fichiers
sélectionnés dépasse la capacité mémoire détectée par le logiciel (1
Mb, 2 Mb, 4 Mb, 8 Mb ou 16 Mb).
D'un
point de vue électrique, l'interfaçage TTL/RS232 peut être
réalisé
par un classique MAX232 (choix
visible sur le schéma proposé) ou via une
interface FTDI RS232/USB. Pour une vitesse d'écriture maximale
dans les mémoires EEProm, les échantillons sont
sauvegardés par
paquets de
256 octets, valeur qui correspond à une "page" de mémoire. Le
temps du cycle d'écriture de 6 ms (propre au type de mémoire
utilisée) s'applique ainsi à chaque paquet de 256
échantillons et non à chaque octet, ce
qui permet d'accélérer le processus d'écriture. Le
temps de transfert total via la liaison série reste toutefois
relativement long, la
plus grosse "perte de temps" est liée au débit du port série et au
protocole de transfert utilisé qui "gonfle" la quantité de données à
transmettre pour des questions de fiabilité (encapsulation et CRC) :
- UART (57,600 kbps) : environ 47 ms par paquet de 256 octets
transférés (avec accusé de réception)
- Mémoire : environ 8 ms par paquet de 256 octets stockés (1,6 ms + 6
ms)
- soit environ 55 ms par paquet de 256 octets; pour 131072 octets (1
Mb) : 131072 / 256 * 0.055 = 28 secondes
Avec
une vitesse de transfert du port série de 115200 kbps, le temps requis
est réduit à 17 secondes (39 ms par paquet de 256 octets).
C'est
le logiciel spécifique qui
indique au PIC le nombre de fichiers son et leur durée, ainsi que
leur emplacement mémoire. Ces informations sont stockées dans
la mémoire EEProm du PIC lui-même. Par exemple :
- Son #1 - Début à l'adresse $000000, longueur 22000
échantillons (durée 1 seconde)
- Son #2 - Début à l'adresse $004E21, longueur 11000
échantillons (durée 0,5 seconde)
- Son #3 - Début à l'adresse $0080E9, longueur 2200 échantillons (durée
0,1 seconde)
- etc
La procédure de communication PIC/PC est la suivante, considérant que
la liaison est établie entre PIC et PC :
1 - Le logiciel PC interroge le PIC pour connaître le nombre de
mémoires externes installées et leur taille.
2
- Les fichiers audio sélectionnés sont envoyés les uns après
les
autres par le logiciel PC, selon un protocole qui
optimise la
durée d'écriture en EEProm. Un accusé de réception est envoyée par le
PIC après réception de chaque paquet de 256 échantillons audio. Si une
erreur a été détectée durant la transmission d'un paquet, celui-ci est
retransmis (3 tentatives max).
3
- Après transfert des fichiers, et si l'utilisateur l'a souhaité, le
PIC démarre la lecture des fichiers audio transférés, pour contrôle
auditif immédiat.
Exemple de transfert
d'un fichier son (durée environ une seconde) suivi de sa lecture
Zoom sur transfert de
256 échantillons sonores en plusieurs paquets
Lecture (restitution) des échantillons sonores
La
lecture des échantillons sonores depuis la mémoire EEProm s'effectue en
temps réel : une fois lus, ces
derniers sont mis en attente dans une mémoire
tampon avant d'être transmis en temps voulu - grâce aux interruptions
d'un Timer - aux 8 lignes du port B du PIC. Les interruptions ont lieu
toutes les 45.5 us (une fréquence
d'échantillonnage de 22 kHz correspond à une période de 45,45
us). Les échantillons
numérisés lus et placés sur les 8 lignes du port B sont convertis en
analogique au moyen d'un réseau R/2R constitué de résistances
classiques (cas du schéma proposé), ou au moyen d'un convertisseur DAC
8 bits parallèle. La lecture d'un échantillon sonore dans la mémoire
EEProm externe nécessite 26 us (traitement de 5 octets et horloge SPI à
2,5 MHz), il reste donc assez de temps pour le reste du
travail
sans qu'il y ait besoin de mettre en place un buffer circulaire.
Remarque :
les
fichiers son au format Wave comportent un entête (header) qui indique
le format du fichier son (quantification, fréquence échantillonnage,
mono ou stéréo, etc), cette entête est supprimée avant le transfert des
sons dans la mémoire en vue d'économie de place.
Schéma 006b - avec PIC 18F26K22
Le schéma est dans sa base identique au précédent, le PIC n'est pas le
même et une mémoire externe SPI a été ajoutée.
Le changement de PIC est lié à plusieurs raisons, les deux principales
sont :
- vitesse oscillateur limitée à 64 MHz pour le
18F2xK22 contre 40 MHz pour le 18F2520;
- prix du 18F2xK22 moins élevé.
La
vitesse est limitée à 48 MHz pour permettre une meilleur fiabilité
aux hautes températures d'utilisation. Comme la fréquence de
l'oscillateur interne est limitée à des valeurs fixes (8 MHz et 16 MHz
sans PLL dans les hautes valeurs), l'utilisation d'un quartz externe
(ou résonnateur céramique) de 12 MHz est nécessaire. Avec la
PLL activée, la fréquence "de base" est de 48 MHz (12 MHz * 4). La
lecture d'un échantillon sonore dans les mémoires EEProm externes
nécessite maintenant 21 us (traitement de 5 octets et horloge SPI à 3
MHz), on a gagné quelques us.
Programmation du PIC
La programmation du PIC peut être assurée en ICSP en suivant le câblage
qui suit.
Le
fait que les broches PGD et PGC soient utilisées comme sorties (D6 et
D7 pour les échantillons audio) ne pose pas de problème, les
résistances R4 et R5 de 20 kO du réseau R/2R assurent l'isolation
requise. Si un DAC
externe est utilisé en remplacement du réseau R2/R, il faut conserver
les résistances R4 et R5 dont la valeur sera alors de 10 kO. La
résistance RP porte la broche MCLR à l'état haut et la diode DP empêche
la tension de programmation issue du programmateur de remonter dans la
ligne d'alimentation positive du lecteur audio (que le PIC soit
alimenté avec sa propre alim ou via la ligne VDD du programmateur).
Schéma 006c - avec PIC 18F46K22
Schéma élaboré pour commande de 10 sons, mémoire 16 Mbits (durée
totale 95 secondes).
-
Elaboration des fichiers audio
Problème d'entête (header) des fichiers WAV ? Voir page
AudioPlayerLoader.
Prototype
Prototype en cours de réalisation. Simulation système 006b effectuée
avec succès avec mémoire 25AA1024 et AT25F4096.
Logiciel du PIC
Projet pro, code non disponible sur
ce site.
Circuit imprimé
Non réalisé.
Historique
02/10/2015
- Première mise à disposition.