Détection de la direction du son est un concept fascinant dans robotique et automation. Il permet à un appareil « d’entendre » et de déterminer la direction d’un son. Ce concept a de nombreuses applications, notamment la navigation robotique, les systèmes de sécurité intelligents, les jeux et le divertissement. Plus tôt, nous vous avons montré comment mesurer le son en dB à l’aide d’Arduino. Dans ce didacticiel, apprenons à trouver la direction du son à l’aide d’Arduino et de quelques microphones.
Ci-dessus, vous pouvez voir un court GIF de démonstration du projet dont nous allons discuter aujourd’hui. Apprenons quelques bases sur la détection de la direction du son à l’aide d’Arduino et de quelques microphones. Sans plus tarder, plongeons-nous dans la technique utilisée ici.
Comment fonctionne la localisation sonore ?
En un mot, localisation sonore implique de détecter le son de quatre microphones simultanément, d’identifier le signal d’amplitude la plus élevée et de déterminer la direction de la source sonore en fonction du microphone recevant le signal le plus fort. Bien que cette méthode soit simple, elle présente des limites qui peuvent réduire l’efficacité du système.
C’est là qu’une méthode avancée, la Transformation de Fourier Rapide (FFT) l’analyse, entre en jeu. La FFT déplace le signal du domaine temporel vers le domaine fréquentiel, ce qui facilite la différenciation des sons (comme les voix humaines et le bruit de fond) en analyser les gammes de fréquences. Cette approche réduit certaines limites de la méthode plus simple et permet une détection dans une plage de fréquences fixe.
À l’aide de quatre microphones positionnés autour de l’appareil, le système écoute une fréquence cible (par exemple 3 000 Hz) et compare l’ampleur du son de chaque microphone. Le Arduino traite les signaux dans en temps réeltrouver la direction en fonction du signal le plus fort. Ces informations sont ensuite visualisées sur un Écran OLED avec des « yeux » animés qui suivent la source sonore. Cette configuration physique est essentielle pour identifier avec précision la direction, permettant une détection sur 360° complet.

Vous n’avez pas besoin de compter sur l’impression 3D pour cette configuration ; un simple carton ou de la mousse peut bien faire l’affaire.
Actuellement que vous comprenez le concept, construisons-le !
Modèle 3D
J’ai conçu un boîtier 3D pour ce projet en utilisant TinkerCadqui devrait être facile à reproduire. Le modèle 3D est disponible sur GitHub, avec un lien fourni au bas de ce document.

Remarque : l’impression 3D n’est pas nécessaire pour démontrer la localisation sonore. Des alternatives comme la mousse, le carton ou les petites boîtes peuvent être utilisées.
Composants requis
Vous trouverez ci-dessous la liste des composants requis. Ce projet a été testé avec Arduino UNO R4 WiFi, Arduino UNO R3et ESP32, vous pouvez donc utiliser n’importe lequel d’entre eux. Cependant, des ajustements mineurs du code peuvent être nécessaires pour chaque microcontrôleur.
- Arduino UNO R4 WiFi-1
- Module amplificateur de microphone MAX4466 – 4
- Écran OLED 0,96″ (128×64 px) – 1
- Fils de connexion – Obligatoire
- Planche à pain – En option
- Impression 3D – Facultatif
Schéma de circuit
Le schéma de circuit dépend de votre choix de microcontrôleur. Pour Arduino UNO, le circuit est similaire à celui présenté ci-dessous.

Lorsque vous utilisez un autre microcontrôleur, concentrez-vous sur la sélection des broches ADC appropriées pour les entrées de microphone. Pour Arduino, j’ai utilisé A0, A1, A2 et A3 pour les entrées microphone, avec A4 et A5 comme broches SDA et SCL pour l’écran OLED.
Pour plus de simplicité, j’ai alimenté tous les microphones et l’écran OLED avec la sortie 3,3 V de l’Arduino. Le module MAX4466 prend en charge des tensions d’entrée de 2,4 à 5,5 V et l’OLED fonctionne à 3,3 V (certains écrans peuvent prendre en charge jusqu’à 5 V, mais je suggère 3,3 V pour des raisons de sécurité).
Le circuit étant dégagé, passons au montage.
Assemblage de matériel
Commençons par assembler le matériel. En commençant par la section de tête, placez tous les composants comme indiqué.

J’ai sécurisé le module de microphone et Écran OLED avec de la colle chaude et raccourci les broches pour une soudure sans tracas. Vous pouvez choisir la méthode qui vous convient le mieux.
J’ai enroulé un peu de ruban adhésif autour des microphones pour assurer un bon ajustement.
J’ai commencé par souder l’écran OLED, créant une connexion parallèle pour les rails d’alimentation, avec des connexions individuelles pour la sortie analogique et les broches SDA/SCL.

Vous pouvez voir le câblage partiel ci-dessus, suivi du câblage complet. J’ai utilisé des câbles plats multicolores pour simplifier les choses.

Après terminer la soudure, J’ai acheminé les fils à travers le trou central de l’impression 3D inférieure, qui fonctionne comme un tuyau creux. J’ai ensuite soudé les broches d’en-tête pour les connecter facilement au Arduino UNO.
Une fois l’assemblage du matériel terminé, passons au codage.
Partie de codage
Actuellement, décomposons la logique du code et les fonctionnalités de ce projet de localisation sonore.
Le programme détecte la direction du son à l’aide de quatre microseffectuant un FFT analyser les fréquences sonores, notamment autour 3000 Hz. En fonction de la direction du son, il affiche « yeux » sur un écran OLED pour suivre la source. Si aucun son n’est détecté, il affiche « yeux endormis » comme état d’inactivité.
Décomposons maintenant le code, en commençant par les bibliothèques utilisées.
Bibliothèques utilisées :
Ces bibliothèques sont compatibles avec Arduino UNO et ESP32.

Ensuite, les constantes, les variables et les bibliothèques sont initialisées. J’ai créé des objets FFT distincts pour chaque microphone afin de les gérer indépendamment. Des paramètres de contrôle importants, tels que la fréquence cible, le seuil d’amplitude et la fréquence d’échantillonnage, sont définis. Vous pouvez les ajuster pour affiner le système.
Et ensuite, vous pouvez voir certaines fonctions définies par l’utilisateur dans notre programme.

Flux de code :
Fonction de configuration (setup()) :
- Initialise la communication série et l’écran OLED.
- Efface l’affichage pour garantir qu’il est prêt à afficher des graphiques.
Boucle principale (loop()) :
- La boucle() s’exécute en continu, appelant la fonction déterminerAngle() pour vérifier d’où vient le son.
- Il appelle ensuite drawEyes() pour mettre à jour l’écran OLED avec des yeux normaux ou endormis, en fonction des données sonores.
Détermination de la direction du son (determineAngle()) :
- Prend 64 échantillons de chacun microphone et s’applique FFT pour convertir les données sonores en données de fréquence.
- Il vérifie l’amplitude de la fréquence cible (3000 Hz) de chaque microphone et détermine quel microphone a le signal sonore le plus fort.
- Basé sur le signal le plus fort, il calcule l’angle du son (0°, 90°, 180° ou 270°).
Afficher les yeux (drawEyes()) :
- Le dessinerEyes() La fonction dessine différents graphiques oculaires sur l’écran OLED en fonction de l’angle calculé.
- Si le son reste le même pendant une longue période (en fonction du compteurangle()il affichera yeux endormis.
J’espère maintenant que vous comprenez la logique de fonctionnement de notre code. Vous pouvez trouver le code complet au bas de ce document.
Voyons ensuite le fonctionnement du programme en détail.
Fonctionnement du projet de localisation sonore
Une fois le programme téléchargé, le résultat final peut être vu dans le GIF ci-dessous. Nous l’avons testé avec différentes fréquences cibles et il a répondu avec précision.
Conformément au code actuel, si le son vient de la même direction pendant une longue période, l’OLED affiche le symbole de sommeil.
Ce projet peut être étendu pour détecter une gamme de fréquences plutôt qu’une plage spécifique. Cependant, il reste sensible au bruit. Bien que les solutions logicielles puissent aider, les solutions matérielles telles que les filtres de bruit analogiques sur les entrées microphone donneront les meilleurs résultats.
Applications du projet de détection de la direction du son
- Navigation robotique : Les robots équipés de localisation sonore peuvent détecter la direction des commandes vocales ou des sons à proximité, les aidant à interagir plus naturellement avec les gens ou à répondre rapidement aux alertes.
- Systèmes de sécurité intelligents : En intégrant la détection de direction sonore, les systèmes de sécurité intelligents peuvent identifier les sons suspects– comme des bris de verre ou des perturbations bruyantes – et concentrez immédiatement les caméras ou les alarmes dans cette direction.
- Installations artistiques interactives : Les artistes et les designers peuvent utiliser la détection de la direction du son pour créer des expositions immersives qui répondent aux sons du public, permettant aux installations de prendre vie en fonction des interactions des visiteurs.
- Systèmes à commande vocale : Dans les appareils domestiques intelligents, la détection de la direction du son aide les microphones à se concentrer sur la source des commandes vocales, améliorant ainsi la précision et la réactivité des assistants virtuels comme Alexa ou Google Home.
- Surveillance environnementale : Cette technologie peut aider à la surveillance de la faune en identifiant la direction de cris d’animaux ou autre bruits environnementauxcontribuant à la recherche et à la conservation.
- Mesures acoustiques et profilage sonore : Les ingénieurs et les chercheurs peuvent utiliser ce système pour étudier la façon dont le son se propage dans différents environnements ou pour conduire mesures précises de la direction du son dans les expériences.
Pour tout le code, suivez le lien GitHub ci-dessous :


Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

-
Module CAPTEUR Detection DE FEU/Flamme DIY Compatible avec ARDUINO RASP... (675)
-
ARMYJY Lot de 5 modules de capteur de faisceau infrarouge 3 mm photoélectrique 3-5 V pour Arduino Robotics Objets Détection de vitesse Noir
