Pedal en cykel gennem Virtual Reality for under $ 100 - 💡 Fix My Ideas

Pedal en cykel gennem Virtual Reality for under $ 100

Pedal en cykel gennem Virtual Reality for under $ 100


Forfatter: Ethan Holmes, 2019

Paul Yan's "Arduino ting" bringer virtuelle virkelighedscykler ind i rigdommen. Yan tilstår, "Jeg hater absolut at udøve og vil gøre den oplevelse lidt mindre smertefuld og mind-numbing." Det kombineret med hans opfattelse, at Arduino er "en alternativ form for spilcontroller", skabte ideen om en virtuel virkelighed cykel oplevelse. Enheden fungerer på to mekanismer: det måler cykelhjulets omdrejninger med et tachometer, der bruger infrarødt lys, og det er i stand til at formidle denne information til en smartphone over BLE. Disse mekanismer arbejder sammen for at måle din pedal output og føle det i et virtuelt virkelighed miljø.

Yan satte sin cykel på en stationær indendørs træner, så han kunne pedalere på plads. Skønheden i hans enhed er, at den er bredt kompatibel, ikke kun med nogen form for cykel, men teoretisk også med en hvilken som helst enhed, der har en looping eller revolverende overflade, såsom en tredemølle. Det skyldes, at det optiske tachometer er relativt ikke-invasivt, hvilket kun kræver et lille stykke papir tapet på dækket. Yan forklarer, at "hver gang hjulet får en komplet rotation, vil Arduino detektere, når papiret passerer og derefter sender en trådløs besked til mobiltelefonen", hvorved den virtuelle cykel bevæger sig fremad gennem sit virtuelle miljø.

Yan bruger dette $ 10 headset og en simpel tegneserieby udviklet med Unity, som han gør for VR ved hjælp af Google Cardboards gratis SDK. Han forklarer, hvordan han etablerede den virtuelle cykel for at bevæge sig gennem miljøet:

Jeg brugte en 3. partipakke kaldet Simple Waypoint System til at tegne en spline-sti. Hvis du ved hvad du laver, er denne pakke ikke nødvendig, men det gjorde livet meget lettere. Et af deres eksempler blev bygget for at skubbe en bil langs en sti ved hjælp af tastaturets op-knap, så jeg skiftede bilen med kamera riggen og havde den indkommende BLE ping-opkald samme funktion som op-knappen.

Alt i alt citerer Yan sin pris som $ 30 for Arduino og $ 10 for headsettet, der kommer til et samlet beløb på $ 40 for projektet. Det er dog vigtigt at bemærke, at Unity-miljøet er en $ 10 download, den 3. part pakke, der understøtter BLE til iOS og Android er en anden $ 10, og det valgfrie Simple Waypoint System er $ 15. Du skal også bygge eller opnå en stationær cykelopsætning, en BLE-pause og en IR-sensor til ledning til Arduino. Plus, hvis du vil have mulighed for at styre cyklen til venstre og højre, vil det også kræve ekstra komponenter.Mens disse ekstra overvejelser helt sikkert bringer prisen over $ 40, kan den stadig bygges til under $ 100, hvilket heller ikke er for lurvet.

Nedenfor er Yan's skematiske såvel som Arduino-koden.

Arduino har to hovedkomponenter: en BLE breakout (Adafruit's nRF8001) og en reflekterende IR sensor. Den reflekterende sensor har to sider: den ene med en IR LED ("E") og den anden med en IR fototransistor ("S"). Jeg loddede disse på en lille perf bord væk fra Arduino med en forlængerledning bestående af 18 gauge wire. Tråden er tyk nok til at suspendere perf bordet i luften, men alligevel fleksibel nok til at justere sin position og sigte som en gåsehalslampe. NRF8001 BLE breakout tager pins 2, 9, 10, 11, 12 og 13 op, men dit setup vil nok variere.

#include #include "Adafruit_BLE_UART.h" // nRF8001 stifter: SCK: 13, MISO: 12, MOSI: 11, REQ: 10, ACI: X, RST: 9, 3Vo: X #define ADAFRUITBLE_REQ 10 #define ADAFRUITBLE_RST 9 # definere ADAFRUITBLE_RDY 2 Adafruit_BLE_UART uart = Adafruit_BLE_UART (ADAFRUITBLE_REQ, ADAFRUITBLE_RDY, ADAFRUITBLE_RST); usigneret lang tid = 0l; boolean forbindelse = false; uint8_t btm = 65; uint8_t out = btm; uint8_t cap = 90; #define persec 30 #define sendat (1000 / persec) int irPin = 7; int irSensorPin = 5; int testLEDPin = 4; int tripTime = 0; int lastTrip = 0; int tripBetween; boolean detectState = false; booleanske lastDetectState = false; void setup (void) {Serial.begin (9600); pinMode (irPin, OUTPUT); pinMode (irSensorPin, INPUT); pinMode (testLEDPin, OUTPUT); uart.setDeviceName ( "YanBLE"); / * definer BLE navn: 7 tegn max! * / uart.setRXcallback (rxCallback); uart.setACIcallback (aciCallback); uart.begin (); } void loop () {pollIR (); // IR sensor uart.pollACI (); // BLE} void pollIR () {digitalWrite (irPin, HIGH); hvis (digitalRead (irSensorPin) == LOW) {detectState = true; if (detectState! = lastDetectState) {// Kør første gangs refleksion er registreret Serial.println ("meddelelse sendt via BLE"); hvis (forbindelse == sand) {sendBlueMessage ("1"); // dummy data bestået her, dette kan være nogen værdi. Vi skal bare pinge app} lastDetectState = true; } ellers {// her ser vi den samme refleksion over flere rammer // tænd test LED for at give visuel indikation af en positiv refleksions digitalWrite (testLEDPin, HIGH); }} else {detectState = false; lastDetectState = false; digitalWrite (testLEDPin, LOW); }} / ********************************************** *************************** / / *! BLE-relaterede funktioner under dette punkt * / / *************************************** ********************************* / void aciCallback (aci_evt_opcode_t begivenhed) {// Denne funktion kaldes, når du vælger ACI-hændelser ske skifte (hændelse) {tilfælde ACI_EVT_DEVICE_STARTED: Serial.println (F ("Annonceret startet")); pause; tilfælde ACI_EVT_CONNECTED: Serial.println (F ("Connected!")); connection = true; pause; tilfælde ACI_EVT_DISCONNECTED: Serial.println (F ("Disconnected")); forbindelse = false; pause; standard: break; }} void rxCallback (uint8_t * buffer, uint8_t len) {// Denne funktion kaldes, når data ankommer på RX-kanalen} void sendBlueMessage (String message) {uint8_t sendbuffer [20]; message.getBytes (sendbuffer, 20); char sendbuffersize = min (20, message.length ()); Serial.print (F (" n * Sending -> " ")); Serial.print ((char *) sendbuffer); Serial.println (" ""); // skriv data uart.write (sendbuffer, sendbuffersize); }


Du Kan Være Interesseret

Belle og Burger: Down Home Sass og et dash of Practicality

Belle og Burger: Down Home Sass og et dash of Practicality


Blue Mama: Hobby til næste niveau

Blue Mama: Hobby til næste niveau


Fremstillingen af ​​et Marie Antoinette kostume

Fremstillingen af ​​et Marie Antoinette kostume


Lavet i Japan - bind 32

Lavet i Japan - bind 32






Seneste Indlæg