Педалите с велосипед през виртуалната реалност за $ 100 - 💡 Fix My Ideas

Педалите с велосипед през виртуалната реалност за $ 100

Педалите с велосипед през виртуалната реалност за $ 100


Автор: Ethan Holmes, 2019

„Ардуино“ на Пол Ян идва от виртуалната реалност в сферата на достъпността. Ян изповядва: „Аз абсолютно мразя да упражнявам и искам да направя това преживяване малко по-малко болезнено и успокояващо“. Това, в съчетание с идеята му, че Arduino е „алтернативен вид контролер на играта“, доведе до идеята за виртуална реалност. колоездене. Устройството работи по два механизма: измерва оборотите на колелото на колелото с тахометър, който използва инфрачервена светлина, и може да предава тази информация на смартфон през BLE. Тези механизми работят заедно за измерване на изхода на педалите и го захранват във виртуална среда.

Ян постави мотора си на неподвижен вътрешен треньор, позволявайки му да натисне педала на място. Красотата на устройството му е, че тя е широко съвместима не само с всякакъв вид мотор, но и теоретично с всяко устройство, което има примка или въртяща се повърхност, като например бягаща пътека. Това е така, защото оптичният тахометър е сравнително неинвазивен и изисква само малка част от хартията, залепена към гумата. Ян обяснява, че “всеки път, когато колелото завърши пълно завъртане, Arduino ще открие кога хартията минава покрай и след това изпраща безжично съобщение до мобилния телефон”, като по този начин движи виртуалния велосипед напред през неговата виртуална среда.

Yan използва тези $ 10 слушалки и обикновен градски анимационен филм, разработен с Unity, който той прави за VR с помощта на безплатния SDK на Google Cardboard. Той обяснява как е настроил виртуалния велосипед да се движи през околната среда:

Използвах пакет от трета страна, наречен Simple Waypoint System, за да изчертая пътя на сплайн. Ако знаете какво правите, този пакет не е необходим, но е направил живота много по-лесен. Един от примерите им е създаден, за да избута автомобил по пътека, използвайки бутона на клавиатурата, така че сменях колата с камерата и имах входящия BLE ping да извиква същата функция като бутона нагоре.

Като цяло, Ян цитира цената си като $ 30 за Arduino и $ 10 за слушалките, достигайки общо 40 $ за проекта. Въпреки това е важно да се отбележи, че средата Unity е $ 10 за изтегляне, пакетът на третата страна, който поддържа BLE за iOS и Android, е още $ 10, а опционалната система Simple Waypoint е $ 15. Също така ще трябва да изградите или да получите стационарна настройка на велосипеда, BLE пробив и IR сензор, за да свържете към Arduino. Плюс това, ако искате способността да управлявате мотора наляво и надясно, това ще изисква и допълнителни компоненти.Докато тези допълнителни съображения със сигурност допринасят за цената над $ 40, тя все още може да бъде построена за под $ 100, което също не е твърде оскърбено.

По-долу е представена схемата на Ян, както и кодът Arduino.

Arduino има два ключови компонента: BLE пробив (nRF8001 на Adafruit) и отразяващ IR сензор. Отражателният сензор има две страни: едната с IR LED (“E”) и другата с IR фототранзистор (“S”). Споех ги върху малка дъска за парфюм далеч от Ардуино с удължител, съставен от тел с 18 габарити. Тел е достатъчно дебел, за да окачи перфорацията във въздуха, но достатъчно гъвкава, за да регулира положението си и да се прицели като лампа с гъши шия. В nRF8001 BLE пробив заема пина 2, 9, 10, 11, 12 и 13, но вашата настройка вероятно ще се различават.

#include #include "Adafruit_BLE_UART.h" // nRF8001 игли: SCK: 13, MISO: 12, MOSI: 11, REQ: 10, ACI: X, RST: 9, 3Vo: X # дефиниране ADAFRUITBLE_REQ 10 # дефиниране ADAFRUITBLE_RST 9 # define ADAFRUITBLE_RDY 2 Adafruit_BLE_UART uart = Adafruit_BLE_UART (ADAFRUITBLE_REQ, ADAFRUITBLE_RDY, ADAFRUITBLE_RST); неподписано дълго време = 0l; boolean connection = 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 tripB между; boolean detectState = false; boolean lastDetectState = false; void setup (void) {Serial.begin (9600); pinMode (irPin, OUTPUT); pinMode (irSensorPin, INPUT); pinMode (testLEDPin, OUTPUT); uart.setDeviceName ( "YanBLE"); / * определи BLE име: 7 символа макс! * / uart.setRXcallback (rxCallback); uart.setACIcallback (aciCallback); uart.begin (); } void loop () {pollIR (); // IR сензор uart.pollACI (); // BLE} void pollIR () {digitalWrite (irPin, HIGH); if (digitalRead (irSensorPin) == LOW) {detectState = true; if (detectState! = lastDetectState) {// изпълни първия път, когато се открие отражение Serial.println ("съобщение, изпратено чрез BLE"); if (връзка == true) {sendBlueMessage ("1"); // пропуснати данни минаха тук, това може да бъде всяка стойност. Трябва само да пробваме приложението: lastDetectState = true; } else {// тук виждаме същото отражение върху няколко кадъра // включете LED теста, за да дадете визуална индикация за положително отражение на цифров запис (testLEDPin, HIGH); }} else {detectState = false; lastDetectState = false; digitalWrite (testLEDPin, LOW); }} / *********************************************** *************************** / / *! BLE-свързани функции под тази точка * / / **************************************** ********************************** / void aciCallback (събитие aci_evt_opcode_t) {// тази функция се извиква, когато изберете ACI събития се случват с ключ (събитие) {case ACI_EVT_DEVICE_STARTED: Serial.println (F ("Реклама започна")); прекъсване; случай ACI_EVT_CONNECTED: Serial.println (F ("Свързан!")); връзка = вярно; прекъсване; случай ACI_EVT_DISCONNECTED: Serial.println (F ("Прекъснат")); connection = false; прекъсване; по подразбиране: прекъсване; }} void rxCallback (uint8_t * буфер, uint8_t len) {// тази функция се извиква всеки път, когато данните постъпят в RX канала} void sendBlueMessage (String message) {uint8_t sendbuffer [20]; message.getBytes (sendbuffer, 20); char sendbuffersize = min (20, message.length ()); Serial.print (F ("*) Изпращане ->" ")); Serial.print ((char *) sendbuffer); Serial.println (" "); // записваме данните uart.write (sendbuffer, sendbuffersize); }


Може Да Се Интересувате

При тази тухла ... Подробности за Лего Ватикана Build

При тази тухла ... Подробности за Лего Ватикана Build


Всички спецификации за новия настолен лазерен нож на Glowforge

Всички спецификации за новия настолен лазерен нож на Glowforge


Ръцете с Модулната RePhone

Ръцете с Модулната RePhone


Затъмненията на създателя Faire

Затъмненията на създателя Faire