Table des matières:
- Étape 1: Matériaux
- Étape 2: Installation du logiciel
- Étape 3: Fixation de l'accéléromètre
- Étape 4: Fixation des capteurs Flex
- Étape 5: Interfaçage avec Max
- Étape 6: Construire le reste du code Max
- Étape 7: mettre littéralement tout cela ensemble
Vidéo: Technologie portable : gant à changement de voix : 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
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
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
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
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
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
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é:
Technologie portable pour la maladie de Parkinson : 4 étapes
Technologie portable de la maladie de Parkinson : Plus de 10 millions de personnes dans le monde vivent avec la maladie de Parkinson (MP). Trouble progressif du système nerveux qui provoque une raideur et affecte les mouvements du patient. En termes plus simples, de nombreuses personnes souffraient de la maladie de Parkinson mais
Représentation graphique du changement de température du changement climatique en Python : 6 étapes
Représentation graphique du changement de température à partir du changement climatique en Python : le changement climatique est un gros problème. Et beaucoup de gens ne savent pas à quel point il a augmenté. Dans ce instructable, nous allons représenter graphiquement le changement de température dans le climat en raison du changement climatique. Pour une aide-mémoire, vous pouvez consulter le fichier python ci-dessous
Projet final de technologie portable - Casque DJ : 6 étapes
Projet final de technologie portable - Casque DJ : L'objectif de ce projet est de fabriquer un casque DJ avec des LED réactifs à la musique pour le spectacle et le facteur wow. Nous utilisons une bande LED adressable d'Amazon.com ainsi qu'un casque de moto, un Arduino uno et du fil
Technologie portable pour les enfants : Brassard de héros : 4 étapes
Wearable Tech for Kids : Hero Brassard : cette instructable couvrira comment faire un « brassard de héros » qui s'allume lorsqu'il est porté. En utilisant du ruban adhésif en tissu conducteur, du fil conducteur et des LED à coudre, c'est une excellente activité pour que les élèves apprennent les bases des circuits et de la technologie portable. Te
Infigo - (un gant portable alimenté par l'intelligence artificielle) : 9 étapes
Infigo - (un gant portable alimenté par l'intelligence artificielle): Infigo est un gant portable alimenté par l'IA (intelligence artificielle) basé sur les principes de la technologie d'assistance (AT) qui améliorera la productivité de la société altérée. L'intelligence artificielle et l'apprentissage automatique ne peuvent pas remplacer l'intelligence humaine