Indholdsfortegnelse:

3D AIR -mus - Arduino + Processing: 5 trin
3D AIR -mus - Arduino + Processing: 5 trin

Video: 3D AIR -mus - Arduino + Processing: 5 trin

Video: 3D AIR -mus - Arduino + Processing: 5 trin
Video: DIY Air Quality Monitor - PM2.5, CO2, VOC, Ozone, Temp & Hum Arduino Meter 2024, November
Anonim
3D AIR -mus | Arduino + behandling
3D AIR -mus | Arduino + behandling

3D AIR mus | Arduino + Processing Jeg er studerende i industriel design, og sidste år som en del af et kursus kaldet "Technology as RAW materiel" byggede jeg dette projekt som mit sidste arbejde. Jeg arbejder det meste af tiden med SolidWorks, en CAD -software til design og konstruktion. Drejning af en fast krop på skærmen udføres ved hjælp af den midterste museknap. Jeg ledte efter noget mere intuitivt. Sådan endte jeg med at lave 3D -luftmusen, hvor den faktiske rotation af et objekt udføres ved at flytte musen midt i luften på alle 3 akser - på samme måde som du ville rotere objektet, hvis du holdt det i din hånd. Jeg brugte Arduino, et par sensorer og en Processing sketch. BEMÆRKNINGER:- Fra nu af er dette kun en demonstration af konceptet, da der ikke er nogen egentlig plug-in til at arbejde med SolidWork (men selvfølgelig er du velkommen til at skriv en, hvis du ved hvordan:)- Da al hardware ikke var min, er den egentlige 3D-mus for længst væk, og jeg bruger nogle fotos og en video til at prøve at give mening i alt dette og give dig en ide, hvis du vil prøve at bygge en selv … Nyd det … (Det er min første instruerbare) Her er en videodemo af det færdige projekt

Trin 1: Hardware og ting

Hardware og ting
Hardware og ting
Hardware og ting
Hardware og ting
Hardware og ting
Hardware og ting
Hardware og ting
Hardware og ting

Det er ikke den billigste instruerbare, da den er baseret på et 3 -akset accelerometer + kompassensor. De ting du skal bruge:* En mus - en brugt er bedre (kun fordi den er brugt og billigere), enhver mus burde gøre. Du skal have plads til at huse sensorerne og nogle ekstra ledninger, så gå ikke efter ekstra slanke / ekstra bittesmå mus.* Kompasmodul med vippekompensation - HMC634 - Dette er den 3 -aksede sensor, købt hos SpurkFun for ~ 149 $* Logic Level Converter - et must! Da Arduino er 5V og 3 -akses sensoren er 3.3V, har du brug for en af dem for at konvertere 5V til 3.3V. Det har et stort navn, men koster kun $ 1,95 hos SpurkFun.* Stor optisk detektor / fototransistor - Dette er en enkel optisk sensor, der bruges til dette projekt til at registrere, når musen løftes fra arbejdsfladen. Købt hos SpurkFun for $ 2,25 Hvis du ikke har plads nok til at huse denne inde i din valgte mus, kan du bruge denne, mindre og billigere. * En (1) LED - ligeglad med farven, ultra lyse vil fungere bedre.* 2 modstande - En (1) x 100Ω og en (1) x 100KΩ (til den optiske sensor)* Arduino -kort - DA! Jeg brugte Diecimila -modellen. En nyere Duemilanove er tilgængelig på SpurkFun for omkring $ 29,95 (skulle også fungere) + installeret Arduino -software.* Processingsoftware installeret.* Projektets kildekode (Bare rolig, du kommer til at downloade det om et sekund.) Plus: Nogle varm lim (for at fikse tingene på plads) Et par små skruer. Omkring 10 cm af et 6 mm (Dia.) træanker. Nogle ekstra ledninger. Loddejern. Noget at skære plasten med brugte jeg en skærekniv og en fil (TIL forme). ("Ok, had mig ikke for dette trin, engelsk er mit andet sprog, hvis jeg tog fejl her, er jeg ked af det, jeg er sikker på, at du vil forstå, hvad jeg tager mig til om et sekund. du vil se det på billederne ")

Trin 2: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik

Alt skal loddes sammen … På en måde … BEMÆRK: 3 -akses sensoren er en dyr lille ting dobbelttjek ledningerne, før alt tændes … Se skemaerne for alle ledninger, der bruges i dette projekt. Den vedhæftede kildekode kan kun fungere, hvis du bruger de samme pin -numre, som jeg gjorde, men du er velkommen til at ændre dem, når du opretter forbindelse, så længe du ændrer de relevante numre i koden. Tilslutning af 3 -akses sensoren til den logiske niveauomformer: 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 (mindst en af dem) -> Arduino GndConverter HV -> Arduino 5VConverter LV -> Arduino 3V3Optisk sensor til Arduino: Se vedhæftede billede Digital in = Pin 11 på ArduinoLED: GND til nogle GND (jeg brugte en af den optiske sensor)+ til Arduino PIN 13 (Dette blev gjort, da denne pin allerede har en indbygget modstand, hvis du bruger en anden, skal du sørge for at bruge en modstand, så du ikke brænder LED'en)

Trin 3: Forberedelse af musen

Forberedelse af musen
Forberedelse af musen
Forberedelse af musen
Forberedelse af musen
Forberedelse af musen
Forberedelse af musen

Det er her, sensorerne finder deres plads inde i musens hus. Find det bedste sted at fastsætte 3 -akset sensoren. Sørg for, at den er udjævnet, og husk orienteringen (Du ved, hvornår du har sensoren i hånden) Du kan reparere den, som du vil, jeg brugte 2 korte stykker af træankeret, boret til at acceptere de 2 små skruer, og varmt limet til musens hovedkort. For den optiske sensor skal du forme et rektangulært hul i bunden af musen, ideen er at lade sensoren "se" tabellen hele tiden. Når musen løftes, og sensortilstanden er "åben" (ingen tabel at se), skifter musen til 3D -tilstand (kører behandlingsskitsen) Form et andet hul til at føre de ekstra ledninger (fra sensorerne til Arduino) ud af plasthus. Min var placeret på højre side af musen. Fix LED'en, hvor den vil vise. I dette projekt er LED'en 3D-tilstandsindikatoren. Jeg placerer mit ved siden af silikonemusehjulet. Når musen løftes, havde hjulet en flot blå glød.

Trin 4: Kildekoden

Koden til Arduino blev skrevet af Shachar Geiger, min lærer, og blev ændret af mig til dette projekt. 3D -terningskoden er den grundlæggende kode, der findes på webstedet Processing. Jeg ændrede det lidt. I koden konverterer denne del den rå information, der kommer fra sensoren (typisk -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); Informationen fra sensoren og Arduino går til behandlingsskitsen for hver separat akse, men med et foregående aksebogstav (for eksp. X12 Y200 Z130), slipper følgende kode bogstavet og efterlader kun de værdier, der 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 (); Dette stykke kode slipper alle de negative værdier … 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 vedhæftede ZIP -fil indeholdt både Arduino og behandlingskode

Trin 5: Video

Det er det … Dette er det færdige projekt i en video. Der er en mindre fejl (Du kan se, at terningen nogle gange "hopper" i videoen), Dette er på grund af Z -aksen, det sker muligvis ikke med dig …

Anbefalede: