IMA5 2022/2023 P15
Sommaire
Réalisation d’un système d’écoutes sonores à base de MEMS
- Dépôt Git : https://archives.plil.fr/akhalaf/systeme_ecoute
Présentation générale du projet
Contexte
Les objets connectés se déploient de façon massive dans nos vies personnelles et quotidiennes. La simplicité de création de ces objets permet la mise sur le marché de nombreux nouveaux objets commerciaux, voire artisanaux grâce au mouvement DIY (Do It Yourself). Cette grande rapidité rend l’écosystème des objets connectés très hétérogène et rend ainsi la reconnaissance et l’identification des objets compliquée. Une piste permettant l’identification des objets connectés consiste à s’intéresser à leur signature sonore. Pour cela, on capte à l’aide de microphones les émissions sonores de l’objet en fonctionnement et on extrait une signature sonore. Afin d’améliorer la sensibilité de la captation sonore tout en diminuant la taille et le coût, on peut envisager d’utiliser des microphones basés sur les technologies MEMS. En utilisant de tels microphones il sera possible de multiplier les sources de données.
Le projet consiste en la conception et la réalisation d’un système d’écoute embarquant plusieurs microphones MEMS. La plateforme comportera :
- une partie matérielle avec des microphones MEMS ;
- un protocole de synchronisation des mesures provenant des différents microphones ;
- une partie logicielle permettant de traiter les signaux acquis.
Des expérimentations basiques seront menées afin de valider le prototype et d’estimer les gains en termes de sensibilité notamment.
Cahier des charges
Objectif du projet
L’objectif de ce projet est de réaliser un prototype de système d’écoute de signature sonore à base de microphones MEMS permettant d’écouter un chargeur de smartphone, et pourra par la suite être étendu par d’autres systèmes, comme les microcontrôleurs, ou tout autre objet connecté. Nous travaillerons avec deux smartphones différents ainsi que leurs chargeurs respectifs, et notre système devra être capable de différencier les téléphones ainsi que de reconnaître quelques cas d’utilisations simples.
Historique
Ce projet sera le deuxième à avoir été réalisé sur cette thématique, où un premier projet avait été réalisé autour de cette thématique en 2019/2020 par l’étudiant en spécialité IMA5 Pierre Frison, celui-çi utilisant un simple microphone. Dans notre cas, nous utiliserons des microphones réalisés avec la technologie MEMS, et qui offrent donc la possibilité de réduire la taille du système, ainsi que de travailler avec plusieurs microphones afin de multiplier les sources et gagner en sensibilité.
Expression du besoin
Bête à corne
Diagramme Pieuvre
Fonction | Intitulé | Flexibilité |
---|---|---|
FP1 | Permettre à l’utilisateur d’identifier les appareils connectés | |
FC1 | Capter et reconnaître la signature sonore d’un appareil | Taux d'erreurs <= 10% |
FC2 | Informer l’utilisateur | |
FC3 | Fonctionner en environnement intérieur | |
FC4 | S’alimenter par câble USB |
Diagramme FAST
Contraintes
Contraintes matérielles
Afin de réaliser un prototype ainsi que des mesures permettant de le valider, nous travaillerons avec du matériel qu’il nous à été fournis :
- 2 microcontrôleurs STM32-NUCLEO-F410RB
- 2 microcontrôleurs STM32-NUCLEO-F401RE
- 1 expansion numérique des microphones MEMS (Réf : X-NUCLEO-CCA02M2)
- 1 expansion analogique des microphones MEMS (Réf : X-NUCLEO-AMICAM1)
- 1 expansion 4 microphones MEMS numériques STEVAL-MIC001V1
- 1 expansion 4 microphones MEMS analogiques STEVAL-MIC004V1
- 2 smartphones avec leurs chargeurs
Contraintes logicielles
Afin de pouvoir programmer les cartes microcontrôleurs, nous aurons le choix de travailler sous l’une des deux plateformes suivantes:
- STM32Cube IDE
- Mbed OS
Contraintes humaines
Nous serons deux étudiants en cinquième année systèmes embarqués - systèmes communicants à travailler sur ce projet, encadré par Monsieur Thomas Vantroys et Monsieur Alexandre Boé, professeurs du département systèmes embarqués.
Contraintes temporelles
Le projet commencera le 5 Septembre 2022 et se terminera le 23 Janvier 2023.
Nous utiliserons également les ressources disponibles au sein de Polytech’Lille ainsi qu’au Fabricarium.
Résultats attendus
Afin de nous assurer du fonctionnement et de la fiabilité de notre prototype, nous réaliserons différentes mesures sur nos smartphones personnels. Nous réaliserons une base de référence pour une dizaine de cas différents en prenant plusieurs mesures de chaque cas afin de mesurer un taux d’erreur sur les mesures.
Cahier des Spécifications
Etat de l'art
Ce projet sera le deuxième à avoir été réalisé sur cette thématique, où un premier projet avait été réalisé autour de cette thématique en 2019/2020 par l’étudiant en spécialité IMA5 Pierre Frison, celui-çi utilisant un simple microphone. Dans notre cas, nous utiliserons des microphones réalisés avec la technologie MEMS, et qui offrent donc la possibilité de réduire la taille du système, ainsi que de travailler avec plusieurs microphones afin de multiplier les sources et gagner en sensibilité.(Lien du wiki)
L’entreprise Wavely a réalisé un système d’écoute sonore permettant de détecter les dysfonctionnements sur des systèmes tels que la localisation d’une fuite de gaz. (Les Echos)
Une publication scientifique rédigée par Boris Defreville, Stéphane Bloquet, Guillaume Filippi et Christine Aujard présente une solution permettant d’identifier le différentes sources de bruit en milieu urbain afin de pouvoir prévoir par exemple l’impact d’une déviation de l’accès à un centre ville ou bien de connaître les niveaux de bruit générés par l’industrie. (Lien de la publication)
Démarche de réalisation du besoin
Afin de réaliser le besoin nous allons procéder par étapes en augmentant progressivement la complexité de notre prototype. A chaque étape nous modifierons le prototype sur les plans matériel et logiciel puis nous réaliserons une batterie de tests identique à chaque étape afin de pouvoir comparer les différents résultats et évaluer l’évolution des performances de notre prototype.
En premier lieu, nous allons nous assurer de la fonctionnalité des microphones et prendre en main leur programmation en enregistrant nos propres voix. Après cela, nous allons réaliser une version simple de notre système permettant d’écouter le système à étudier (nous allons prendre le cas des chargeurs des smartphones) avec un seul microphone MEMS. Ce système consistera en une boîte en bois dans laquelle sera placé le capteur ainsi que le système à écouter.
Il est envisageable par la suite d’utiliser dans nos études plusieurs microphones placés à l’intérieur de la boîte, ainsi que d’en ajouter un à l'extérieur dans le but de pouvoir compenser le bruit ambiant.
Pour la partie logicielle, nous allons utiliser les résultats obtenus que nous allons visualiser en utilisant un algorithme d’analyse en composantes principales (PCA). Après quoi nous allons utiliser un algorithme de segmentation du plan de visualisation afin d’associer à chaque cas une surface sur le plan.
Formalisme des résultats de mesures
Afin de ne pas nous perdre dans les nombreuses expérimentations que nous effectuerons tout au long du projet, il sera nécessaire d’adopter un formalisme dans les conditions d’expérimentation ainsi que dans la dénomination des fichiers comprenant nos résultats. Nous effectuerons des mesures avec deux smartphones différents (nos téléphones personnels) dans quatre conditions :
- Cas de base (batterie à 100%, aucune application ouverte).
- Batterie à 50%, aucune application ouverte.
- Une application ouverte, batterie à 100%
- Smartphone en veille, batterie à 100%, aucune application ouverte.
Dans chaque cas, le smartphone sera en mode avion afin de limiter l’influence des autres ondes.
Afin de ne pas se perdre dans les différentes expérimentations que nous allons mener, nous allons réaliser une arborescence de fichier telle que suit, où un répertoire sera créé pour chaque cas, chacun contenant un répertoire par téléphone. Pour chaque expérience plusieurs mesures seront effectuées, comprenant les fichiers de résultats.
Voici une légende des noms des répertoires utilisés dans notre schéma explicatif :
- Cbase = Le cas de base avec batterie à 100%, aucune application ouverte.
- C50 = Le cas avec batterie à 50%, aucune application ouverte.
- Co = Le cas avec une application ouverte et batterie à 100%
- Cv = Le cas avec smartphone en veille, batterie à 100%, aucune application ouverte.
- T_Logan et T_Ali = Téléphone sur lequel on fait l’expérience
- Expi = experience numéro i faite par le téléphone
Les fichiers seront nommés par concaténation des noms des répertoires en partant du plus général (ex. Cbase_Tlogan_E2_F1).
Diagramme de GANTT
Caractéristiques du produit
Le produit attendu est un système embarqué, basé sur des cartes microcontrôleur STM32F410, des expansions et des microphones MEMS analogiques (X-NUCLEO-AMICAM1) et numériques (X-NUCLEO-CCA02M2).
Nous souhaitons réaliser un prototype comportant plusieurs micros et ayant une certaine immunité au bruit extérieur. Cette immunité peut être obtenue en utilisant des matériaux insonorisant ou bien en récupérant le bruit extérieur afin de le compenser lors de l’analyse.
Ce prototype à pour but de différencier les systèmes embarqués ou bien leurs conditions de fonctionnement. Sa fiabilité sera déterminée en mesurant le taux d’erreur sur des chargeurs de téléphones portables dans plusieurs cas tel que vu précédemment. Des mesures sur d’autres systèmes embarqués sont envisageables mais cela reste à déterminer.
Les moyens consacrés
En plus du matériel électroniques fournis, tel que les microcontrôleurs, les expansions et les microphones, nous allons utiliser les outils de fabrication présents au Fabricarium de l’école, dans le but de construire une boîte dans laquelle vont être placés les composants de notre système (par découpage laser ou impression 3D).
Pour la partie logicielle nous travaillerons sous STM32Cube IDE pour la prise de mesure et nous programmerons les algorithmes de traitement et d’analyse de données en Python, en utilisant les modules svc du package sklearn.svm et pca du package sklearn.decomposition pour la visualisation et la segmentation des données.
Nous avons également la possibilité d’implémenter une solution à base de machine learning afin de faciliter l’apprentissage de nouveaux cas.
Réalisation du projet
Semaine 1 : 05/09/2022 - 09/09/2022
Durant la première semaine, nous avons rempli tout d'abord les parties de notre page Wiki en établissant la description du projet et du système, ainsi que le cahier des charges avec les tâches à effectuer.
Pour cela nous nous sommes renseignés en lisant des documentations trouvés sur internet, ainsi que les travaux effectuer par un ancien étudiant IMA sur un sujet qui ressemble celui la, ainsi que nous avons eu une première réuinion avec nos encadrants; Monsieur Thomas Vantroys et Monsieur Alexandre Boé qui nous ont expliqué le but de ce projet, et nous ont fournit le matériel nécessaire pour la réalisation technique.
- Première réunion avec les encadrants.
- Rédaction du cahier des charges.
- Recherches bibliographiques.
- Début de la rédaction du cahier des spécifications.
Semaine 2 : 19/09/2022 - 24/09/2022
Durant cette deuxième semaine, notre objectif était de comprendre le fonctionnement des expansions numériques et analogiques des microphones MEMS. Pour cela nous avons décidé d'utiliser le logiciel STM32CubeIDE, car il posséde des compatibilités avec les expansions en possession. Pour cela, nous avons commencé au début d'apprendre et de comprendre le mode de fonctionnement de cet environnement en suivant des Tutorats trouvés sur Youtube.
Ensuite un nous avons testé pour la première fois l'expansion numérique des MEMS, où nous avons trouvé au début qu'il est indispensable d'utiliser X-Cube-MEMSMIC1 qui est un progiciel d'extension pour STM32Cube. Ce logiciel s'exécute sur le STM32 et comprend des pilotes et un middleware pour l'acquisition de données audio à partir de microphones numériques MEMS (MP34DT06J) et de microphones analogiques (MP23ABS1), et le streaming USB des signaux enregistrés.
Un test préliminaire, consiste à enregistrer nos voix personnelles a eu lieu, grâce au logiciel Audacity par l'expansion numérique, où le resultat est enregistré dans un fichier d'extension .aud3 .
Voici une capture du signal sonore :
On observe la variation de l'amplitude du signal en fonction du temps.
Nous avons pensé à automatiser l'enregistrement, où nous avons trouvé que Python offre des modules qui permet de le faire.
- Rédaction du cahier des spécifications.
- Acquisition via le logiciel tiers Audacity
Semaine 3 : 03/10/2022 - 07/10/2022
Lors de cette troisième semaine, nous avons travaillé sur l'acquisition des signaux provenant des microphones par programmation afin d'enregistrer le son récupéré au format wave. Nous avons choisi le format wave car il s'agit d'un format de compression sans perte restituant donc le son de manière fidèle. Nous avons récupéré et adapté un programme Python permettant de réaliser cette tâche et avons effectivement pus réaliser des enregistrements sonores ainsi.
Après cela nous nous sommes penché sur l'analyse de ces enregistrements. En effet, afin de pouvoir les analyser puis les comparer, il nous faut en retirer des informations qui leurs sont propres. Nous avons alors choisi de travailler avec leurs spectrogrammes nous offrant des informations de puissance sonore reçues pour chaque fréquence et en fonction du temps.
Un script Python utilisant les packages scipy.io.wavfile et matplotlib.pyplot" permet de lire un fichier d'extension wave et d'en afficher le spectrogramme.
Enfin nous avons effectué un premier enregistrement du bruit causé par nos chargeurs de smartphones alors que ceux-ci sont en charge. Nous ne disposons pas encore de moyen pour réduire l'influence du bruit extérieur (boite isolante, compensation du bruit), ces enregistrements ont donc été réalisés dans des conditions inadaptés et ne sont pas
Résultats
Bibliographie
- Documentation de l'expansion numérique : CCA02M2