Inhoudsopgave:

Draagbare technologie: stemveranderende handschoen - Ajarnpa
Draagbare technologie: stemveranderende handschoen - Ajarnpa

Video: Draagbare technologie: stemveranderende handschoen - Ajarnpa

Video: Draagbare technologie: stemveranderende handschoen - Ajarnpa
Video: Новый народный ТОП? Смарт часы Redmi Watch 4. HyperOS не вывозит. Полный обзор со всеми тестами 2024, Juli-
Anonim
Draagbare technologie: stemveranderende handschoen
Draagbare technologie: stemveranderende handschoen
Draagbare technologie: stemveranderende handschoen
Draagbare technologie: stemveranderende handschoen

Nou, het lijkt erop dat handschoenen met ongelooflijke krachten tegenwoordig een rage zijn. Hoewel de Infinity Gauntlet van Thanos een behoorlijk krachtige handschoen is, wilden we een handschoen maken die nog iets opmerkelijks zou kunnen doen: de stem van de drager in realtime veranderen.

Deze Instructable biedt een overzicht van hoe we een stemveranderende handschoen hebben ontworpen. Ons ontwerp maakte gebruik van verschillende sensoren en een microcontroller in de handschoen om bewegingen te detecteren, die via een Arduino-code naar een Max-patch werden gestuurd, waar ons audiosignaal vervolgens op leuke manieren werd gewijzigd en vervormd. De specifieke sensoren, bewegingen en geluidsaanpassingen die we hebben gebruikt, zijn allemaal flexibel voor verschillende overwegingen; dit is slechts één manier om een stemveranderende handschoen te maken!

Dit project maakte deel uit van een gemeenschapspartnerschap tussen Pomona College-studenten en de Fremont Academy of Engineering Femineers. Het is een echt leuke mix van elektronische techniek en elektronische muziekelementen!

Stap 1: Materialen

Materialen
Materialen
Materialen
Materialen
Materialen
Materialen

Onderdelen:

  • HexWear-microcontroller (ATmega32U4) (https://hexwear.com/)
  • MMA8451 versnellingsmeter (https://www.adafruit.com/product/2019)
  • Korte Flex-sensoren (x4) (https://www.adafruit.com/product/1070)
  • Lichtgewicht hardloophandschoen
  • #2 schroeven en ringen (x8)
  • Krimpaansluitingen; 22-18 gauge (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100 pk)
  • 50kΩ weerstand (x4)
  • Draad (~ 20 meter)
  • Zelfklevende veiligheidsspeld
  • Vilt of andere stof (~ 10 vierkante inch)
  • Naaigaren
  • Zipties
  • laptop
  • USB-microfoon

Gereedschap

  • Soldeer kit
  • Draadstrippers en draadknippers
  • Elektrische tape
  • Heteluchtpistool
  • Schroevendraaier
  • Schaar
  • Naald

Software:

  • Max van Cycling '74 (https://cycling74.com)
  • Arduino-software (https://www.arduino.cc/en/Main/Software)

Stap 2: De software installeren

We beginnen met wat echt het meest opwindende deel van elk project is: het installeren van bibliotheken (en meer).

Arduino:

Download en installeer de Arduino-software (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (Alleen Windows, Mac-gebruikers kunnen deze stap overslaan) Installeer de driver door naar https://www.redgerbera.com/pages/hexwear-driver-installation te gaan. Download en installeer het stuurprogramma (het.exe-bestand vermeld in stap 2 bovenaan de gekoppelde RedGerbera-pagina).

2) Installeer de vereiste bibliotheek voor Hexware. Open de Arduino-IDE. Selecteer onder "Bestand" "Voorkeuren". Plak in de ruimte die is voorzien voor URL's voor extra bordbeheer:

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

Klik vervolgens op "OK".

Ga naar Tools -> Board: -> Board Manager. Selecteer 'Bijgedragen' in het menu in de linkerbovenhoek.

Zoek naar en klik vervolgens op Gerbera Boards en klik op Installeren. Sluit Arduino IDE af en open het opnieuw.

Om ervoor te zorgen dat de bibliotheek correct is geïnstalleerd, gaat u naar Extra -> Bord en scrolt u naar de onderkant van het menu. Je zou een sectie moeten zien met de titel "Gerbera Boards", waaronder er op zijn minst HexWear zou moeten verschijnen (zo niet meer boards zoals mini-HexWear).

versnellingsmeter:

Download en installeer de accelerometer-bibliotheek (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Stap 3: De versnellingsmeter bevestigen

De versnellingsmeter bevestigen
De versnellingsmeter bevestigen
De versnellingsmeter bevestigen
De versnellingsmeter bevestigen

We hebben twee hoofdtypen sensoren nodig om met dit project te kunnen communiceren: een versnellingsmeter en flexsensoren. We zullen deze één voor één bekijken, te beginnen met de versnellingsmeter. Ten eerste hebben we de hardwareverbindingen nodig om overeen te komen.

Om schade aan je Hex te voorkomen, raden we aan om een nr. 2 schroef en sluitring door de gewenste poorten te steken en vervolgens alle verbindingen aan die schroef te bevestigen. Om te voorkomen dat er iets losraakt tijdens het spelen met de handschoen, dienen verbindingen gesoldeerd en/of gekrompen te worden. Gebruik een draad van enkele centimeters voor elke verbinding en maak de volgende verbindingen van de Hex naar de versnellingsmeter (zie de pin-outs hierboven ter referentie):

INGANGSSPANNING VINGROUND GNDSCL/D3 SCLSDA/D2 SDA

Nu alles is aangesloten, zijn we klaar om te testen!

Voer als test de voorbeeldcode van de versnellingsmeter uit in Arduino (Bestand->Voorbeelden->Adafruit_MMA8451->MMA8451demo), en zorg ervoor dat deze naar de seriële monitor kan worden uitgevoerd. Het moet de versnelling als gevolg van de zwaartekracht (~ 10 m/s) in de z-richting uitvoeren wanneer het waterpas wordt gehouden. Door de versnellingsmeter te kantelen, wordt deze versnelling in de x- of y-richting gemeten; we zullen dit gebruiken om de drager in staat te stellen het geluid te veranderen door zijn hand te draaien!

Nu moeten we de gegevens van de versnellingsmeter zo presenteren dat ze kunnen worden gekoppeld aan Max. Om dit te doen, moeten we de waarden van x en y afdrukken, misschien aangepast om overeen te komen met het gewenste bereik (zie deel 6). In onze code die hier is bijgevoegd, doen we het volgende:

// Meet de x-richting en y-richting. We delen en vermenigvuldigen om in het juiste bereik te komen voor MAX (bereik van 1000 in x en bereik van 40 in y) xdir = event.acceleration.x/0.02; ydir = abs(gebeurtenis.versnelling.y)*2; // Print alles in een leesbaar formaat voor Max - met spaties tussen elk nummer Serial.print(xdir); Serieel.print(" ");

Hierdoor zou de Hex de gewijzigde waarden van de x- en y-richtingen van de versnellingsmeter op elke regel moeten afdrukken. Nu zijn we klaar om de flexsensoren toe te voegen!

Stap 4: De flexsensoren bevestigen

De flexibele sensoren bevestigen
De flexibele sensoren bevestigen
De flexibele sensoren bevestigen
De flexibele sensoren bevestigen
De flexibele sensoren bevestigen
De flexibele sensoren bevestigen

De drager kan veel potentiële geluidscontroles krijgen als we buigende vingers kunnen detecteren. De flexsensoren doen precies dat. Elke flexsensor is in wezen een potentiometer, waarbij niet-gebogen een weerstand van ~ 25 KΩ heeft, terwijl volledig gebogen een weerstand heeft van ~ 100 KΩ. We plaatsen elke flexsensor in een eenvoudige spanningsdeler met een weerstand van 50K, zoals weergegeven in de eerste afbeelding.

Gebruik opnieuw vrij korte stukken draad (houd er rekening mee dat dit allemaal op de achterkant van een handschoen past), soldeer vier spanningsdelermodules. De vier modules zullen dezelfde Vin en aarde delen - we hebben de gestripte uiteinden van de draden in elkaar gedraaid, zodat we maar één draad hebben om te solderen. Neem ten slotte de vier modules en maak de verbindingen die in de tweede afbeelding worden getoond (als iemand weet hoe dit moet zonder een vreselijke warboel te maken, onthul dan je geheimen).

Nu hebben we de Arduino-code nodig om de spanningen van elke sensor in te lezen. Voor onze doeleinden hebben we de flexsensoren als schakelaars behandeld; ze waren aan of uit. Als zodanig stelt onze code eenvoudig een spanningsdrempel in - boven deze drempel voeren we een 1 uit naar de seriële poort (wat betekent dat de sensor gebogen is), anders voeren we een 0 uit:

// Neem een aantal

analoge samples en tel ze op voor elke Flex-sensor

terwijl (sample_count < NUM_SAMPLES) {

sum10 += analoog lezen (A10);

sum9 += analoog lezen (A9);

sum7 += analoog lezen (A7);

sum11 += analoog lezen (A11);

voorbeeld_count++;

//Korte vertraging om ze niet te snel te nemen

vertraging (5);

}

// bereken de spanning, het middelen over de snelle steekproeven

// gebruik 5.0 voor een 5.0V ADC

referentiespanning

// 5.015V is de gekalibreerde

referentiespanning

spanning10 = ((float)som10 /

(float)NUM_SAMPLES * 5.015) / 1024.0;

spanning9 = ((float)som9/

(float) NUM_SAMPLES * 5.015) / 1024.0;

spanning7 = ((float)som7 /

(float)NUM_SAMPLES * 5.015) / 1024.0;

spanning11 = ((float)som11 /

(float) NUM_SAMPLES * 5.015) / 1024.0;

//Controleer of elke flex-sensor

is groter dan drempel (thresh) - zo ja, stel het nummer in

// Pink vinger

if (voltage10 > thresh)

{

//-5 om te verhogen

stem toonhoogte met één octaaf

flex10 = -10;

}

anders flex10 = 0;

//Ringvinger

als (spanning9 >

(dors-0,4)) {

//5 om te verlagen

stem toonhoogte met één octaaf

flex9 = 5;

}

anders flex9 = 0;

//Middelvinger

if (voltage7 > dorsen) {

//1 om in te stellen

galm effect

flex7 = 1;

}

anders flex7 = 0;

//Wijsvinger

if (voltage11 > thresh)

{

//50 om in te stellen

cycli tot 50

flex11 = 93;

}

anders flex11 = 0;

// Reset al het tellen

variabele naar 0 voor de volgende lus

sample_count = 0;

som10 = 0;

som9 = 0;

som7 = 0;

som11 = 0;

Op dit punt moet de seriële poort waarden weergeven voor de oriëntatie van de versnellingsmeter, en ook of elke flexsensor gebogen is. We zijn klaar om onze Arduino-code met Max te laten praten!

Stap 5: Interface met Max

Interface met Max
Interface met Max

Nu de Hex-code veel cijfers door de seriële poort spuugt, hebben we de Max-software nodig om deze signalen te lezen. Het hierboven afgebeelde codeblok doet precies dat! Heel graag gedaan.

Belangrijke opmerking: nadat u de code naar de Hex hebt geüpload, sluit u alle seriële poortvensters en wijzigt u de omcirkelde letter in de Max-code zodat deze overeenkomt met de Hex-poort. Als u niet zeker weet welke letter u moet instellen, drukt u op het "print"-gedeelte van de Max-code om alle aangesloten poorten weer te geven.

De afgedrukte regel van de seriële poort van de Hex wordt gelezen door het Max-codeblok en vervolgens gesplitst op basis van de spatiescheidingstekens. Met de uitvoer aan het einde van het Max-blok kun je elk nummer afzonderlijk pakken, dus we zullen de eerste uitvoerruimte verbinden met waar we willen dat de x-richting van de versnellingsmeter gaat, de tweede spatie is de y-richting, enz. Voor sluit deze nu gewoon aan op nummerblokken om ervoor te zorgen dat ze werken. Je zou in staat moeten zijn om de versnellingsmeter en flexsensoren te verplaatsen en de cijfers in de Max-software te zien veranderen.

Stap 6: De rest van de Max Code bouwen

Gezien de kracht van de Max-taal, kun je hier echt je fantasie de vrije loop laten met alle manieren waarop je het inkomende geluidssignaal kunt veranderen met je magische krachthandschoen. Maar als u geen ideeën meer heeft, vindt u hierboven een overzicht van wat onze Max-code doet en hoe deze werkt.

Voor elke parameter die u probeert te wijzigen, wilt u waarschijnlijk rommelen met het bereik van waarden die uit de Arduino-code komen om precies de juiste gevoeligheid te krijgen.

Enkele andere Max-tips voor het oplossen van problemen:

  • Als u geen geluid hoort

    • zorg ervoor dat Max is ingesteld om audio van uw microfoon te ontvangen (Options Audio Status Input Device)
    • zorg ervoor dat de Master Volume-schuifregelaar in Max omhoog staat en eventuele andere volumeregelaars die u in uw code hebt
  • Als de code niets lijkt te doen

    • zorg ervoor dat uw patch is vergrendeld (slotsymbool in de linkerbenedenhoek)
    • zorg er via uitlezingen in de Max-patch voor dat uw Max-patch nog steeds gegevens ontvangt van de seriële poort van Arduino. Als dit niet het geval is, probeert u de seriële poort opnieuw in te stellen (zoals beschreven in stap 5) en/of uw fysieke bedradingsverbindingen te controleren.
  • Vreemde clipping-geluiden bij het wijzigen van parameters

    dit heeft te maken met hoe ~tapin en ~tapout werken; met name dat wanneer u hun waarden wijzigt, ze opnieuw worden ingesteld, wat het knippen veroorzaakt. Gezien onze beperkte kennis van het programma, zijn we er vrijwel zeker van dat er een betere manier is om dit in Max te doen en het probleem op te lossen…

Stap 7: Letterlijk alles samenbrengen

Letterlijk alles samenvoegen
Letterlijk alles samenvoegen
Letterlijk alles samenvoegen
Letterlijk alles samenvoegen
Letterlijk alles samenvoegen
Letterlijk alles samenvoegen
Letterlijk alles samenvoegen
Letterlijk alles samenvoegen

Het enige dat we nu nog moeten doen, is onze schakelingen aan onze handschoen bevestigen. Neem je extra stof en knip stroken uit die iets groter zijn dan de flexsensoren. Naai de extra stof aan de vinger van de handschoen waar de knokkel buigt, zodat er een soort mouw overblijft waar de flexsensor in kan zitten (we kunnen de flexsensoren niet zomaar rechtstreeks op de handschoen lijmen omdat de handschoenstof uitrekt als de vingers buigen). Zodra de mouw grotendeels is genaaid, schuift u de flexsensor naar binnen en naait u voorzichtig de draden aan de handschoen, waarbij u de flexsensor op zijn plaats vastzet. Herhaal dit voor elke flexsensor.

Gebruik vervolgens de zelfklevende veiligheidsspeld om de Hex aan de achterkant van de handschoen te bevestigen (misschien wilt u wat hete lijm op de pen doen om ervoor te zorgen dat deze niet losraakt tijdens het dragen). Naai de versnellingsmeter aan de pols van de handschoen. Gebruik ten slotte de magie van kabelbinders om lelijke draden mooi op te ruimen.

Je bent klaar om je ultieme zanghandschoen op de proef te stellen! (Mogen we Daft Punk's "Harder Better Faster Stronger" ten zeerste aanbevelen om volledig te pronken met je stemveranderende capaciteiten)

Aanbevolen: