Utilisation des modules sonores SOMO


Les modules sonores SOMO du fabricant australien 4D-Systems sont tout simplement géniaux, extraordinaires.

Sound module SOMO

De la taille d'un timbre poste, ils sont capables de restituer des plages (pistes) musicales contenues sur une carte micro-SD.
Les pistes peuvent être dans un seul répertoire, ou dans des répertoires séparés. Il peut y avoir 99 répertoires, chacun contenant 99 pistes !
Bien sur, les pistes musicales doivent être copiées sur la carte mémoire avant usage, le SOMO n'ayant pas de possibilité d'écriture sur la carte, c'est uniquement un lecteur.

Le format des pistes peut être le standard MP-3 mais aussi en format WAV, de qualité CD si on le souhaite.

Ces modules sont bien sur stéréo, et donnent un son tout à fait incroyable.

La première version de ces modules était seulement mono, et ils utilisaient un format de pistes musicales assez dégradé après conversion dans un format de fichiers spécifiques.
Ils ont été utilisés dans le simulateur radio sous l'occupation, construction réalisée en 2012.

Mais cette seconde version, le SOMO-II, est de bien meilleure qualité et a été utilisée avec succès dans la réalisation d'un sélecteur audio / zoneur ainsi que dans ces réalisations-ci (pas encore en ligne, cela viendra).

Avec ces différentes réalisations, il a été possible d'acquérir une certaine expérience avec ces modules, et sur cette page vous trouverez des conseils pratiques et astuces d'utilisation.

Le site de 4D-Systems donne de l'information sur ces modules et la dernière version de la datasheet peut y être téléchargée, elle sera utile pour le brochage de ce composant et les informations pratiques et mises à jour.
Une copie de la datasheet (révision 1.4) utilisée pour les réalisations décrites sur ce site est disponible sur ce site en téléchargement ici

Clic sur les images pour agrandir.



Sound module SOMO

Ci-contre la représentation schématique d'un de ces modules, avec les quelques broches qui vont être utilisées pour les explications.

Tout d'abord, il faut alimenter ces modules.

Le fabricant donne une gamme de tensions d'alimentation comprise entre 3,3V et 5V.

Comme la logique de commande des montages réalisés est en 5V, le choix a été fait d'une tension intermédiaire pour le module, afin de limiter la dissipation du régulateur intégré.

Mais cette tension de 4,3V est compatible sans probème avec de la logique sous 5V, et cela va être vu ci-dessous.

Toutefois cette alimentation doit être découplée avec des condensateurs montés au plus près du module. Il est fait usage de deux condensateurs en parallèle : un 470µF électrolytique, et un 47nF céramique.

Les deux broches de masse du SOMO doivent être connectées ensemble.

Sound module SOMO

Les tensions d'alimentations peuvent être générées très simplement.

Le module SOMO gagne a être alimenté par un régulateur séparé, celui-ci ne chauffe absolument pas vu la faible consommation du module. C'est le LM317 du schéma ci-contre, et avec les valeurs des deux résistances mentionnées, sa sortie vaut 4,3V.

La logique de commande aura son régulateur de tension séparé, ici un 7805 pour exemple possible.

Sound module SOMO

Le SOMO étant un module sonore, il est logique qu'on puisse y connecter de quoi entendre ce qui en sort...

Le module possède une sortie pour haut-parleur (broches SPK+ et SPK-), en connexion directe. Ici, bien sur, la restitution est mono mais cela permet une pré-écoute. Le module est capable de sortir une puissance de 3W d'après le fabricant. On peut connecter un haut-parleur dont l'impédance est comprise entre 4 et 32Ω.

Les broches DAC_L et DAC_R permettent la connexion des sorties audio gauche (L) et droite (R) à un amplificateur audio ou à un casque (mais dont l'impédance nominale n'est pas précisée).

Ces sorties devront être préamplifiées et filtrées, voir en fin de cette page...

Malheureusement, la notice du module ne précise pas les niveaux de sortie possibles, ni l'impédance de ces sorties. Il faudra expérimenter pour obtenir le meilleur signal possible.

Mais voyons d'abord comment commander le module.

Sound module SOMO

Maintenant que le module est alimenté et connecté à un haut-parleur ou un système audio, il est temps de le faire fonctionner !

Ces modules peuvent être pilotés par un microcontrôleur via une ligne série, ou par des boutons poussoirs + résistances. C'est ce second mode qui va être utilisé ici, pour éviter l'usage d'un processeur et avoir une commande très simple.

Le module possède deux entrées pour cela : ADKEY1 et ADKEY2. Ces deux entrées permettent une commande du module par insertion de résistances de différentes valeurs entre ces entrées et la masse. Chaque valeur de résistance correspond à une commande, voir ci-contre l'extrait de la datasheet.

Il y a également deux entrées nommées IO1 et IO2, elles ne fonctionnent pas par résistances. Elles permettent une commande directe du volume, ou encore des fonctions "next" et "pre" pour changer de pistes musicales lors de la lecture.

Sound module SOMO

Le volume (tant du haut parleur que des sorties audio stéréo) peut donc être commandé par deux entrées directes, sans résistances.

Ci-contre la commande VOL+ (IO1) est connectée sur un bouton poussoir.

Mais cette entrée peut aussi être utilisée comme commande NEXT, alors comment faire la différence entre les deux fonctions ?

Une courte impulsion sur le bouton poussoir réalise la fonction NEXT (bien sur si le module est en lecture).

Une longue impulsion fait augmenter graduellement le volume, relâcher le bouton stoppe la fonction.

Le fonctionnement est bien sur identique sur l'entrée VOL-/PRE (IO2).

Sound module SOMO

Mais doit-on se limiter à des boutons poussoirs pour la commande ?

Pour les entrées sans résistances IO1 et IO2, on peut simplement les commander en remplaçant le poussoir par un transistor NPN connecté comme ci-contre.

Ce transistor, utilisé en commutation, peut être piloté par une logique quelconque, via une résistance de base de quelques kΩ.

Le type de transistor est sans importance, un "universel" tel le BC547, 2N2222, 2SC945... ou autre petit signaux silicium, conviendra.

Sound module SOMO

Le SOMO possède une sortie "tout ou rien" indiquant qu'il est actif (lecture d'une piste musicale).

Cette sortie passe à un niveau logique bas quand le SOMO est actif.

Dès lors il est possible d'y connecter une LED pour indication de l'état actif, via un transistor PNP. Cette LED s'allumera quand le module est en lecture.

Une petite LED rouge est également présente sur le module et fonctionne de la même façon, s'allumant quand le module est actif.

Sound module SOMO

Si cette sortie est destinée à piloter quelque chose dans la logique de commande, alors il est possible de l'interfacer directement.

Une porte d'un 4093 (NAND à trigger de Schmitt) convient très bien pour cela, et donnera un signal bien net en sortie : ce signal passe à l'état 1 quand le module est actif.

Toutefois, avec tout ce qui vient d'être expliqué, le module n'est pas encore démarré !

Cela vient...

Sound module SOMO

Voila comment mettre en marche et lire les pistes musicales, les mettre en pause ou stopper la lecture.

L'entrée ADKEY1 est utilisée ici, ainsi que deux boutons poussoirs et deux résistances. Chaque poussoir sélectionne une résistance qui se retrouve entre l'entrée et la masse.

Pour démarer la lecture, c'est une résistance de 220kΩ qui est utilisée. Une impulsion sur S1 démarre la lecture. Une seconde impulsion mettra le lecteur en pause. Une nouvelle impulsion redémarrera la lecture là ou elle avait été arrêtée.

Une impulsion sur S2 stoppera la lecture en cours, avec une résistance de 100kΩ. Pour redémarrer, il faudra appuyer à nouveau sur S1 "play" et la lecture de la piste reprendra au début de celle-ci.

La fonction "play" lance la lecture des pistes présentes dans le répertoire principal de la carte mémoire, l'ordre dépendant de leur numérotation. Les pistes présentes dans des sous-répertoires de la carte mémoire ne sont pas lues par cette fonction.

D'expérience, et pour éviter des dysfonctionnements dans les ordres de lecture, il est préférable de nommer les pistes musicales uniquement avec des numéros plutôt qu'avec des noms de fichiers comportant des caractères alphabétiques.
Avec des numéros, l'ordre de lecture est certain !

Cela vaut aussi pour les noms de répertoires, ne mettre que des numéros : 01, 02, 03, etc...


Sound module SOMO

La fonction "play" décrite ci-dessus ne permet pas d'adresser directement des plages musicales, excepté la première (numériquement parlant du nom de fichier) du répertoire principal de la carte mémoire. Il est alors possible de passer aux pistes suivantes avec la fonction "next".

L'entrée de commande ADKEY2 permet une sélection directe de 8 plages musicales, toujours par commutation de résistances.

Il faut 7 résistances de valeurs bien déterminées, la 8e plage se choisissant en mettant directement l'entrée à la masse. Voir schéma ci-contre.

Une impulsion sur un des 8 boutons S1 à S8 permet de lancer la lecture d'une des 8 plages. Le bouton S9, ou le transistor T1, permettent de stopper la lecture via ADKEY1, comme indiqué ci-dessus.

Ici aussi, pour que cela fonctionne parfaitement, les pistes musicales doivent se trouver dans des répertoires bien spécifiques de la carte mémoire : les 5 premières dans le répertoire nommé 01, la 6e dans le répertoire nommé 02, la 7e dans le répertoire nommé 03 et la 8e dans le répertoire nommé 04.

On doit donc trouver 5 fichiers nommés 01, 02, 03, 04, 05 dans le répertoire nommé 01. Ensuite, un fichier nommé 01 dans le répertoire 02; pareil dans les répertoires 03 et 04.

A noter que les 8 boutons poussoirs utilisés ici (S1 à S8) ne peuvent pas être remplacés par des transistors NPN, comme les commandes "play" ou "stop" sur ADKEY1.
En dessous de valeurs de résistances de 100kΩ sur ADKEY1 ou 2, cela fonctionne fort mal avec des transistors bipolaires. L'essai avec des FET n'a pas été réalisé, possible que cela fonctionne !

Mais il est bien sur possible toutefois de sélectionner les pistes musicales par autre chose que des boutons poussoirs, explication ci-dessous...


Sound module SOMO

Si la sélection des pistes musicales fonctionne mal (voire pas du tout) avec des transistors bipolaires, par contre cela marche tès bien avec des commutateurs analogiques C-MOS ! Les types 4016, 4066, 4051 et 4052 se prêtent très bien à cet usage.

Ci-contre c'est un 4051 qui est utilisé : c'est un commutateur à 8 entrées et une sortie commune. La sélection de l'entrée commutée vers la sortie se fait par 3 bits de commande, représentés par A, B et C sur le schéma. La valeur binaire sur ces 3 entrées (A étant le bit de poids le plus faible) détermine l'entrée analogique qui sera commutée sur la sortie (table de vérité ci-dessous).

Toutefois, cette commutation n'aura lieu que si l'entrée INH est au niveau logique 0. Si cette entrée est à 1, aucune des 8 entrées n'est commutée sur la sortie.

Les 7 résistances de sélection de pistes sont bien sur connectées aux entrées du 4051 (la 8e entrée étant connectée à la masse).
Et pour que cela fonctionne parfaitement, la liaison commune de toutes les résistances vers la masse doit revenir "physiquement" à la connexion de masse du SOMO, tel que dessiné sur le schéma ci-dessus. Prendre cette masse "n'importe ou" sur le circuit peut donner des fonctionnements erratiques dans la sélection des pistes.

De même, tenir compte que les entrées ADKEY 1 et 2 sont à haute impédance. Les connexions vers ces entrées doivent être courtes et nettes.
Et attention sur le circuit imprimé, certains "résidus" de soudure (résine) présents entre pistes allant à ces entrées peuvent créer des phénomènes bizarres comme bloquer le fonctionnement du SOMO, ou encore le faire démarrer tout seul !

La sortie commune du 4051 est connectée sur l'entrée ADKEY2.

Une impulsion sur le bouton S1 commutera donc en sortie du 4051 la résistance choisie par les entrées A, B et C du 4051.
Ceci permet d'avoir une sélection par signaux binaires de la piste à lire. Table de vérité :

C
B A
Piste lue
0 0 0 Piste 01 du répertoire 01
0
0 1
Piste 02 du répertoire 01
0 1
0 Piste 03 du répertoire 01
0 1
1
Piste 04 du répertoire 01
1
0 0 Piste 05 du répertoire 01
1
0 1
Piste 01 du répertoire 02
1
1
0 Piste 01 du répertoire 03
1
1
1
Piste 01 du répertoire 04

Ici aussi, le bouton S9, ou le transistor T1, permettent de stopper la lecture via ADKEY1, comme indiqué ci-dessus.

Bien sur, par les entrées ADKEY il n'est possible de sélectionner qu'un nombre limité de pistes musicales. Pour pourvoir choisir n'importe quelle piste dans n'importe quel répertoire (99 répertoires de 99 pistes possible), il faut alors utiliser un microprocesseur et envoyer les commandes par l'interface série. Voir la datasheet du SOMO pour plus d'explications.

Ici, il est choisi de conserver des commandes sans processeur et donc  la sélection sera limitée à quelques pistes, pour des applications simples...


Sound module SOMO

Une chose dont il faut tenir compte, et qui n'a pas encore été évoquée ici, c'est le comportement du SOMO lors de la mise sous tension (démarrage à froid).

En effet, le SOMO ne pend pas tout de suite en compte les commandes par boutons à la mise sous tension.

De même, après une mise sous tension, le niveau de sortie audio est très faible.

Il est donc intéressant de prévoir un circuit d'initialisation.
Ci-contre, c'est la porte NAND IC1C qui réalise cette fonction. A la mise sous tension, le condensateur C1 est déchargé et donc place les entrées de la porte à zéro, la sortie étant à 1. Cela active le transistor T2 qui va faire augmenter le volume pendant cette phase d'initialisation. Le condensateur C1 se charge à travers R11 et quand la tension à ses bornes est suffisante, la porte NAND bascule. Sa sortie passe à zéro, mettant T2 à l'état bloqué et stoppant la commande sur VOL+ du SOMO.

Sound module SOMO

Ci-contre un peu plus de logique de commande...

Le circuit permet de piloter le SOMO non plus par une impulsion, mais par un interrupteur. Interrupteur fermé = lecture de la plage choisie aec les entrées binaires. Interrupteur ouvert = arrêt de la lecture.

Les portes IC1B et IC3C bloquent les commandes pendant la phase d'inhibition à la mise sous tension (signal provenant de la porte IC1D).

A la fermeture de l'interrupteur S1, le signal en sortie de IC3B passe à 1, et charge C2 à travers R9. Ceci transmet une impulsion vers la porte IC1B, passant un bref instant l'entrée INH du 4051 à 0, donnant ainsi l'ordre de démarrage au SOMO (choix de la plage par le 4051 comme expliqué ci dessus). La durée de l'impulsion dépend des valeurs de C2 et R9.
Au même moment (fermeture S1) la sortie de IC3A passe à 0, C3 se décharge dans R13 sans rien changer à l'état de IC3C.

Tant que cet interrupteur reste fermé il ne se passe rien d'autre, la lecture continue. Si la piste musicale arrive à la fin, la lecture stoppe par le SOMO et rien d'autre ne se passe.

A l'ouverture de S1, la sortie de IC3A passe à 1, et charge C3 à travers R13. Ceci transmet une impulsion vers la porte IC3C dont la sortie va passer à 0. Ceci transmet (via IC1A) cette impulsion au transistor T1, qui va stopper la lecture sur le SOMO. La durée de cette impulsion dépend des valeurs de C3 et R13.
Au même moment (ouverture de S1) la sortie de IC3B passe à 0, c2 se décharge dans R9 sans rien changer à l'état de IC1B.

Tant que cet interrupteur restera ouvert, il ne se passera rien d'autre, la lecture restera inactive. Si S1 est à nouveau fermé, le SOMO recevra l'impulsion de démarrage via le 4051.

Cette circuiterie permet de piloter le SOMO par une fonction interrupteur, par exemple pour lancer une piste sonore par la détection d'une présence à proximité (détecteur de présence, barrière lumineuse,...) et de la stopper une fois l'entrée désactivée.
Cette circuiterie est utilisée dans le sélecteur / zoneur audio, combinée à d'autres IC pour avoir 8 entrées de sélection distinctes.

Bien sur, à partir des explications données ci-dessus, il est possible d'imaginer d'autres circuits. Ceci est juste une explication des possibilités de faire des commandes simples d'un module SOMO.

Dans ces réalisations-ci, par exemple, il est possible de choisir un mode de fonctionnement de lecture par une entrée digitale, ou bien un mode de  lecture continue : quand la piste est terminée, la logique relance la fonction "start"...


Sound module SOMO

Maintenant, regardons les signaux audio analogiques...


Ci-contre, le signal de sortie du SOMO est affiché sur la trace du dessus. La photo a été prise pendant l'exécution d'un solo de contrebasse sur la piste en cours de lecture...

La trace est "épaisse" et de fait, un signal haute fréquence (environ 200kHz) est superposé au signal basse fréquence.

La trace du dessous montre le même signal (déphasé) après un filtre passe-bas.

Bien que théoriquement pas audible, ce signal HF résiduel provoque "quelque chose" à l'audition.
Audible même avec mes oreilles qui ont 54 ans (juillet 2020)...

Est-ce une détection dans les circuits du préamplificateur ou de l'ampli final ? Pas trouvé d'explication théorique convaincante...

Toujours est-il qu'il vaut mieux éliminer ce signal parasite, afin de ne pas perturber d'une ou l'autre manière les circuits analogiques qui sont en amont.


Sound module SOMO

Un circuit d'amplification / tampon du signal de sortie du SOMO, suivi d'un filtre passe bas à grande pente (18 ou 24dB/octave) est à prévoir.

Voici celui qui a été installé au départ dans le sélecteur / zoneur audio. Gain élevé possible (changer la valeur de R2), à ajuster en fonction des niveaux d'enregistrement et de sortie du SOMO.

Il est difficile de calculer au plus juste les circuits destinés à être connectés en sortie du module, puisque l'impédance des sorties DAC_L et DAC_R n'est pas donnée par le fabricant du module.
C'est pourquoi il est fait usage de résistances de 22kΩ, afin d'avoir une impédance d'entrée suffisament élevée pour ne pas provoquer une distorsion par surcharge des sorties du SOMO. A noter que la première version du montage utilisait une résistance d'entrée de 2,2kΩ et ce n'était pas idéal (perte de niveau du signal).

Il faut aussi trouver le bon copromis entre le niveau de sortie (déterminé par la commande VOL+ à l'initialisation, voir plus haut dans cette page) et l'amplification du signal. Dans le circuit ci-dessus, le gain peut être ajusté en changeant R2. Avec les valeurs du schéma le gain est unitaire, c'est un simple étage tampon inverseur : le filtre qui suit et également inverseur.

En tout état de cause, il vaut mieux opter pour un signal à niveau assez élevé en sortie du SOMO, pour améliorer le rapport signal / bruit.
En effet, le signal HF parasite est de niveau constant quel que soit le niveau de sortie BF.


Sound module SOMO

Voici un autre circuit de filtre, avec un LF356, conçu par l'ami Paul.

L'avantage de celui-ci est l'usage d'un ampli opérationnel à entrée CMOS. Et aussi sa pente, 60dB/octave !

Pas encore testé (juillet 2020) mais prévu pour une prochaine réalisation à base d'un SOMO !

Enfin, il faut veiller à ne pas enregistrer les pistes audio avec un trop fort niveau sonore , au besoin retravailler ces niveaux sur les fichiers avec un logiciel de traitement audio (par exemple l'excellent Audacity) avant de les copier sur la carte mémoire.

Le convertisseur digital / analogique intégré au SOMO n'apprécie pas du tout les haut niveaux sonores sur les pistes audio (aussi bien en format MP3 qu'en WAV).

Voilà qui clôture cette page d'informations générales sur l'usage de ces modules. Sans doute existe-t-il plein d'autres possibilités, mais ici c'est l'usage qui en est fait dans les réalisations précédentes.

Le pilotage d'un tel module par un micro-processeur ou micro-contrôleur permet bien sur bien plus de possibilités. Mais, encore une fois, il s'agit ici de donner quelques informations de base pour un usage simple, avec des composants très courants et ne nécessitant pas de programmation. Les schémas donnés sur cette page fonctionnent au premier coup...

Si, après la lecture de cette page, vous avez d'autres suggestions ou propositions, ou des expériences différentes avec ces modules, il est toujours loisible de les partager par mail !



Retour page réalisations

Retour page accueil