lundi 21 septembre 2020

Capteur de son KY-038 et Arduino

Le capteur de son KY-038 est un module constitué d'un microphone à électret et d'un comparateur LM393. On l'appelle parfois KY-037 ou HXJ-17 (mon exemplaire porte au verso le numéro HW-484 ...qui est en principe le nom d'un module à interrupteur Reed!).

Le module ne comporte aucun étage d'amplification; pour cette raison, il est plutôt dur d'oreille: s'il réagit bien à un bruit intense (comme taper des mains à proximité du microphone), ne comptez pas trop sur lui pour détecter un chuchotement.




Le module comporte 4 broches:
  • G et + pour l'alimentation (5 V)
  • AO: sortie analogique. Il s'agit de la tension issue du micro électret, sans la moindre amplification. 
  • D0: sortie numérique, qui atteint le niveau logique "haut" si l'intensité sonore détectée dépasse un certain seuil que l'utilisateur a ajusté au moyen du potentiomètre.


Connexions du module KY-038 à une carte Arduino Uno

Pour faire mes tests, j'ai branché le module KY-038 à une carte Arduino Uno de la façon suivante:

  • Broche AO du capteur de son : broche A0 de l'Arduino
  • Broche G du capteur de son: broche GND de l'Arduino
  • Broche + du capteur de son: broche 5 V de l'Arduino
  • Broche DO: broche 7 de l'Arduino

(Notez qu'il est rarement utile de connecter les deux sorties A0 et D0 simultanément). 


Ajustement du potentiomètre

Le module comporte 2 LEDs: une LED situé près du comparateur LM393 est allumée quand le module est alimenté, et une deuxième LED (situé près du potentiomètre) est supposée s'allumer uniquement lorsqu'un son est détecté.

Avant d'utiliser la sortie numérique, il est essentiel d'ajuster le potentiomètre afin que la LED reste éteinte en absence de son, et s'allume lorsqu'il y a un son.  Si votre LED est toujours éteinte (même quand vous tapez des mains près du micro), tournez la vis du potentiomètre dans le sens horaire. Si la LED est toujours allumée (même en absence de son), tournez la vis dans le sens antihoraire. Puisque le signal issu du microphone n'est pas amplifié, la marge de manoeuvre est vraiment mince.

Dans le circuit, le potentiomètre contrôle la résistance de tirage qui relie la sortie analogique à l'alimentation de 5 V. Pour cette raison, tourner le potentiomètre a également un effet sur la tension de la sortie analogique lorsqu'il n'y a pas de son (elle devrait idéalement se situer à mi-chemin entre 0 et 5 V).

Exemple de sketch:  Sortie numérique

Voici un exemple de sketch qui utilise la sortie numérique du module KY-038: tapez dans les mains, et la LED intégrée à la carte Arduino s'allume. Tapez des mains à nouveau, et elle s'éteint.

--

Exemple de sketch:  Sortie analogique

Pour faire l'essai de la sortie analogique du capteur, j'ai utilisé un sketch que j'avais utilisé il y a quelques années avec l'interface audio que j'avais fabriquée pour l'Arduino.

-

-

Ce programme accumule 200 mesures prises sur l'entrée analogique A0, pour ensuite les transmettre par UART pour qu'on puisse les visualiser sur le traceur série.

Voyez le résultat obtenu pendant que je jouait une note continue sur un clavier électronique. Le volume  était relativement fort, et le micro du capteur KY-038 était placé tout près du haut-parleur.


Portez une attention particulière à l'axe vertical: la valeur affichée varie entre 0 et 9...la résolution est pitoyable!

Il s'agit de la valeur récoltée par analogRead() à laquelle j'ai soustrait 512.  La valeur réelle, avant soustraction, oscillait donc entre 512 et 521, soit une minuscule fraction des 1023 valeurs pouvant être exprimées par l'ADC de 10 bits.

Conclusion

À cause de l'absence d'amplification, les applications pratiques de ce capteur sont très limitées! Je crois bien que je vais tenter de trouver (ou de fabriquer) quelque chose de mieux...

Yves Pelletier (TwitterFacebook)

2 commentaires:

  1. Du coup, pour la 2ème application, il est possible de démarrer l'échantillonnage quand on reçoit l'impulsion sur la sortie numérique :-)

    RépondreSupprimer