Innholdsfortegnelse:

3D AIR -mus - Arduino + behandling: 5 trinn
3D AIR -mus - Arduino + behandling: 5 trinn

Video: 3D AIR -mus - Arduino + behandling: 5 trinn

Video: 3D AIR -mus - Arduino + behandling: 5 trinn
Video: ICSI Footage` 2024, November
Anonim
3D AIR -mus | Arduino + behandling
3D AIR -mus | Arduino + behandling

3D AIR mus | Arduino + ProcessingJeg er student i industriell design, og i fjor som en del av kurset "Technology as RAW materiel" bygde jeg dette prosjektet som mitt siste arbeid. Jeg jobber mesteparten av tiden med SolidWorks, en CAD -programvare for design og engenering. Rotere en solid kropp på skjermen gjøres med den midterste museknappen. Jeg var på utkikk etter noe mer intuitivt. Slik endte jeg opp med 3D -luftmusen, der den faktiske rotasjonen av et objekt gjøres ved å flytte musen midt i luften på alle 3 aksene - på samme måte som du ville rotere objektet hvis du holdt det i hånden. Jeg brukte Arduino, et par sensorer og en prosessskisse. MERKNADER:- Fra nå av er dette bare en demonstrasjon av konseptet, siden det ikke er noen faktisk plug-in for å jobbe med SolidWork (men selvfølgelig er du velkommen til å skriv en hvis du vet hvordan:)- Siden all maskinvaren ikke var min, er den faktiske 3D-musen for lengst borte, og jeg bruker noen bilder og en video for å prøve å gi mening i alt dette, og for å gi deg noen ide om du vil prøve å bygge en selv … Nyt den … (Det er min første instruerbare) Her er en videodemo av det ferdige prosjektet

Trinn 1: Maskinvare og ting

Maskinvare og ting
Maskinvare og ting
Maskinvare og ting
Maskinvare og ting
Maskinvare og ting
Maskinvare og ting
Maskinvare og ting
Maskinvare og ting

Det er ikke den billigste instruerbare siden den er basert på et 3 -akset akselerometer + kompass sensor. Ting du trenger:* En mus - en brukt er bedre (bare fordi den er brukt og billigere), enhver mus bør gjøre. Du trenger å ha litt plass til å huse sensorene og noen ekstra ledninger, så ikke gå for ekstra slanke / ekstra små mus.* Kompassmodul med vippekompensasjon - HMC634 - Dette er den 3 -aksede sensoren, kjøpt på SpurkFun for ~ $ 149* Logic Level Converter - et must! Siden Arduino er 5V og 3 -akses sensor er 3.3V, trenger du en av dem for å konvertere 5V til 3.3V. Den har et stort navn, men koster bare $ 1,95 på SpurkFun.* Stor optisk detektor / fototransistor - Dette er en enkel optisk sensor, som brukes i dette prosjektet for å oppdage når musen løftes fra arbeidsflaten. Kjøpt på SpurkFun for $ 2,25 Hvis du ikke har nok plass til å huse denne inne i musen du har valgt, kan du bruke denne, mindre og billigere. * En (1) LED - uansett fargen, ultralyst vil fungere bedre.* 2 motstander - En (1) x 100Ω og en (1) x 100KΩ (for den optiske sensoren)* Arduino -kort - DA! Jeg brukte Diecimila -modellen. En nyere Duemilanove er tilgjengelig på SpurkFun for omtrent $ 29,95 (skulle fungere også) + installert Arduino -programvare.* Processings -programvare installert.* Prosjektets kildekode (Ikke bekymre deg, du kommer til å laste den ned på et sekund.) Pluss: Noen varmt lim (for å fikse ting på plass) Et par bittesmå skruer. Omtrent 10 cm av et 6 mm (Dia.) treanker. Noen ekstra ledninger. Loddejern. Noe å kutte plasten med brukte jeg en skjærekniv og en fil (FOR FORMING). ("Ok, ikke hat meg for dette trinnet, engelsk er mitt andre språk. Hvis jeg tok feil, beklager jeg, du er sikker på at du forstår hva jeg tar til om et sekund. du ser det på bildene ")

Trinn 2: Elektronikk

Elektronikk
Elektronikk
Elektronikk
Elektronikk

Alt må loddes sammen … På en måte … MERK: 3 -aksen -sensoren er en dyr liten ting. Sjekk ledningene før du slår på alt … Se skjemaene som er vedlagt for alle ledningene som brukes i dette prosjektet. Den vedlagte kildekoden kan bare fungere hvis du bruker de samme pin -numrene som jeg gjorde, men du kan gjerne endre dem når du kobler til så lenge du endrer de riktige tallene i koden. Koble sensoren med 3 akser til den logiske nivåomformeren: Sensor VCC -> Arduino 3V3Sensor GND -> Arduino GndSensor SDA -> Converter TXI (Chan1) Converter TXO (Chan1) -> Arduino ANALOG IN 4Sensor SCL -> Converter TXI (Chan2) Converter TXO (Chan2) -> Arduino ANALOG IN 5Converter GND (minst en av dem) -> Arduino GndConverter HV -> Arduino 5VConverter LV -> Arduino 3V3Optisk sensor til Arduino: Se vedlagt bilde Digital in = Pin 11 på ArduinoLED: GND til noen GND (jeg brukte en av de optiske sensorene)+ til Arduino PIN 13 (Dette ble gjort siden denne pinnen allerede har en innebygd motstand, hvis du bruker en annen, må du bruke en motstand slik at du ikke brenner LED-en)

Trinn 3: Forberede musen

Forbereder musen
Forbereder musen
Forbereder musen
Forbereder musen
Forbereder musen
Forbereder musen

Det er her sensorene finner sin plass inne i musens hus. Finn det beste stedet å fikse sensoren med 3 akser. Sørg for at den er jevnet og vær oppmerksom på retningen (Du vet når du har sensoren i hånden) Du kan fikse den slik du vil, jeg brukte 2 korte stykker av treankeret, boret for å godta de 2 små skruene, og varmt limt til musens hovedkort. For den optiske sensoren, form et rektangulært hull i bunnen av musen, er tanken at sensoren skal "se" tabellen hele tiden. Når musen løftes og sensortilstanden er "åpen" (ingen tabell å se) bytter musen til 3D -modus (kjører behandlingsskissen) Form et annet hull for å føre de ekstra ledningene (fra sensorene til Arduino) ut av plasthus. Min var plassert på høyre side av musen. Fest LED -en hvor den vil vise. I dette prosjektet er LED-indikatoren 3D-modus. Jeg plasserer min ved siden av silikonhjulet. Når musen løftes, hadde hjulet en fin blå glød.

Trinn 4: Kildekoden

Koden for Arduino ble skrevet av Shachar Geiger, læreren min, og ble endret av meg for dette prosjektet. 3D -kubekoden er den grunnleggende koden som finnes på nettstedet Processing. Jeg endret det litt. I koden konverterer denne delen den rå informasjonen som kommer fra sensoren (vanligvis -180 til 180 x 10) til 0-255 getHeading (); Serial.write ('x'); x = (x +1800) / 14; Serial.write (x); Serial.write ('y'); y = (y+1800) / 14; Serial.write (y); Serial.write ('z'); z = (z+1800) / 14; Serial.write (z); Informasjonen fra sensoren og Arduino går til behandlingsskissen for hver separate akse, men med en forrige aksebokstav (for eksp. X12 Y200 Z130), slipper følgende kode bokstaven og overlater bare verdiene som skal sendes til COM port mens (port.available () == 0) {} char reading = 0; while (reading! = 'x') {while (port.available () == 0) {} reading = (char) port.read ();} X = port.read (); while (reading! = 'Y') {while (port.available () == 0) {} reading = (char) port.read ();} Y = port.read (); while (reading! = 'z') {while (port.available () == 0) {} reading = (char) port.read ();} Z = port.read (); Denne delen av koden slipper alle de negative verdiene … hvis ((X! = -1) && (Y! = -1) && (Z! = -1)) {rotateZ (-(float) Y/25.0); rotateX ((float) X/25.0); rotateY ((float) Z/25.0); pX = X; pY = Y; pZ = Z;} else {rotateZ (-(float) pY/25.0); rotateX ((float) pX /25.0);rotateY((float)pZ/25.0);} Den vedlagte ZIP -filen inneholdt både Arduino og behandlingskode

Trinn 5: Video

Det er det … Dette er det ferdige prosjektet i en video. Det er en liten feil (Du kan se at kuben noen ganger "hopper" i videoen), Dette er på grunn av Z -aksen, det kan hende at det ikke skjer med deg …

Anbefalt: