Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
INTRODUKSJON
I dette prosjektet hadde vi som oppgave å lage en funksjonell bærbar prototype basert på en cyborg -funksjon. Visste du at hjertet ditt synkroniserer med BPM av musikk? Du kan prøve å kontrollere humøret ditt gjennom musikk, men hva om vi lar teknologien hjelpe oss med å roe ned? Vi trenger bare noen komponenter, en Arduino og hodetelefonene dine. La oss innovere!
Prosjekt av Marc Vila, Guillermo Stauffacher og Pau Carcellé
Trinn 1: Materialer og komponenter
Bygningsmaterialer:
- 3D -trykt armbånd
- M3 skruer (x8)
- M3 muttere (x12)
- Rumpetaske
Elektroniske materialer:
-Pulsfrekvenssensor BPM
- Knapper (x2)
- Potensiometer
- LCD C 1602 MODUL
- MODUL DFPLAYER MINI MP3
- 3,5 mm Jack Stereo TRRS HEADSET
- MicroSD -kort
- Arduino Uno -tallerken
- Sveiser
- Bakelittplate
Trinn 2: Design et armbånd
Først lager vi flere skisser for å organisere de forskjellige komponentene i armbåndet.
Med den klare ideen tok vi målinger av de tre armene til gruppemedlemmene, så gjorde vi gjennomsnittet for å finne det optimale målet for designet. Til slutt designer vi produktet med et 3d -program og skriver det ut med en 3D -skriver.
Du kan laste ned. STL -filene her.
Trinn 3: Elektroniske tilkoblinger
Vi fortsetter å gjøre de nødvendige kontrollene av vårt 3d -design, vi foretok en første samling av alle komponentene i prototypen for å se at målingene var korrigerte.
For å koble alle komponentene til Arduino -kortet gjorde vi forskjellige tilkoblinger fra komponentene ved hjelp av 0, 5 meter kabler, på denne måten reduserer vi synligheten til brettet og vi organiserer prototypen bedre.
Trinn 4: Koden
Dette prosjektet er en cyborg -prototype. Tydeligvis har vi ikke introdusert komponentene under huden, så vi har simulert det med et armbånd som en ortose (ekstern enhet påført kroppen for å endre de funksjonelle aspektene).
Koden vår tar brukerens tastetrykk og viser dem ved hjelp av LCD -skjermen. I tillegg til BPM viser skjermen ønsket intensitet slik at brukeren kan sammenligne den med pulsen. Det er mange situasjoner der det er interessant å øke eller redusere din egen BPM. For eksempel må utholdenhetsidrettsutøvere kontrollere pulsasjonene for ikke å bli for slitne. Et daglig eksempel er å ville sove eller roe seg ned i en nervøs situasjon. Det kan også brukes som en terapeutisk metode for personer med autisme for å redusere stresset de føler. Ved siden av skjermen er to knapper for å kontrollere ønsket intensitet og øke eller redusere pulsen. Avhengig av intensiteten spilles en tidligere studert musikkart. Det er studier som viser at musikk kan endre BPM. I følge Beats per Minute av sangen, etterligner menneskekroppen og BPM.
int SetResUp = 11; // pin 10 av Arduino med intensitetsøkningsknapp. int SetResDown = 12; // pin 11 av Arduino med intensitetsknapp
int ResButtonCounter = 0; // ganger teller som øker eller reduserer motstandsinnstillingen, startverdien på 0 int ResButtonUpState = 0; // nåværende tilstand for intensitetsøkningsknappen int ResButtonDownState = 0; // nåværende tilstand for intensitetsknappen int lastResButtonUpState = 0; // siste tilstand av intensitetsøkningsknappen int lastResButtonDownState = 0; // siste tilstand av knappen for reduksjon av intensitet
int pulsPin = 0; // Pulssensor koblet til port A0 // Disse variablene er flyktige fordi de brukes under avbruddsrutinen i den andre kategorien. flyktig int BPM; // Beats per minute flyktig int Signal; // Pulssensordatainngang flyktig int IBI = 600; // Pulstiden flyktig boolsk Pulse = false; // Sant når pulsbølgen er høy, usann når den er Lav flyktig boolsk QS = false;
# definere Start_Byte 0x7E # definere Version_Byte 0xFF # definere Kommando_Lengde 0x06 # definere End_Byte 0xEF # definere Bekreft 0x00 // Returnerer info med kommando 0x41 [0x01: info, 0x00: ingen info]
// PANTALLA #include // Last opp biblioteket for funksjonene på LCD -skjermen #include #include
LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // Angi portene der LCD -skjermen er tilkoblet
// LECTOR #include #include // Last opp biblioteket for funksjonene til modulen dfplayer mini MP3.
char serialData; int nsong; int v;
SoftwareSerial comm (9, 10); // Angi portene der DFPlayer er tilkoblet DFRobotDFPlayerMini mp3;
ugyldig oppsett () {Serial.begin (9600); pinMode (SetResUp, INPUT); pinMode (SetResDown, INPUT);
// Definer dimensjonene til LCD (16x2) lcd.begin (16, 2); // Vi velger i hvilken kolonne og på hvilken linje teksten begynner å vises // LECTOR comm.begin (9600);
mp3.begin (komm); // Komponent starter serialData = (char) (('')); mp3.start (); Serial.println ("Play"); // Spill en sang mp3.volum (25); // Definer volum}
void loop () {if (digitalRead (11) == LOW) {mp3.next (); // Hvis du trykker på knappen, passerer sangen} if (digitalRead (12) == LOW) {mp3.previous (); // Hvis du trykker på knappen, forrige sang} // if (SetResUp && SetResDown == LOW) {
int pulso = analogRead (A0); // Les verdien av pulsmåleren som er koblet til analog port A0
Serial.println (pulso/6); if (QS == true) {// Flag of Quantified Self is true like the arduino search the BPM QS = false; // Tilbakestill flagget for kvantifisert selv}
lcd.setCursor (0, 0); // Vis ønsket tekst lcd.print ("BPM:"); lcd.setCursor (0, 1); // Vis ønsket tekst lcd.print ("INT:"); lcd.setCursor (5, 0); // Vis ønsket tekst lcd.print (pulso); lcd.setCursor (5, 1); // Vis ønsket tekst lcd.print (ResButtonCounter); forsinkelse (50); lcd.clear (); ResButtonUpState = digitalRead (SetResUp); ResButtonDownState = digitalRead (SetResDown);
// sammenligne TempButtonState med sin tidligere tilstand
hvis (ResButtonUpState! = lastResButtonUpState && ResButtonUpState == LOW) {// hvis den siste tilstanden ble endret, øk telleren
ResButtonCounter ++; }
// lagre gjeldende tilstand som siste tilstand, // for neste gang løkken utføres lastResButtonUpState = ResButtonUpState;
// sammenligne tilstanden til knappen (øk eller reduser) med den siste tilstanden
if (ResButtonDownState! = lastResButtonDownState && ResButtonDownState == LOW) {
// hvis den siste tilstanden endret seg, reduser telleren
ResButtonCounter--; }
// lagre nåværende tilstand som den siste tilstanden, // for neste gang løkken utføres lastResButtonDownState = ResButtonDownState; {Serial.println (ResButtonCounter);
hvis (ResButtonCounter> = 10) {ResButtonCounter = 10; }
hvis (ResButtonCounter <1) {ResButtonCounter = 1; }
}
}
Trinn 5: Total montering
Med koden riktig programmert og de to delene av prototypen vår allerede montert. Vi setter alle komponentene på plass og fester det med tape for å feste det til armbåndet. Komponentene i armbåndet er pulsmåler BPM, de to knappene, potensiometeret og LCD -skjermen, hver i sitt respektive hull som tidligere var designet i 3D -filen. Med den første delen ferdig, fokuserer vi på protoboardet, hver kontakt på den riktige pinnen på Arduino -kortet. Til slutt, med den verifiserte driften av hver komponent, legger vi den i pakken for å skjule ledningene.
Trinn 6: Video
Trinn 7: Konklusjon
Det mest interessante med dette prosjektet er å lære om å etterligne menneskekroppen ubevisst med musikk. Dette åpner døren til mange alternativer for fremtidige prosjekter. Jeg tror dette er et komplett prosjekt, vi har ganske mange komponenter med en bearbeidet kode. Hvis vi starter på nytt, ville vi tenke på andre komponentalternativer eller kjøpe dem av bedre kvalitet. Vi har hatt mange problemer med ødelagte kabler og sveisinger, de er små og veldig delikate (spesielt BPM). På den annen side må du være forsiktig når du kobler komponentene, de har mange utganger og det er lett å gjøre feil.
Det er et veldig berikende prosjekt der vi har berørt et stort utvalg av Arduino -maskinvare- og programvarealternativer.