Proj-2012-2013-Audioprothèse DIY 2/Report

=Introduction=

Le contexte
Ce projet nous a été proposé par M. Richard Olivier, suite à une contestation de sa part. Les audioprothèses que nous pouvons trouver sur le marché ont un prix trop élevé pour que toutes les personnes ayant un problème d’audition puissent se les offrir. Il lui a donc paru intéressant d’essayer d’en créer une à moindre cout. Etant deux élèves de l’option réseaux il nous a semblé important de choisir un support qui nous demandera des connaissances au niveau système, et qui nous en fera développer de nouvelles. Nous avons donc décidé de développer notre audioprothèse sur une carte STM32.

Mises en place et répartition du travail
Ce projet ayant dû être élaboré en binôme il a fallu organiser le travail de chacun : Durant la semaine banalisée pour le travail du projet le travail a pu être mis en commun et nous avons pu travailler l’un avec l’autre et non plus en parallèle.
 * Rémi s’est occupé de l’utilisation de la carte et de la compréhension des démonstrations
 * Marion de la partie état de l’art et compréhension des audioprothèses

=Etat de l’art=

Afin de pouvoir réaliser une audioprothèse il nous a fallu dans un premier temps faire un état de l’art sur ces dernières. Il nous faut savoir ce qui existe déjà et surtout comprendre les différentes formes d’audioprothèses afin de répondre aux différents problèmes d’audition.

Les différents problèmes auditifs et leur solution
Nous avons pu trouver qu’il y a trois types de mauvaise audition :
 * Surdité de transmission, elle est due à un problème de fonctionnement de l’oreille externe ou moyenne qui n’achemine plus les sons jusqu’à l’oreille interne. Ce type de surdité est le plus souvent soignable et ne nécessite donc que très rarement un appareillage. Nous ne nous y intéresserons donc pas.
 * Surdité de perception, elle est due à un problème au niveau de l'oreille interne qui n'assure pas ou plus correctement la transmission des impulsions neuroélectriques jusqu'au cerveau. C’est avec lui que les audioprothèses sont utiles. Il y a dans ce type de surdité différents problèmes à traiter que nous expliquerons par la suite.
 * Surdité mixte, qui est le mélange des deux précédentes.

Surdité de perception avec certaines fréquences inaudible
Dans ce genre de surdité, les personnes ne perçoivent plus les sons émis sur certaines fréquences. La solution est donc de récupérer tous les sons utilisant ces fréquences et de les réémettre avec une autre fréquence, tout en faisant attention à ne pas déformer le contenu.

Surdité de perception où les bruits sont atténués
C’est le type de surdité le plus répandu chez les personnes âgées. Afin de régler ce problème il faut utiliser un algorithme d’amplification du son.

Les appareils à conduction osseuse
Ils sont utilisés pour la surdité de transmission ou mixte. Leur principe est de transformer les ondes sonores en vibration qui se diffusent par le biais des os du crane directement dans l’oreille interne. Ces appareils peuvent avoir la forme de lunette. Il est donc évident que nous ne pourrons réaliser ce type de correction. Figure 1 : lunette à conduction osseuse par S. Blatrix

Les intra-auriculaires
Elles se placent à l’intérieur de l’oreille, dans le conduit auditif. Et permet d’apporter du confort aux personnes souffrant de surdité de perception. Elles utilisent les mêmes traitements que les contours d’oreille que nous allons détailler dans la prochaine partie.

Les contours d’oreille
C’est le genre de prothèse que nous avons essayé de développer. Nous en avons d’ailleurs trouvé une semblable à la nôtre sur le site de Siemens: Figure 2 : Pockettio digital

Pour le moment Siemens n’annonce pas le prix de cette aide auditive. Elle ne précise que : « The Pockettio boasts top-notch Siemens quality at an outstanding price. » (Siemens AG, 2011) Nous pouvons donc penser que son prix sera bien inférieur à celui des autres contours d’oreilles qui avoisine les 2500€ par paire.

Des solutions libres
Afin de réduire le coût de ses prothèses il faut pouvoir développer du code libre. Au fur et à mesure de nos recherches nous avons pu trouver un wiki en cours de travail sur ce sujet. Il appartient à l’association April qui vise à promouvoir et défendre le logiciel libre. Ce sujet est élaboré par le groupe de travail April Accessibilité qui encourage l’utilisation des logiciels libres auprès des professionnels du handicap ou des utilisateurs handicapés. Vous pouvez trouver leurs avancés sur la page suivante :  Malheureusement le travail qu’ils ont effectué demande beaucoup trop de capacité pour pouvoir les incorporer dans notre projet sur la carte STM32.

=La carte STM32=

Nous avons décidé d’utiliser une carte STM32, au cours de notre projet, car son coût est très abordable (pas plus d’une quinzaine d’euros).

D’un point de vue matériel
Figure 3 : carte STM32 F4 discovery

Comme on peut voir sur la photo de la carte ci-dessus nous avons :
 * Un cortex M4 avec 1 MB de Flash et 192 KB pour la RAM
 * Le bouton utilisateur nous permet d’interagir avec l’utilisateur
 * Le bouton reset de relancer le programme
 * Le port Jack est notre sortie son
 * Le microphone est tant qu’à lui notre entrée son
 * Le port mini USB assure l’alimentation et le débogage
 * Le port micro USB est notre port série

L’utilisation
De base la carte STM32 F4 est programmable sur windows à l’aide d’IDE comme truestudio. Le langage utilisable est le C. Mais, le but de notre projet était aussi de se familiariser avec la carte et de se détacher d’une IDE, qui ne nous permet pas de contrôler les étapes de la compilation.

Sous linux avec openOCD
Nous avons donc installé openOCD afin de pouvoir utiliser la carte sous linux. STMicroelectronics, nous a fourni des démos utilisant l’entrée et la sortie du son. Malheureusement, ces dernières ne sont pas en mesure d’être compiler en dehors des IDEs utilisés. La carte ne pouvant pas gérer elle-même l’allocation de la mémoire et les threads, il n’a pas était envisagée d’essayer de programmer les entrées et sorties sonore. Nous avons donc décidé de revenir sous windows afin de comprendre les démonstrations que nous avons à notre disposition.

Utilisation des démos de base
Nous avons alors fait marcher la démo qui récupère le son à l’aide du microphone et qui le restitue sur le port jack et celle qui prend un fichier son le lie et le diffuse. Ces deux dernières marchent très bien. Nous avons donc essayé de les modifier afin de pouvoir atteindre notre but. Sur la deuxième démo une variable nous permet de régler le volume, mais il nous est impossible de modifier le code en lui-même. Ce dernier est très complexe et est très mal documenté. ST le donne comme un soft fini et non manipulable. Malgré tous nos efforts pour la recherche d’algorithme sur le traitement du son, nous n’avons réussis qu’à trouver des cours de traitement du signal théorique. N’ayant pas le niveau mathématique suffisant pour en déduire un code, nous n’avons pu transformer le son que nous avions en entrée. Il sera certainement nécessaire que si ce projet est reconduit à l’année prochaine il faille intégrer le code du groupe des multimédia et le transformer en langage C. Mais pour pouvoir faire du C voir du C++ sur cette carte, il nous faut trouver un moyen de gérer la mémoire, et les threads. Nous avons donc décidé d’installer un OS.

=L’OS, chibiOS=

En bref
Nous avons donc installé un OS sur notre carte. Nous avons choisis ChibiOS car il est portable sur des cartes et compatible avec la STM32 F4 discovery. De plus, ses statistiques sont très concluantes sur notre support : Nous n’avons donc pas hésité à l’installer sur notre carte. Nous pouvons donc maintenant :
 * un cœur de 6172 bytes
 * un temps de changement de contexte très faible, cela prend seulement  0.40µs.
 * Utiliser plusieurs threads
 * Allouer de la mémoire, ce qui nous est indispensable pour faire une aide auditive. En effet, il faut :
 * pouvoir récupérer le son est le mettre dans un buffer d’entrée
 * traiter le son alors enregistré
 * restituer le son traité à l’aide d’un buffer de sortie

Avantages
Comme nous l’avons vu ci-dessus les deux gros avantages d’avoir installé ChibiOS sur la carte sont la gestion de la mémoire et le multithreading. Mais l’OS permet aussi grâce aux composants HAL de gérer de nombreuses entrées et sorties. On a d’ailleurs pu voir des cartes STM32 F4 avec un écran tactile supporté à l’aide de ChibiOS, afin d’en faire un MP3. Il est aussi très intéressant d’utiliser cet OS car il admet une très grande modularité. Et, contrairement aux IDE que le développement en brut sur la carte nécessite, l’organisation des sources y est plus « standardisée ». Cela, permet de mieux comprendre l’architecture du software, et donc un développement simplifié.

Inconvénients
Il faut être capable d’adapter le système aux spécificités de notre carte. Ce qui implique d’avoir une réelle connaissance du système dont nous avons besoin.

Si vous désirez l’utiliser référez-vous au site officiel de ChibiOS ou au wiki suivant : 

=Conclusion=

Le projet sur lequel nous avons travaillé pendant tout le semestre était sans doute trop ambitieux. Maitriser un support tel que la carte STM32 demande beaucoup de connaissance et donc beaucoup d’apprentissage. Nous n’avons pas le niveau nécessaire pour l’utiliser ou pas assez de temps pour apprendre son fonctionnement et l’utiliser. Nous pensons donc qu’il serait peut-être plus judicieux d’essayer d’élaborer une prothèse auditive sur un Rasberry-Pi qui supporte un linux et donc des librairies pré-existantes de traitement du son. Ou bien encore sur nos téléphones comme ont pu l’essayer Lotfi Manseur et Walid Bibi. =Table des illustrations=
 * Figure 1 : lunette à conduction osseuse par S. Blatrix
 * Figure 2 : Pockettio digital
 * Figure 3 : carte STM32 F4 discovery

=Bibliographie=


 * April. (s.d.). Audition et logiciel libre . Récupéré sur wiki.april.org:


 * Chaix, A. L. (2009-2011). Aides auditives. Consulté le février 2013, sur cochlea:


 * chibiOS. (s.d.). Récupéré sur chibios:


 * Comprendre-Choisir. (s.d.). appareil-auditif. Récupéré sur comprendrechoisir.com:


 * Siemens AG. (2011, Novembre). Consulté le février 2013, sur hearing.siemens.com: