„Pasidaryk pats“3D valdiklis: 8 žingsniai (su paveikslėliais)
„Pasidaryk pats“3D valdiklis: 8 žingsniai (su paveikslėliais)
Anonim
„Pasidaryk pats“3D valdiklis
„Pasidaryk pats“3D valdiklis

Sukurkite 3D sąsają naudodami šešis rezistorius, aliuminio foliją ir „Arduino“. Paimkite tai, „Wii“. Atnaujinti: daug išsamesnis šio projekto paaiškinimas pateikiamas „Make Magazine“. Gali būti lengviau vykdyti jų nurodymus, ir manau, kad jų kodas yra naujesnis. Pagrindinis tikslas buvo sukurti 3D rankos padėties jutimo sistemą, kurią galėtų sukurti dauguma žmonių, tuo pačiu išlaikant tam tikrą funkcionalumą. Norėdami sužinoti galimų programų idėją, peržiūrėkite demonstracinį vaizdo įrašą. Jei manote, kad galite sukurti paprastesnį ir vienodai tikslų, arba šiek tiek sudėtingesnį ir tikslesnį, pasidalykite komentarais! Pasidaryk pats 3D sąsaja: „Kic McDonald“„Tic Tac Toe“„Vimeo“.

1 žingsnis: medžiagos

Medžiagos
Medžiagos
Medžiagos
Medžiagos

Įrankiai

  • Arduino
  • Apdorojimas
  • Vielos pjaustytuvai
  • Lituoklis
  • Dėžutės pjaustytuvas

Medžiagos

  • (3) 270 000 rezistorių
  • (3) 10k rezistoriai
  • Lituoklis
  • Viela
  • Aliuminio folija
  • Kartonas

Neprivaloma:

  • Juosta (pvz.: škotiška)
  • Ekranuotas laidas (pvz., Bendraašis kabelis, ~ 3 ')
  • (3) aligatoriaus spaustukai
  • 3 kontaktų antraštė
  • Užsegamas užtrauktuku
  • Susitraukiantys vamzdeliai arba karšti klijai

2 žingsnis: Padarykite plokštes

Padarykite plokštes
Padarykite plokštes
Padarykite plokštes
Padarykite plokštes

Šis jutiklis veiks naudojant paprastas RC grandines, kiekvienos grandinės jutimo atstumas yra viename matmenyje. Radau, kad lengviausias būdas šiam tikslui sutvarkyti tris talpines plokšteles yra kubo kampe. Supjaustiau kartoninės dėžutės kampą į 8,5 colio kubą, o po to supjaustiau šiek tiek aliuminio folijos, kad tilptų kaip šiek tiek mažesni kvadratai. Juostelė ant kampų neleidžia juos laikyti. Neužklijuokite viso perimetro, mums to reikės vėliau už aligatoriaus spaustukų pritvirtinimą.

3 žingsnis: sukurkite jungtis

Padarykite jungtis
Padarykite jungtis
Padarykite jungtis
Padarykite jungtis
Padarykite jungtis
Padarykite jungtis

Norėdami prijungti „Arduino“prie plokščių, mums reikia tam tikros ekranuotos vielos. Jei laidas nėra ekranuotas, patys laidai akivaizdžiau veikia kaip kondensatoriaus dalis. Be to, pastebėjau, kad aligatoriaus spaustukai tikrai palengvina daiktų prijungimą prie aliuminio, tačiau tikriausiai yra ir daug kitų būdų.

  • Iškirpkite tris vienodo ilgio ekranuotus kabelius. Aš pasirinkau apie 12 ". Kuo trumpesnis, tuo geriau. Bendraašis kabelis veikia, bet kuo lengvesnis/lankstesnis, tuo geriau.
  • Pasukite paskutinį pusę colio, kad atskleistumėte ekraną, ir paskutinį ketvirtį colio, kad atskleistumėte laidą.
  • Prisukite aligatoriaus spaustukus prie laidų ant laidų ir lituokite juos kartu.
  • Įdėkite šiek tiek termiškai susitraukiančius vamzdelius arba karštus klijus, kad viskas būtų kartu.

4 žingsnis: sukurkite grandinę

Sukurkite grandinę
Sukurkite grandinę
Sukurkite grandinę
Sukurkite grandinę
Sukurkite grandinę
Sukurkite grandinę
Sukurkite grandinę
Sukurkite grandinę

„Grandinė“yra tik du rezistoriai vienam aliuminio gabalui. Norint suprasti, kodėl jie ten yra, padeda žinoti, ką mes darome su „Arduino“. Ką mes darysime su kiekvienu kaiščiu iš eilės:

  • Nustatykite kaištį į išvesties režimą.
  • Į kaištį įrašykite skaitmeninį „žemą“. Tai reiškia, kad abi kondensatoriaus pusės yra įžemintos ir jis išsikraus.
  • Nustatykite kaištį įvesties režimu.
  • Skaičiuokite, kiek laiko reikia įkrauti kondensatoriui, laukiant, kol kaištis pakils „aukštai“. Tai priklauso nuo kondensatoriaus ir dviejų rezistorių verčių. Kadangi rezistoriai yra fiksuoti, bus galima išmatuoti talpos pokytį. Atstumas nuo žemės (jūsų ranka) bus pagrindinis kintamasis, prisidedantis prie talpos.

270k rezistoriai suteikia įtampą kondensatoriams įkrauti. Kuo mažesnė vertė, tuo greičiau jie bus įkrauti. 10k rezistoriai taip pat turi įtakos laikui, bet aš visiškai nesuprantu jų vaidmens. Mes padarysime šią grandinę kiekvieno laido pagrindu.

  • Lituokite 10k rezistorių prie laido galo priešais aligatoriaus spaustuką
  • Lituokite 270k rezistorių tarp skydo ir vielos (plokštės). Apsaugosime laidą ta pačia 5 V įtampa, kurią naudojame kondensatoriams įkrauti

5 žingsnis: Užbaikite ir pritvirtinkite jungtį

Užbaikite ir pritvirtinkite jungtį
Užbaikite ir pritvirtinkite jungtį
Užbaikite ir pritvirtinkite jungtį
Užbaikite ir pritvirtinkite jungtį
Užbaikite ir pritvirtinkite jungtį
Užbaikite ir pritvirtinkite jungtį

Baigę 3 jungtis, galbūt norėsite pridėti termiškai susitraukiančius vamzdžius arba karštus klijus, kad izoliuotumėte juos vienas nuo kito, nes kartu lituosite ekranavimo/5 V taškus.

Man buvo lengviausia lituoti dvi atokiausias jungtis ir tada pridėti trečią. Lituodami tris jungtis, pridėkite ketvirtą laidą, skirtą ekranui tiekti/5 V.

6 veiksmas: prijunkite ir įkelkite kodą

Prijunkite ir įkelkite kodą
Prijunkite ir įkelkite kodą
Prijunkite ir įkelkite kodą
Prijunkite ir įkelkite kodą
  • Prijunkite jungtį prie „Arduino“(8, 9 ir 10 kaiščiai)
  • Užfiksuokite aligatoriaus spaustukus ant plokščių (8: x: kairė, 9: y: apačia, 10: z: dešinė)
  • Suteikite maitinimą prijungdami ketvirtąjį laidą (mano raudoną laidą) prie „Arduino“5 V
  • Prijunkite „Arduino“, paleiskite „Arduino“aplinką
  • Įkelkite kodą į lentą (pastaba: jei esate ne Šiaurės Amerikoje, tikriausiai turėsite pakeisti #define maitinimo tinklą į 50, o ne 60).

„Arduino“kodas pridedamas kaip „Interface3D.ino“, o apdorojimo kodas pridedamas kaip „TicTacToe3D.zip“

7 žingsnis: darykite ką nors šaunaus

Jei pažvelgsite į serijinį langą „Arduino“aplinkoje, pastebėsite, kad jis išskiria neapdorotas 3D koordinates 115200 baudų dažniu, maždaug 10 Hz = 60 Hz / (2 pilni ciklai * 3 jutikliai). Kodas atlieka kiekvieno jutiklio matavimus tiek kartų, kiek įmanoma, per du elektros tinklo dažnio ciklus (kuris yra stebėtinai stabilus), kad būtų atšaukta bet kokia jungtis. Pirmas dalykas, kurį padariau, buvo paprastas 3D piešinys „Tac Toe“sąsaja. Jei norite pradėti nuo veikiančios demonstracinės versijos, kodą rasite čia, tiesiog įmeskite aplanką „TicTacToe3D“į aplanką Apdorojimo eskizai. Trys naudingi dalykai, kuriuos parodo „Tic Tac Toe“kodas:

  • Linearizuoja neapdorotus duomenis. Įkrovimo laikas iš tikrųjų atitinka galios dėsnį, palyginti su atstumu, todėl jūs turite paimti kvadratinę šaknį iš vieno per tam tikrą laiką (ty atstumas ~ = kv. (1/laikas))
  • Normalizuoja duomenis. Pradėdami eskizą, judindami ranką, laikykite nuspaudę kairįjį pelės mygtuką, kad nustatytumėte erdvės, su kuria norite dirbti, ribas.
  • „Impulso“pridėjimas prie duomenų, kad būtų sumažintas bet koks nervingumas.

Praktiškai, naudojant šią sąranką su aliuminio folija, galiu gauti didžiausios folijos matmenų diapazoną (didžiausias mano išbandytas gabalas yra 1,5 kvadratinės pėdos).

8 žingsnis: variantai ir pastabos

Variacijos

  • Sukurkite didžiulius jutiklius
  • Optimizuokite rezistorius ir koduokite greitai vibruojančius dalykus ir naudokite juos kaip pikapą/mikrofoną
  • Tikriausiai yra ir kitų gudrybių, kaip atsieti sistemą nuo kintamosios srovės (didžiulis kondensatorius tarp plokščių ir žemės?)
  • Aš eksperimentavau, kad apsaugotų plokštes apačioje, tačiau atrodo, kad tai tik sukelia problemų
  • Padarykite RGB arba HSB spalvų rinkiklį
  • Valdyti vaizdo ar muzikos parametrus; sekti taktą ar melodiją
  • Didelis, šiek tiek sulenktas paviršius su keliomis plokštėmis + projektorius = sąsaja „Mažumų ataskaita“

Pastabos

„Arduino“žaidimų aikštelėje yra du straipsniai apie talpinį jutimo jutimą („CapSense“ir „CapacitiveSensor“). Galų gale aš pakeičiau dizainą, su kuriuo susidūriau draugo „Fizinio skaičiavimo“(Sullivan/Igoe) kopijoje, kurioje aprašoma, kaip naudoti „RCtime“(grandinėje buvo pritvirtintas kondensatorius ir vienas rezistorius, ir išmatavau potenciometras). Mikrosekundinis laikas buvo atliktas naudojant šiek tiek optimizuotą kodą iš „Arduino“forumų. Vėlgi: tik pradėjęs nuo daugybės tenmino schemų, aš visiškai nesuprantu, aš gerai žinau, kad yra geresnių būdų, kaip atlikti talpinį atstumo jutimą, bet aš norėjau padaryti kuo paprastesnį dalyką, kuris vis dar yra funkcionalus. Jei turite vienodai paprastą ir funkcionalų dizainą, paskelbkite jį komentaruose! Ačiū Dane'ui Kouttronui, kad jis toleravo visus mano pagrindinius elektronikos klausimus ir padėjo man suprasti, kaip veikia paprasta heterodino tenmino grandinė (iš pradžių aš ketinau juos naudoti ir, jei jis sureguliuotas teisingai, tikriausiai būtų tikslesnis).

Pirmasis prizas „Instructables“knygų konkurse