Table des matières:

Technologie portable : gant à changement de voix : 7 étapes
Technologie portable : gant à changement de voix : 7 étapes

Vidéo: Technologie portable : gant à changement de voix : 7 étapes

Vidéo: Technologie portable : gant à changement de voix : 7 étapes
Vidéo: Ne JAMAIS partir SANS SA COPINE 🫢 #humour #blague #drole #couplegoals #internationalcouple #shorts 2024, Novembre
Anonim
Technologie portable: gant qui change la voix
Technologie portable: gant qui change la voix
Technologie portable: gant qui change la voix
Technologie portable: gant qui change la voix

Eh bien, il semble que les gants aux pouvoirs incroyables soient à la mode ces jours-ci. Alors que l'Infinity Gauntlet de Thanos est un gant assez puissant, nous voulions faire un gant qui pourrait faire quelque chose d'encore plus remarquable: changer la voix du porteur en temps réel.

Ce Instructable fournit une procédure pas à pas de la façon dont nous avons conçu un gant à changement de voix. Notre conception a utilisé divers capteurs et un microcontrôleur dans le gant pour détecter les mouvements, qui ont été envoyés via un code Arduino à un patch Max, où notre signal audio a ensuite été modifié et déformé de manière amusante. Les capteurs, mouvements et altérations sonores spécifiques que nous avons utilisés sont tous flexibles pour différentes considérations; ce n'est qu'une façon de créer un gant qui change la voix !

Ce projet faisait partie d'un partenariat communautaire entre les étudiants du Pomona College et la Fremont Academy of Engineering Femineers. C'est un mélange vraiment amusant d'éléments d'ingénierie électronique et de musique électronique !

Étape 1: Matériaux

Matériaux
Matériaux
Matériaux
Matériaux
Matériaux
Matériaux

Les pièces:

  • Microcontrôleur HexWear (ATmega32U4) (https://hexwear.com/)
  • Accéléromètre MMA8451 (https://www.adafruit.com/product/2019)
  • Capteurs Flex courts (x4) (https://www.adafruit.com/product/1070)
  • Gant de course léger
  • #2 vis et rondelles (x8)
  • Connecteurs à sertir; Calibre 22-18 (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100pk)
  • Résistance 50kΩ (x4)
  • Fil (calibre ~20)
  • Goupille de sécurité autocollante
  • Feutre ou autre tissu (~10 po²)
  • Fil à coudre
  • Fermetures éclair
  • Portable
  • Micro USB

Outils

  • Kit de soudure
  • Pinces à dénuder et coupe-fil
  • Ruban électrique
  • Pistolet à air chaud
  • Tournevis
  • Ciseaux
  • Aiguille à coudre

Logiciel:

  • Max par le cyclisme '74 (https://cycling74.com)
  • Logiciel Arduino (https://www.arduino.cc/en/Main/Software)

Étape 2: Installation du logiciel

Nous commençons par ce qui est vraiment la partie la plus exaltante de tout projet: installer des bibliothèques (et plus encore).

Arduino:

Téléchargez et installez le logiciel Arduino (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (Windows uniquement, les utilisateurs Mac peuvent ignorer cette étape) Installez le pilote en visitant https://www.redgerbera.com/pages/hexwear-driver-installation. Téléchargez et installez le pilote (le fichier.exe répertorié à l'étape 2 en haut de la page RedGerbera liée).

2) Installez la bibliothèque requise pour Hexware. Ouvrez l'IDE Arduino. Sous "Fichier", sélectionnez "Préférences". Dans l'espace prévu pour les URL du gestionnaire de tableaux supplémentaires, collez

github.com/RedGerbera/Gerbera-Boards/raw/master/package_RedGerbera_index.json.

Cliquez ensuite sur « OK ».

Allez dans Outils -> Carte: -> Gestionnaire de carte. Dans le menu en haut à gauche, sélectionnez « Contribué ».

Recherchez, puis cliquez sur Gerbera Boards et cliquez sur Installer. Quittez et rouvrez Arduino IDE.

Pour vous assurer que la bibliothèque est correctement installée, accédez à Outils -> Carte et faites défiler jusqu'en bas du menu. Vous devriez voir une section intitulée "Gerbera Boards", sous laquelle devrait au moins apparaître HexWear (sinon plus de boards comme mini-HexWear).

Accéléromètre:

Téléchargez et installez la bibliothèque d'accéléromètre (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Étape 3: Fixation de l'accéléromètre

Fixation de l'accéléromètre
Fixation de l'accéléromètre
Fixation de l'accéléromètre
Fixation de l'accéléromètre

Nous avons besoin de deux principaux types de capteurs pour interagir avec ce projet: un accéléromètre et des capteurs flexibles. Nous les examinerons un par un, en commençant par l'accéléromètre. Tout d'abord, nous avons besoin que les connexions matérielles correspondent.

Afin d'éviter d'endommager votre Hex, nous vous recommandons de mettre une vis n°2 et une rondelle dans les ports souhaités, puis de fixer toutes les connexions à cette vis. Pour éviter que quoi que ce soit ne se desserre lorsque vous jouez avec le gant, les connexions doivent être soudées et/ou serties. En utilisant quelques pouces de fil pour chaque connexion, effectuez les connexions suivantes de l'hexagone à l'accéléromètre (voir les brochages ci-dessus pour référence):

TENSION D'ENTRÉE VINGROUND GNDSCL/D3 SCLSDA/D2 SDA

Avec tout câblé, nous sommes prêts à tester!

À titre de test, exécutez l'exemple de code de l'accéléromètre dans Arduino (Fichier-> Exemples-> Adafruit_MMA8451-> MMA8451demo), en vous assurant qu'il peut sortir sur le moniteur série. Il devrait produire l'accélération due à la gravité (~10 m/s) dans la direction z lorsqu'il est maintenu à niveau. En inclinant l'accéléromètre, cette accélération sera mesurée dans la direction x ou y; nous allons l'utiliser pour permettre au porteur de changer le son en tournant sa main !

Maintenant, nous devons présenter les données de l'accéléromètre de manière à ce qu'elles puissent être interfacées avec Max. Pour ce faire, nous devons imprimer les valeurs de x et y, éventuellement modifiées pour correspondre à la plage souhaitée (voir partie 6). Dans notre code joint ici, nous procédons comme suit:

//Mesure la direction x et la direction y. Nous divisons et multiplions pour entrer dans les bonnes plages pour MAX (plage de 1000 en x et plage de 40 en y) xdir = event.acceleration.x/0.02; ydir = abs(événement.accélération.y)*2; //Imprime tout dans un format lisible pour Max - avec des espaces entre chaque numéro Serial.print(xdir); Serial.print(" ");

Cela devrait faire en sorte que l'hexagone imprime les valeurs modifiées des directions x et y de l'accéléromètre à chaque ligne. Nous sommes maintenant prêts à ajouter les capteurs de flexion !

Étape 4: Fixation des capteurs Flex

Fixation des capteurs Flex
Fixation des capteurs Flex
Fixation des capteurs Flex
Fixation des capteurs Flex
Fixation des capteurs Flex
Fixation des capteurs Flex

Le porteur peut obtenir de nombreux contrôles sonores potentiels si nous pouvons détecter les doigts qui fléchissent. Les capteurs flexibles feront exactement cela. Chaque capteur de flexion est essentiellement un potentiomètre, où non fléchi a une résistance d'environ 25KΩ, tandis que complètement fléchi a une résistance d'environ 100KΩ. Nous plaçons chaque capteur flexible dans un simple diviseur de tension avec une résistance de 50K, comme le montre la première image.

Encore une fois, en utilisant des longueurs de fil assez courtes (gardez à l'esprit que tout cela s'adaptera au dos d'un gant), soudez quatre modules diviseurs de tension. Les quatre modules partageront le même Vin et la même terre - nous avons torsadé les extrémités dénudées des fils pour n'avoir qu'un seul fil à souder. Enfin, prenez les quatre modules et faites les connexions montrées dans la deuxième image (si quelqu'un sait comment faire cela sans faire un désordre horriblement emmêlé, veuillez révéler vos secrets).

Maintenant, nous avons besoin du code Arduino pour lire les tensions de chaque capteur. Pour nos besoins, nous avons traité les capteurs flexibles comme des commutateurs; ils étaient allumés ou éteints. En tant que tel, notre code définit simplement un seuil de tension - au-dessus de ce seuil, nous sortons un 1 sur le port série (ce qui signifie que le capteur est plié), sinon nous sortons un 0:

// Prend un certain nombre de

échantillons analogiques et additionnez-les pour chaque capteur Flex

while (sample_count < NUM_SAMPLES) {

sum10 += analogRead(A10);

sum9 += analogLecture(A9);

sum7 += analogRead(A7);

sum11 += analogRead(A11);

sample_count++;

//Petit délai pour ne pas les prendre trop vite

retard(5);

}

// calcul de la tension, moyenne sur les échantillons rapides

// utiliser 5.0 pour un ADC 5.0V

tension de référence

// 5.015V est le calibré

tension de référence

tension10 = ((float)somme10 /

(float)NUM_SAMPLES * 5.015) / 1024.0;

tension9 = ((float)somme9/

(float)NUM_SAMPLES * 5.015) / 1024.0;

tension7 = ((float)somme7 /

(float)NUM_SAMPLES * 5.015) / 1024.0;

tension11 = ((float)somme11 /

(float)NUM_SAMPLES * 5.015) / 1024.0;

//Vérifiez si chaque capteur flex

est supérieur au seuil (seuil) - si c'est le cas, définissez le nombre

//Petit doigt

si (tension10 > seuil)

{

//-5 pour augmenter

hauteur de voix d'une octave

flex10 = -10;

}

sinon flex10 = 0;

//Annulaire

si (tension9 >

(seuil-0.4)) {

//5 pour baisser

hauteur de voix d'une octave

flex9 = 5;

}

sinon flex9 = 0;

//Majeur

si (tension7 > seuil) {

// pour définir

effet de réverbération

flex7 = 1;

}

sinon flex7 = 0;

//L'index

si (tension11 > seuil)

{

//50 à définir

cycles à 50

flex11 = 93;

}

sinon flex11 = 0;

//Réinitialiser tout le comptage

variable à 0 pour la prochaine boucle

sample_count = 0;

somme10 = 0;

somme9 = 0;

somme7 = 0;

somme11 = 0;

À ce stade, le port série doit afficher des valeurs pour l'orientation de l'accéléromètre et également si chaque capteur de flexion est plié. Nous sommes prêts à faire parler notre code Arduino à Max !

Étape 5: Interfaçage avec Max

Interfaçage avec Max
Interfaçage avec Max

Maintenant que le code Hex crache beaucoup de chiffres via le port série, nous avons besoin du logiciel Max pour lire ces signaux. Le bloc de code illustré ci-dessus fait exactement cela ! Vous êtes le bienvenu.

Remarque importante: après avoir téléchargé le code sur le Hex, fermez toutes les fenêtres du port série, puis modifiez la lettre encerclée dans le code Max pour qu'elle corresponde au port Hex. Si vous n'êtes pas sûr de la lettre à définir, appuyez sur la partie « imprimer » du code Max pour répertorier tous les ports connectés.

La ligne imprimée du port série Hex est lue à travers le bloc de code Max, puis divisée en fonction des délimiteurs d'espace. La sortie à la fin du bloc Max vous permet de saisir chaque nombre individuellement, nous allons donc connecter le premier espace de sortie à l'endroit où nous voulons que la direction x de l'accéléromètre aille, le deuxième espace sera la direction y, etc. Pour maintenant, connectez-les simplement à des blocs numériques pour vous assurer qu'ils fonctionnent. Vous devriez pouvoir déplacer l'accéléromètre et les capteurs de flexion et voir les chiffres changer dans le logiciel Max.

Étape 6: Construire le reste du code Max

Compte tenu de la puissance du langage Max, vous pouvez vraiment laisser libre cours à votre imagination avec toutes les façons dont vous pouvez modifier le signal sonore entrant avec votre gant de puissance magique. Néanmoins, si vous êtes à court d'idées, vous trouverez ci-dessus un aperçu de ce que fait notre code Max et de son fonctionnement.

Pour chaque paramètre que vous essayez de modifier, vous voudrez probablement jouer avec la plage de valeurs provenant du code Arduino pour obtenir la bonne sensibilité.

Quelques autres conseils de dépannage Max:

  • Si vous n'entendez pas de son

    • assurez-vous que Max est configuré pour recevoir l'audio de votre microphone (Options Audio Status Input Device)
    • assurez-vous que le curseur Master Volume dans Max est activé et tout autre contrôle de volume que vous pourriez avoir dans votre code
  • Si le code ne semble rien faire

    • assurez-vous que votre patch est verrouillé (symbole de verrouillage dans le coin inférieur gauche)
    • assurez-vous via les lectures dans le patch Max que votre patch Max reçoit toujours des données du port série Arduino. Sinon, essayez de réinitialiser le port série (comme indiqué à l'étape 5) et/ou de vérifier vos connexions de câblage physiques.
  • Bruits d'écrêtage étranges lors de la modification des paramètres

    c'est quelque chose à voir avec le fonctionnement de ~tapin et ~tapout; en particulier que lorsque vous modifiez leurs valeurs, elles se réinitialisent, ce qui provoque l'écrêtage. Compte tenu de notre connaissance limitée du programme, nous sommes presque certains qu'il existe un meilleur moyen de le faire dans Max et d'éliminer le problème…

Étape 7: mettre littéralement tout cela ensemble

Littéralement tout mettre ensemble
Littéralement tout mettre ensemble
Littéralement tout mettre ensemble
Littéralement tout mettre ensemble
Littéralement tout mettre ensemble
Littéralement tout mettre ensemble
Littéralement tout mettre ensemble
Littéralement tout mettre ensemble

Il ne reste plus qu'à attacher nos circuits à notre gant. Prenez votre tissu supplémentaire et découpez des bandes légèrement plus grandes que les capteurs de flexion. Cousez le tissu supplémentaire au doigt du gant où la jointure se plie, en laissant une sorte de manche pour le capteur de flexion (nous ne pouvons pas simplement coller les capteurs de flexion directement sur le gant car le tissu du gant s'étire lorsque les doigts se plient). Une fois que la manche est presque entièrement cousue, faites glisser le capteur de flexion et cousez soigneusement les fils au gant, en fixant le capteur de flexion en place. Répétez cette opération pour chaque capteur de flex.

Ensuite, utilisez la goupille de sécurité auto-adhésive pour fixer l'hexagone à l'arrière du gant (vous voudrez peut-être mettre de la colle chaude sur la goupille pour vous assurer qu'elle ne se défait pas pendant le port). Coudre l'accéléromètre au poignet du gant. Enfin, utilisez la magie des attaches zippées pour nettoyer magnifiquement tous les fils disgracieux.

Vous êtes prêt à mettre votre gant de chant ultime à l'épreuve ! (Puis-nous fortement recommander « Harder Better Faster Stronger » de Daft Punk pour montrer pleinement vos capacités de changement de voix)

Conseillé: