Sadržaj:

3D AIR miš - Arduino + obrada: 5 koraka
3D AIR miš - Arduino + obrada: 5 koraka

Video: 3D AIR miš - Arduino + obrada: 5 koraka

Video: 3D AIR miš - Arduino + obrada: 5 koraka
Video: SKR 1.4 - SKR 1.4 Turbo Firmware load 2024, Studeni
Anonim
3D AIR miš | Arduino + obrada
3D AIR miš | Arduino + obrada

3D AIR miš | Arduino + ProcessingJa sam student industrijskog dizajna, a prošle sam godine u sklopu tečaja pod nazivom "Tehnologija kao RAW materijal" izgradio ovaj projekt kao svoj završni rad. Većinu vremena radim sa SolidWorks -om, CAD softverom za dizajn i inženjering. Rotiranje čvrstog tijela na ekranu vrši se srednjom tipkom miša. Tražio sam nešto intuitivnije. Ovako sam završio 3D zračni miš, gdje se stvarna rotacija objekta vrši pomicanjem miša u zraku na sve 3 osi - na isti način na koji biste rotirali objekt da ga držite u ruci. Koristio sam Arduino, nekoliko senzora i skicu za obradu. NAPOMENE:- Za sada je ovo samo demonstracija koncepta, jer ne postoji stvarni dodatak za rad sa SolidWorkom (ali, naravno, slobodno napiši jedan ako znaš kako:))- Budući da sav hardver nije bio moj, stvarni 3D miš odavno je nestao, a ja koristim neke fotografije i video kako bih pokušao u svemu ovome imati smisla i dati ti neka ideja ako želite sami pokušati izraditi jednu … Uživajte … (To je moj prvi Instructable) Evo video demo gotovog projekta

Korak 1: Hardver i stvari

Hardver i stvari
Hardver i stvari
Hardver i stvari
Hardver i stvari
Hardver i stvari
Hardver i stvari
Hardver i stvari
Hardver i stvari

Nije najjeftiniji Instructable jer se temelji na troosnom akcelerometeru + senzoru kompasa. Potrebno vam je:* Miš - rabljeni je bolji (samo zato što se koristi i jeftiniji), to bi trebao učiniti svaki miš. Morate imati malo prostora za smještaj senzora i dodatne žice, stoga nemojte koristiti dodatne tanke / ekstra sićušne miševe.* Modul kompasa s kompenzacijom nagiba - HMC634 - Ovo je troosni senzor, kupljen u SpurkFunu za ~ 149 USD* Pretvarač logičke razine - MORA! Budući da je Arduino 5V, a troosni senzor 3.3V, potreban vam je jedan od njih za pretvaranje 5V u 3.3V. Ima veliko ime, ali košta samo 1,95 USD na SpurkFunu.* Veliki optički detektor / fototranzistor - Ovo je jednostavan optički senzor, koji se koristi u ovom projektu za otkrivanje kada se miš podiže s radne površine. Kupljeno u SpurkFunu za 2,25 USD Ako nemate dovoljno mjesta za smještaj ovog u miš koji ste odabrali, možete koristiti ovaj, manji i jeftiniji. * Jedna (1) LED - bez obzira na boju, ultra svijetla će bolje raditi.* 2 otpornika - jedan (1) x 100Ω i jedan (1) x 100KΩ (za optički senzor)* Arduino ploča - DA! Koristio sam model Diecimila. Noviji Duemilanove dostupan je na SpurkFunu za oko 29,95 USD (i to bi trebalo raditi) + instaliran Arduino softver.* Instaliran softver za obradu.* Izvorni kod projekta (Ne brinite, moći ćete ga preuzeti za koju sekundu.) Plus: Neki vruće ljepilo (za popravljanje stvari) Par sitnih vijaka. Oko 10 cm drvenog sidra od 6 mm (Dia.). Neke dodatne žice. Lemilica. Nešto za rezanje plastike, upotrijebio sam nož za rezanje i turpiju (ZA oblikovanje). ("U redu, nemoj me mrziti zbog ovog koraka, engleski je moj drugi jezik, ako sam ovaj pogriješio, žao mi je, siguran sam da ćeš u sekundi razumjeti o čemu govorim. vidjet ćeš to na slikama ")

Korak 2: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Sve je potrebno lemiti zajedno … Na neki način … NAPOMENA: Troosni osjetnik je skupa sitnica, provjerite ožičenje prije nego što sve uključite … Pogledajte sheme u prilogu za sve ožičenje koje se koristi u ovom projektu. Priloženi izvorni kod može funkcionirati samo ako koristite iste pin brojeve kao i ja, ali slobodno ih promijenite pri povezivanju sve dok promijenite odgovarajuće brojeve u kodu. Spajanje troosnog osjetnika na pretvarač logičke razine: Senzor VCC -> Arduino 3V3Sensor GND -> Arduino GndSensor SDA -> Pretvarač TXI (Chan1) Pretvarač TXO (Chan1) -> Arduino ANALOG IN 4Sensor SCL -> Pretvarač TXI (Chan2) Pretvarač TXO (Chan2) -> Arduino ANALOG U 5Converter GND (barem jedan od njih) -> Arduino GndConverter HV -> Arduino 5VConverter LV -> Arduino 3V3Optični senzor za Arduino: Pogledajte priloženu slikuDigitalno u = Pin 11 na ArduinoLED: GND nekim GND (koristio sam jedan od optičkih senzora)+ do Arduino PIN 13 (To je učinjeno jer ovaj pin već ima ugrađeni otpornik, ako koristite neki drugi, svakako upotrijebite otpornik kako ne biste zapalili LED)

Korak 3: Priprema miša

Priprema miša
Priprema miša
Priprema miša
Priprema miša
Priprema miša
Priprema miša

Ovdje senzori nalaze svoje mjesto unutar kućišta miša. Pronađite najbolje mjesto za pričvršćivanje troosnog senzora. Provjerite je li izravnan i vodite računa o orijentaciji (znat ćete kad budete imali senzor u ruci) Možete ga popraviti kako god želite, upotrijebio sam 2 kratka komada drvenog sidra, izbušeno da prihvatim 2 sitna vijka, i vruće zalijepljen na glavnu ploču miša. Za optički senzor oblikujte pravokutnu rupu na dnu miša, ideja je da senzor cijelo vrijeme "vidi" tablicu. Kad je miš podignut i stanje senzora je "otvoreno" (nema tablice za vidjeti) miš prelazi u 3D način rada (pokreće skicu obrade) Oblikujte drugu rupu za usmjeravanje dodatnih žica (od senzora do Arduina) iz plastično kućište. Moj se nalazio s desne strane miša. Popravite LED gdje će se prikazati. U ovom projektu LED je indikator 3D načina rada. Svoje stavljam pored silikonskog kotačića miša. Kad se miš podigne, kotač je imao lijep plavi sjaj.

Korak 4: Izvorni kod

Kôd za Arduino napisao je Shachar Geiger, moj učitelj, a ja sam ga izmijenio za ovaj projekt. Kod 3D kocke je osnovni kod koji se nalazi na web stranici Processing. Malo sam ga izmijenio. U kodu ovaj komad pretvara sirove informacije koje dolaze sa senzora (tipično -180 na 180 x 10) u 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); Podaci sa senzora i Arduina idu na skicu obrade za svaku zasebnu os, ali s prethodnim slovom osi (npr. X12 Y200 Z130), sljedeći kôd ispušta slovo i ostavlja samo vrijednosti koje se šalju u COM port while (port.available () == 0) {} očitavanje znakova = 0; while (čitanje! = 'x') {while (port.available () == 0) {} čitanje = (char) port.read ();} X = port.read (); while (čitanje! = 'Y') {while (port.available () == 0) {} čitanje = (char) port.read ();} Y = port.read (); while (čitanje! = 'z') {while (port.available () == 0) {} reading = (char) port.read ();} Z = port.read (); Ovaj komad koda ispušta sve negativne vrijednosti … if ((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);} Priložena ZIP datoteka sadrži i Arduino i kod za obradu

Korak 5: Video

To je to … Ovo je gotov projekt u videu. Postoji manji propust (možete vidjeti da kocka ponekad "skoči" u videu), To je zbog osi Z, možda vam se neće dogoditi …

Preporučeni: