E-theremin

De Wiki de Projets IMA


Vidéo HD


Cahier des charges

Présentation générale du projet

Le Thérémine (Theremin en anglais) est l'un des premiers instruments de musique électronique, inventé en 1919 par l'ingénieur russe Léon Theremin. C'est un instrument qui possède la particularité de fonctionner sans aucun contact physique de la part du musicien.

En effet, il est composé généralement de deux antennes.

  • Une antenne verticale (contrôlée par la main droite) qui va commander la hauteur (tonalité) de la note
  • Une antenne horizontale, utilisée pour faire varier le volume de la note

Le simple fait d’effectuer un mouvement plus ou moins des antennes va permettre de générer un son de fréquence et de volume variable.

Léon Theremin
Thérémine actuel de la marque Moog


Objectif du projet

L'objectif de ce projet est donc de développer et réaliser dans un premier temps notre propre Thérémine.

Puis dans un second temps, trouver un moyen de l'utiliser comme contrôleur (émuler une souris par exemple) une fois connecté à un système embarqué.

Une fois ces deux étapes réalisées et si le temps nous le permet, nous tenterons de mettre en réseau ce dispositif de contrôle (par le biais du système embarqué) afin de pouvoir contrôler n'importe quelle machine fonctionnant sous Linux.

Description du projet

Ce projet sera donc composé de deux grandes parties:

  • Une partie électronique où nous réaliserons un Thérémine analogique
  • une partie informatique qui va permettre le traitement des données analogiques obtenues, par le système embarqué. En plus de l'émulation d'une souris, il sera possible de reconfigurer les paramètres du Thérémine à partir de ce système

Choix techniques : matériel et logiciel

  • Pour la réalisation du Thérémine (la réalisation du PCB se fera sur Altium Designer)
    • Composants électroniques de base (résistances, condensateur, potentiomètre, portes logiques) (disponibles en salle C205) [POTENTIOMETRE LOG 10K 4A/250V AC SWITCH commandé chez Farnell au 18/2/2015, 1 fourni le 9/02/2015]
    • 6 boîtiers de six portes logiques inverseuses de type CD4069 exemple ou exemple ou exemple [20 commandés chez Farnell au 18/2/2015, 10 fournis le 9/02/2015]
    • Amplificateur audio LM386 exemple [référence différente trouvée en salle C205]
    • 2 antennes (ou tiges en cuivre ou métallique) (à demander au matériaux ou récupération, car pas de fournisseur trouvé...)
    • Haut-parleur 8 Ohms 1W exemple [ on en a en stock ]
    • Alimentation autonome (batterie 9V avec régulateur) exemple
    • Matériau pour la réalisation du boîtier contenant l'ensemble "Thérémine et arduino" (surement du plastique) [ soit bois soit plexiglas + découpe laser ]
  • Pour la partie émulation d'un dispositif de commande (Le programme sera codé en C avec l'utilisation de la librairie Xlib)
    • Arduino (pour le traitement des données analogiques obtenues) [fourni le 4/2/2015 en E304]
    • Shield Ethernet (si avancement du projet rapide) [à commander]

Étapes du projet

  • Élaboration complète du cahier des charges
  • Étude bibliographique sur les différents Théremines déjà réalisés afin de comprendre le fonctionnement
  • Réalisation d'un prototype (sur plaque de test)
    • Conception du premier étage (Tonalité de la note)
    • Conception du second étage (Volume de la note)
  • Réalisation du Thérémine final
    • Création du PCB
    • Réalisation de la carte finale
    • Réalisation du boîtier
  • Utilisation des données analogiques fournies pour émuler un dispositif de commande
  • Mise en réseau du dispositif pour contrôler plusieurs machines (optionnel)

Planning prévisionnel

Planning Previsionnel.PNG
  • Suite à l'élaboration du cahier des charges (première semaine), le but est de concevoir rapidement un prototype (semaine 2 et 3) afin de valider son bon fonctionnement et avancer sur la seconde partie (partie informatique) qui nous semble plus compliquée à réaliser (environ 4 semaines).
  • Les deux dernières semaines de projet permettront de réaliser les tests finaux, de résoudre les problèmes possibles ainsi que la vidéo de présentation.

Avancement du Projet

Semaine 1 (21 janvier - 31 janvier)

  • Élaboration du cahier des charges après entretiens avec nos encadrants
  • Étude bibliographique sur les Thérémines déjà réalisés
  • Recherche et énumération des composants nécessaires pour la réalisation du prototype

Semaine 2 (2 février - 7 février)

  • Fonctionnement du Thérémine

Lorsqu'on alimente le Thérémine, on crée un champ électromagnétique autour des deux antennes. Ces antennes vont capter les variations d'ondes électromagnétiques qui sont créées par la main du joueur. Plus on approche la main de l'antenne verticale (antenne gérant la tonalité), on augmente la fréquence de la note. On aura donc une note aiguë. En ce qui concerne l'antenne horizontale (antenne gérant le volume de la note), le déplacement de la main près de l'antenne va diminuer le volume et le fait d'éloigner la main va l'augmenter.

Il existe actuellement plusieurs montages électroniques différents permettant de créer son propre Thérémine. Cependant, le schéma général de fonctionnement reste assez identique.

Schéma général de fonctionnement (détail des différentes fonctions)

Le principe de base (que ce soit pour la gestion de la tonalité ou du volume) est d'utiliser deux oscillateurs Haute Fréquence. Un oscillateur va générer une fréquence fixe (aussi appelée fréquence de référence) tandis que l'autre va générer une fréquence variable. Ces deux signaux (de l'ordre de plusieurs kHz) vont ensuite être implantés dans un mélangeur afin d'obtenir à la sortie de ce mélangeur, la somme de ces signaux ainsi que leur différence. L'oreille humaine ne pouvant distinguer que des sons compris entre 20 Hz et 20 kHz, un filtre (de type "passe-bas") doit être placé à la suite du mélangeur afin de ne garder que la différence des deux signaux. Selon les signaux choisis, la différence devrait être comprise dans la bande de fréquence audible par l'oreille humaine.

Pour la gestion du volume, on retrouve à peu près le même principe. Seul le filtrage à la sortie du mélangeur sera différent. En effet, ce ne sera plus un filtre "passe-bas ", mais un convertisseur "fréquence-tension".

Enfin, les deux informations fournies par ces deux étages (tonalité et volume) sont ensuite multipliées puis amplifiées afin d'obtenir des signaux utilisables par le haut-parleur.

Semaine 3 (9 février - 14 février)

  • N'ayant pas tout le matériel et ne pouvant donc pas réaliser le prototype, nous avons commencé l'étude de la deuxième partie concernant le traitement des données analogiques par l'arduino.
  • Début de l'élaboration du schéma électrique du Thérémine possédant une seule antenne (volume non géré)


Semaine 4 (16 février - 21 février)

  • Schéma électrique du Thérémine finalisé
Schéma électrique du Thérémine avec une seule antenne réalisé sous Altium Designer (détail des différentes fonctions)

Semaine 5 (23 février - 28 février)

  • Avancement du programme en Langage C permettant de récupérer les données analogiques d'un signal périodique.

Il est nécessaire de numériser avec l’Arduino le signal créé par le Thérémine afin de pouvoir traiter ce signal et émuler un dispositif de commande.

Nous avons, pour commencer, utilisé un générateur basse fréquence afin de simuler le signal que nous devrions obtenir avec le Thérémine.

Ce signal audio est un signal périodique. Ses véritables caractéristiques (plage de fréquence, amplitude…) seront déterminées ultérieurement, une fois le prototype conçu et les tests réalisés. Le signal ainsi crée est connecté sur l'entrée A0 de l'Arduino. Ensuite les échantillons seront stockés dans un tableau d'entiers. Ce tableau permet de stocker temporairement les différentes valeurs qui vont servir ensuite à la fonction réalisant le calcul de la fréquence.

Pour le calcul de la fréquence du signal, il faut repérer le maximum de la fonction et ensuite compter le nombre de points pour atteindre le second maximum. En multipliant le nombre de points obtenu par la durée entre deux échantillons on obtient alors la période du signal. La valeur de la fréquence (de type int) calculée doit être ensuite convertie en un caractère (de type char) pour ainsi être envoyée par la liaison série de l’Arduino vers le PC. Après cet envoi, le tableau d’entiers est ensuite réinitialisé pour permettre un nouveau calcul de la fréquence du signal entrant.

Après tests, il apparaît que notre fonction de calcul de la fréquence n'est pas opérationnelle...

Semaine 6 (9 mars - 14 mars)

  • Elaboration du circuit électrique sur plaque d'essai:

Schémas de câblage des composants
Amplificateur audio LM386
Portes inverseuses CD4069UBE

  • Début de la réalisation du PCB sur altium

Semaine 7 (16 mars - 21 mars)

  • Fin du câblage sur plaque d'essai

Après les tests, nous obtenons bien un son qui varie selon la distance entre la main et l'antenne (cette distance est encore faible). Le son obtenu initialement était bien trop faible même après avoir agit sur le potentiomètre de volume. Après plusieurs hypothèses et tests, il apparaît que l'étage permettant le filtrage basse fréquence ne donne pas un bon fonctionnement.

Montage sur plaque d'essai du prototype(avec une seule antenne (hauteur de la note)
Oscillogramme: Oscillateur de référence
Oscillogramme: Oscillateur variable



  • Fin d'élaboration du PCB sur Altium

Suite aux conseils de Monsieur Flamen certaines modifications sont nécessaires (optimisation des pistes, changement d'empreintes, plan de masse à insérer...)

Semaine 8 (23 mars - 28 mars)

  • Modification et finalisation du PCB
PCB final réalisé sous Altium Designer
  • Modification du prototype

Semaine 9 (30 mars - 4 avril)

  • Retour à la partie programmation
    • Modification et tests de la fonction calcul fréquence
    • Début de la partie "dispositif de commande" avec l'utilisation d'X Window

Semaine 10 (6 avril - 11 avril)

  • Réalisation du boîtier
    • utilisation de la découpe laser pour créer les 6 faces du boîtier
    • De dimensions compactes, il doit accueillir l'Arduino ainsi que la carte électronique du Thérémine afin de créer un ensemble portable. Les différents potentiomètres sont accessibles sur le côté gauche.
Photographie du boîtier final
  • Réalisation de la carte
    • Après implantation des différents composants, il apparaît que l'empreinte choisie lors de la conception du PCB sur Altium ne correspond pas au régulateur L7805CV.
    • Suite aux tests, le circuit électronique donne des résultats un peu plus satisfaisants que le prototype réalisé sur plaque d'essai (diminution du nombre de fils, plan de masse). Cependant, deux points sont à améliorer: réduction du son lorsque la main n'est pas présente devant l'antenne ainsi qu'améliorer la distance d'approche (celle-ci n'étant pas très importante). Ce qui permettra de caractériser au mieux notre Thérémine (bande de fréquence et distance de détection).


Circuit électronique du Thérémine

Semaine 11 (13 avril - 18 avril)

  • Dernière Amélioration du Thérémine

En observant le signal de sortie du Thérémine (signal injecté au niveau du haut parleur), on constate qu'il est assez bruité et est très sujet aux interférences. Le problème est résolu par l'utilisation d'un câble multibrins blindé fourni par M. Flamen ainsi que la mise à la masse du "boitier-interrupteur" présent sous le potentiomètre logarithmique gérant le volume du Thérémine.On obtient finalement une sinusoïde bien plus nette.

Signal de sortie du Thérémine (avant modification)
Signal de sortie du Thérémine (après modification)


  • Premier test d'application sous le système graphique X11
Création d'une fenêtre virtuelle avec apparition d'une phrase (au lancement de l'application)
Création d'une seconde fenêtre virtuelle après un clic de la souris


Semaine 12 (20 avril - 25 avril)

  • Réalisation de la vidéo de présentation du projet avec M. Laurent Engels le mercredi 22 avril
  • Suite de la réalisation de la partie informatique

La fonction de traitement de signal envoyé par le Thérémine n’étant toujours pas fonctionnelle, nous avons testé l’application Xwindow avec un essai basique de l’arduino.

En effet, dès que l’arduino détecte une valeur sur son port A, il doit émettre un caractère (dans notre cas le caractère “A”) par le port série. Cette action est réalisée par la fonction send_serial.

Ensuite, l'application X11 présente sur la machine doit pouvoir afficher une fenêtre avec un rectangle vert de taille prédéfinie dès que l'Arduino détecte une donnée sur l'une des entrées de son port A.

Fenetre virtuelle X11

Cette première application donne un bon fonctionnement.

Bilan

Finalement, ce projet nous aura confronté à la difficulté de définir soi-même un cahier des charges mais aussi de trouver les solutions les plus efficaces pour y répondre.

Au bout de ces 12 semaines, nous avons pu répondre en partie à la problématique qui nous a été posée initialement, en réalisant un Thérémine avec un fonctionnement plutôt satisfaisant. Nous sommes cependant déçus, de ne pas avoir réussi à fournir une solution concernant la seconde partie du projet qui était l’émulation de la souris. En effet, après plusieurs tentatives non fructueuses, la communication entre le Thérémine et l’application Xwindow n’est pas achevée, le dispositif complet n'est donc pas opérationnel.

Néanmoins, la façon dont nous avons réalisé le projet doit pouvoir permettre de le continuer et de l'améliorer assez aisément.

Enfin, ce projet nous a permis de travailler en binôme, avec les difficultés qui en découlent (être en accord avec l’autre, recherche d’efficacité...).

Rapport

Rapport de projet : Fichier:IMA4 E-Theremin Chauchard Imbert.pdf

Références

Documentation Thérémine: lien1 lien2

Datasheet amplificateur LM386 :[1]

Datasheet portes inverseuses CD4069UB : [2]

Documentation Arduino : Correspondance des broches, Datasheet Atmega2560

Librairie Xlib :Exemples de fonctions