Introduction: Polyflûte

Le projet Polyflûte consiste à réaliser un instrument de musique
numérique.

Le but est de créer un instrument de musique respectant des conditions particulières; Cet instrument doit être :

-Autonome et portable (Batterie, pile…)

-Autodidacte (Enseigner à l’utilisateur à partir d’un site internet, le fonctionnement et la construction de l’appareil)

-Auto tune (Produire un son musical à partir une fréquence relevé dans l’environnement -alentour)

Le but est donc de réussir à convertir une onde vibratoire, oscillante de la vie courante ou issue d’objets du quotidien en onde sonore et musicale.

Step 1: Création Du Circuit Analogique

Notre système se base sur le principe de la détection de
lumière: On place une LED et photodiode face à face séparé par une hélice propulsé en roue libre par un ventilateur. Ainsi le passage d'une pâle devant la photodiode créera un signal de type T.O.R (plutôt proche du sinusoïdale en prenant en compte le temps de réception de la lumière).

Le capteur constitue le cœur de la partie analogique. Nous avons donc décidé de distinguer un circuit d'émission et un circuit de réception. Le circuit est alimenté par 6 piles rechargeables de 1.2 V soit au total 7.2V. Le circuit d'émission est constitué d'une LED et d'un moteur branché en parallèle (une diode de protection a également été placée pour éviter les retours de courants). Le circuit d'émission se constitue d'une photodiode dont le signal est amplifié par un AOP; ainsi que de 2 filtres passe bas d’ordre 1 filtrant à environ 80 Hz (fréquence maximale de rotation de l'hélice).

Step 2: Choix Des Composants

Une fois le circuit théorique établit, on choisit les composants les plus adaptés au montage.

Vous retrouverez ci-dessous les références et valeurs des différents composants(en se basant sur le schéma électronique précédent):

LED: SFH 4550

Ventilateur: MB40200V1 (5V)

Diode: 1N4001

Photodiode: SFH 203

AOP: LM358N

CAN : MCP3008

Résistance R1 (LED): 47 Ohms

Résistance R2 (Filtre 1): 220 Ohms

Résistance R3 (Filtre 2) :220 Ohms

Résistance R4 (Filtre en sortie de Vref): 1 kOhms

Condensateur C1 (Filtre): 10nF

Condensateur C2(Filtre): 10nF

Condensateur C3(Filtre en sortie de Vref): 5µF

Régulateur : 0J7031 reg09b

Connecteur 40 pins

Raspberry PI 2 Model B

Hélice d'hélicoptère de 3,8 cm

6 piles rechargeables 1.2 V

Step 3: Réalisation Du PCB

La réalisation du PCB (Printed Circuit Board) s'est effectuée en plusieurs étapes:

- Le dessin de la carte (Agencement des composants)

- Le routage des composants sur la carte et Impression de la carte

- Soudage des composants

Le dessin et le routage de la carte ont été faits sur le logiciel ALTIUM Designer (logiciel utilisé en entreprise pour le routage de PCB). Nous avons donc dû nous initier au logiciel. Les composants ont été disposés de manière à réduire la taille de la carte (9 cm de long, 5 cm de large). Le routage fut la partie la plus délicate, car la carte étant imprimé en double couche nous devions décidés de la disposition des connections en couche Top ou Bottom. Une fois la carte imprimée, nous avons soudés les composants sur des supports afin de pouvoir enlever les composants en cas de défaillances ou de changements de composants. Nous avons également dû placer sur la carte le connecteur reliant le PCB et la Rasberry. Nous avons pour cela dû identifier les ports SPI de la Rasberry et faire la bonne correspondance avec le PCB.

Vous trouverez les fichiers Gerber (fichier Altium Designer).

Step 4: Réalisation De La Partie Mécanique (support Et Instrument)

Le tube constituant la flûte est un tube en PVC (plomberie) qui a été coupé a une longueur de 15 cm et 4,1 cm de diamètre. On retrouve 4 trous de 1 cm de diamètre espacé chacun de 2 cm. A l'intérieur on retrouve une hélice soutenu par une tige en plastique de 2 cm. Le PCB et le tube sont fixés sur une plaque en bois à fixé l'aide d'entretoises et de vis. Sur la partie gauche du tube on a fixé le ventilateur à l'aide d'un scotch de câble électrique. De l'autre côté, le tube est bouché par un morceau de carton.

- tube en PVC

- plaque en bois d'environ 30 cm x 30 cm

- 4 entretoises de 3,5 cm

- 4 écrous

- Un interrupteur 2 positions classique

- Support de pile

- Carton

Step 5: Connexion MCP-Raspberry

La connexion MCP-3008/Rasberry est essentielle pour la communication, réception transmission des données.

La connexion Raspberry/MCP est détaillée dans les images.

La connexion s'effectue en bus SPI, le code d'initialisation du bus est joint dans les fichiers.

Step 6: Acquisition Des Données

Une fois la Raspberry connectée à un convertisseur analogique/numérique de type MCP3008 à l'aide d'un bus SPI, il faut maintenant acquérir les données souhaitées. Nous ne relevons qu'un type de valeur, l'amplitude de notre signal fréquentielle, sur la chaîne 1 du MCP3008. Ces valeurs sont stockées dans un tableau de taille 512 : on choisit une puissance de 2 pour faciliter les algorithmes de transformé de Fourier à venir, et plus le nombre de points est élevé plus le signal discret sera précis.

L'acquisition des données ne peut cependant pas se faire de manière aléatoire, en effet la fréquence d'acquisition et donc la fréquence d'échantillonnage est primordiale. Nous avons déterminé empiriquement que notre signal n'atteignait jamais des fréquences supérieures à 80Hz. Pour respecter Shannon notre fréquence d'échantillonnage doit être supérieure à 160Hz, nous avons choisi une Fe à 250Hz.

Afin d'acquérir les données à cette fréquence, nous avons créé un timer qui fait appel à notre fonction d'acquisition toutes les 4ms (Te = 1/Fe = 4ms). Le premier thread de notre programme contient donc la fonction du timer qui effectue l'acquisition des données.

Step 7: FFT

Une fois le tableau de données d'acquisition rempli, on peut effectuer la transformer de Fourier discrète pour retrouver la fréquence du signal.

On utilise pour cela la bibliothèque GSL qui permet à partir d'un tableau de données, d'avoir le tableau d'amplitude des raies fréquentielles composant ce signal. En écartant la première case du tableau contenant l'amplitude des composantes continues, on peut retrouver l'indice i de la fréquence qui a la plus forte amplitude à l'aide de la formule suivante: Freq = i*Fe/(2*Nb_Points).

Notre fréquence d'échantillonnage étant 250Hz et le nombre de points acquis étant 512.

Attachments

Step 8: Génération Du Son

Maintenant que l'on a récupéré la fréquence du signal il suffit de générer un sinus pour avoir un son. Deux solutions se sont ouvertes à nous : Émettre un sinus directement à partir des fréquences acquises en les multipliant pour les rendre audible, ou bien associer des fréquences précises aux plages des différentes notes de notre prototype.

Nous avons testé les deux méthodes et nous avons finalement retenu la seconde plus concluante. Les notes jouées sont celle de la gamme 4, cependant les contraintes de notre système nous permet seulement d'avoir 8 plages distinctes et ainsi de jouer 8 notes différentes : Do, Ré, Mi, Fa, Sol, Sol bémol, La et Si.

Enfin vous trouverez les codes complets des deux solutions citées au-dessus.

First Time Authors Contest 2016

Participated in the
First Time Authors Contest 2016