Innholdsfortegnelse:

Vibrotaktil sensorisk substitusjon og forstørrelsesenhet (SSAD): 4 trinn
Vibrotaktil sensorisk substitusjon og forstørrelsesenhet (SSAD): 4 trinn

Video: Vibrotaktil sensorisk substitusjon og forstørrelsesenhet (SSAD): 4 trinn

Video: Vibrotaktil sensorisk substitusjon og forstørrelsesenhet (SSAD): 4 trinn
Video: Vibrotactile Stimulation Treatment for Parkinson's Disease at Stanford 2024, Juli
Anonim
Vibrotaktil sensorisk substitusjon og forstørrelsesenhet (SSAD)
Vibrotaktil sensorisk substitusjon og forstørrelsesenhet (SSAD)
Vibrotaktil sensorisk substitusjon og forstørrelsesenhet (SSAD)
Vibrotaktil sensorisk substitusjon og forstørrelsesenhet (SSAD)

Dette prosjektet tar sikte på å lette forskning innen sensorisk substitusjon og forstørrelse. Jeg hadde muligheten til å utforske forskjellige måter å bygge vibrotaktile SSAD -prototyper innenfor min MSc -avhandling. Siden sensorisk substitusjon og forstørrelse er et tema som ikke bare angår datavitenskapere, men også forskere fra andre felt, som kognitiv vitenskap, bør en trinnvis instruksjon gjøre det mulig for ikke-eksperter innen elektronikk og datavitenskap å sette sammen denne prototypen for seg selv forskningsformål.

Jeg har ikke tenkt å lage reklame for nøyaktig én type merke/produkt. Dette prosjektet ble ikke sponset av noen bedrifter. Materialet jeg brukte ble valgt på grunn av tekniske spesifikasjoner og bekvemmelighet (hastighet/leveringskostnad, tilgjengelighet osv.). For alle produkter som er nevnt i denne instruksjonsboken, er like passende alternativer tilgjengelige.

Den nåværende Instructable inneholder trinnvise instruksjoner for hvordan du bygger en grunnleggende SSAD-prototype med opptil 4 motorer og analoge sensorer.

I tillegg til denne instruksjonsboken har jeg laget tre utvidelser: For det første publiserte jeg instruksjoner om hvordan du bruker mer enn fire motorer med denne SSAD-prototypen (https://www.instructables.com/id/Using-More-Than-4…). For det andre har jeg laget et eksempel på hvordan jeg kan gjøre denne prototypen bærbar (https://www.instructables.com/id/Making-the-SSAD-W…) og hvordan jeg dekker ERM-motorer uten innkapslet roterende masse (https:/ /www.instructables.com/id/Covering-Rotating…). Videre publiseres også et eksempel på hvordan du kan integrere andre enn analoge sensorer (i dette tilfellet en nærhetssensor) til prototypen (https://www.instructables.com/id/Including-a-Proxi…).

Hva er "Sensory Substitution and Augmentation"?

Med sensorisk substitusjon kan informasjonen som samles inn av en sensorisk modalitet (f.eks. Syn) oppfattes gjennom en annen sans (f.eks. Lyd). Det er en lovende ikke-invasiv teknikk som hjelper mennesker med å overvinne sansetap eller svekkelse.

Hvis sansestimulansen, som er oversatt, normalt ikke kan oppfattes av mennesker (f.eks. UV -lys), kalles denne tilnærmingen for sensorisk forstørrelse.

Hvilke ferdigheter trengs for å bygge denne prototypen?

I utgangspunktet er det ikke nødvendig med noen avanserte programmeringskunnskaper for å følge instruksjonene nedenfor. Imidlertid, hvis du er nybegynner innen lodding, kan du planlegge litt ekstra tid for å bli kjent med denne teknikken. Hvis du aldri har programmert før, kan det være nødvendig med litt hjelp fra noen som har mer erfaring med programmering.

Er det nødvendige maskiner eller verktøy som er dyre eller ikke lett tilgjengelige?

Bortsett fra et loddejern, er det ikke nødvendig med maskiner eller verktøy for å bygge denne prototypen som du ikke enkelt kan kjøpe online eller i den neste husholdningsbutikken. Denne SSAD er designet for å tillate hurtig prototyping, noe som betyr at den skal være raskt reproduserbar og muliggjøre en billig utforskning av ideer.

Rekvisita

Hovedkomponenter (ca. 65 £ for 4 motorer, ekskl. Loddeutstyr)

  • Arduino Uno (f.eks. Https://store.arduino.cc/arduino-uno-rev3, 20 £)
  • Adafruit Motorshield v2.3 (f.eks. Https://www.adafruit.com/product/1438, 20 £) og stabelhoder for menn (normalt inkludert ved kjøp av motorskjold)
  • Sylindriske ERM -motorer (f.eks. Https://www.adafruit.com/product/1438, 5, 50 £/motor)
  • Loddejern og loddetråd
  • Ledninger

Valgfritt (se utvidelser)

Hvis ERM -motor med avdekket roterende masse er kjøpt:

  • Vinylrør
  • Tynt mykt brett
  • 3D -skriver (for Arduino -deksel)

Hvis du vil bruke mer enn 4 motorer (for mer enn 8 samme en annen gang):

  • Adafruit Motorshield v2.3 og mannlige stablingshoder
  • Kvinnelige stablingshoder (f.eks.
  • Arduino Mega for mer enn 6 motorer (f.eks.

Trinn 1: Lodding

Lodding
Lodding

Lodd pinnene til motorskjermen

Adafruit tilbyr en veldig omfattende opplæring i hvordan du lodder topptekster til et motorshield (https://learn.adafruit.com/adafruit-motor-shield-v…):

  1. Først legger du stabelhodene i pinnene på Arduino Uno,
  2. Plasser deretter skjoldet på toppen, slik at kortsiden av pinnene stikker ut.
  3. Deretter lodder du alle pinnene til skjoldet og sørger for at loddetinn flyter rundt pinnen og danner en vulkanform (se bildet ovenfor, som er adoptert fra https://cdn.sparkfun.com/assets/c/d/ a/a/9/523b1189…).

Hvis du er nybegynner innen lodding, kan du hjelpe deg med flere opplæringsprogrammer, for eksempel

Lodde lengre ledninger til motoren

Siden de fleste motorer kommer uten eller veldig korte og tynne ledninger, er det fornuftig å forlenge dem ved å lodde dem til lengre og mer robuste ledninger. Slik kan du gjøre det:

  1. Fjern plasten rundt enden av ledningene og plasser dem slik at de er i kontakt med hverandre langs de eksponerte ledningene, som på bildet.
  2. Lodde dem sammen ved å berøre trådene på begge ledninger og la loddetinn flyte over dem.

Trinn 2: Kabling

Kabling
Kabling
  1. Stable motorshield på toppen av Arduino.
  2. Skru motorene inn i motorskjermen.
  3. Koble analoge sensorer til Arduino (på bildet er dette gjort med lyssensorer, men samme krets ser det samme ut for andre analoge sensorer).

Trinn 3: Koding

Koding
Koding
Koding
Koding
Koding
Koding
Koding
Koding

1. Last ned

Last ned zip -mappe (SSAD_analogueInputs.zip), vedlagt nedenfor. Pakk den ut.

Last ned Arduino IDE (https://www.arduino.cc/en/main/software).

Åpne Arduino -filen (SSAD_analogueInputs.ino) som er inne i den utpakkede mappen med Arduino IDE.

2. Installer biblioteker

For å kjøre den oppgitte koden, må du installere noen biblioteker. Så hvis Arduino -filen, som er vedlagt på slutten av denne artikkelen, er åpen inne i Arduino IDE, gjør du følgende:

  1. Klikk: Verktøy → Administrer biblioteker …
  2. Se etter "Adafruit Motor Shield V2 Library" i filtrer søkefeltet
  3. Installer den ved å klikke på Installer -knappen

Etter at du har lastet ned disse bibliotekene, skal #include -setningene i de oppgitte kodene fungere. Sjekk det ved å klikke på "Bekreft" -knappen (kryss av øverst til venstre). Du vet at alle bibliotekene fungerer, hvis du får meldingen "Ferdig kompilering" nederst i programmet. Ellers vises en rød stolpe, og du får en melding om hva som gikk galt.

3. Endre koden

Endre koden i henhold til ditt brukstilfelle ved å følge instruksjonene nedenfor:

Starter motorer og deres sensoriske utganger

Først av alt, erklær hvilke pinner motorene bruker, så vel som i hvilket område motorene fungerer. For eksempel erklæres en motor som er koblet til M4 og fungerer i et (hastighets) område på 25 og 175 slik (under MAIN -kommentaren):

Motormotor1 = Motor (4, 25, 175);

Når du arbeider med små vibrasjonsmotorer som drives i et område opp til 3V, må motorskjermen brukes med forsiktighet, siden den er laget for å kjøre motorer på 4,5VDC til 13,5VDC. For ikke å skade 3V -motorene, begrenset jeg programmatisk Volt -utgangen til skjermen til maksimalt 3V (nøyaktig 2,95V). Jeg gjorde det ved å måle hvor mye maksimal hastighet på 255 er i Volt og målt med et multimeter at dette er 4,3V. Derfor tillot jeg aldri motorer en høyere hastighet enn 175, som er omtrent 3V.

Hver motor kobles til en SensoryOutput.

Én SensoryOutput består av en eller flere sensoriske stimuli. For eksempel kan en motor enten vibrere i henhold til en enkelt sensor, eller i henhold til gjennomsnittet av flere, forskjellige posisjonerte sensorer.

Derfor må en SensoryOutput deklareres for hver motor. Tallene inne i parentesene er minimum og maksimal verdi av det sensoren (gruppen) kan oppfatte. For analoge sensorer er dette stort sett 0 og 1023:

SensoryOutput output1 = SensoryOutput (0, 1023);

I loop () -funksjonen blir hver motor deretter tilordnet en utgangsverdi. Her skriver du for hver motor følgende setning og i stedet for "output1", uansett hvilken SensoryOutput -verdi som skal kobles til den. Ikke glem å også endre alle "output1" -navn på denne linjen, hvis du bruker et annet navn for det.

motor1.drive (output1.getValue (), output1.getMin (), output1.getMax ());

Hvis du vil, kan du gi flere motorer (f.eks. Motor1 og motor2) den samme SensoryOutput (f.eks. Utgang1).

Videre kan du gi verdiene til flere sensorer til en motor (se neste avsnitt).

Definere sensorene

I oppsett () -funksjonen må det deklareres hvilke sensorer som skal være en del av hvilken motorvibrasjon (SensoryOutput). Her er et eksempel på hvordan du definerer at sensoren som er koblet til Arduino Pin A0 skal oversettes til vibrasjoner med motor1 og følgelig output1:

output1.include (A0);

Hvis flere sensoriske utganger skal kombineres innenfor en motorvibrasjon, kan du bare legge til en annen analog inngangspinne til utgang1:

output1.include (A1);

Ellers er det bare å fortsette med neste utgang:

output2.include (A1);

Kombinere flere sensorer

Som nevnt ovenfor kan flere sensorinnganger (f.eks. Fra A0, A1 og A2) ledes til en motor. Koden jeg oppgir beregner gjennomsnittet av verdiene som leses av alle inkluderte sensorer. Så hvis dette er nok for ditt brukstilfelle, og du bare vil kartlegge for eksempel lav sensorisk inngang til lav vibrasjon, er du ferdig og trenger ikke tenke på følgende:

Hvis du imidlertid har andre ideer om hva du vil gjøre med en eller flere rå sensoriske innganger, kan du gjøre i henhold til endringer i funksjonen int getValue () i SensoryOutput -klassen:

int getValue () {

finalOutput = 0; // TODO gjør hva du vil med sensoriske verdier // her er gjennomsnittet bygget, hvis flere verdier kombineres for (int i = 0; i <curArrayLength; i ++) {finalOutput+= analogRead (valueArray ); } returner finalOutput / curArrayLength; }

4. Last opp koden til din Arduino -prototype

Koble til Arduino Prototype (fra trinn 2) til PCen.

Klikk på Verktøy → Port → Velg porten, der Arduino/Genuino Uno er skrevet i parentes

Klikk på Verktøy → Brett → Arduino/Genuino Uno

Nå skal motorene kjøre i henhold til inngangene til de analoge sensorene. Hvis du vil, kan du koble Arduino fra PCen og koble den til en annen strømkilde, for eksempel et 9V batteri.

Trinn 4: Mulige utvidelser

Mulige utvidelser
Mulige utvidelser
Mulige utvidelser
Mulige utvidelser
Mulige utvidelser
Mulige utvidelser

Prototypen du nettopp har bygget, tillater utelukkende analoge innganger og kan kjøre opptil fire motorer. Videre er den ikke bærbar ennå. Hvis du vil utvide disse funksjonene, kan du se på følgende instruksjoner:

  • Dekker roterende masser av ERM-motorer:
  • Gjør SSAD bærbar:
  • Bruke mer enn 4 motorer-Stabling av flere motorskjold:
  • Bruke en ultralyd nærhetssensor som SSAD-inngang:

Anbefalt: