Оглавление:

Беговая дорожка DIY VR - Basys3 FPGA-Digilent Contest: 3 шага
Беговая дорожка DIY VR - Basys3 FPGA-Digilent Contest: 3 шага

Видео: Беговая дорожка DIY VR - Basys3 FPGA-Digilent Contest: 3 шага

Видео: Беговая дорожка DIY VR - Basys3 FPGA-Digilent Contest: 3 шага
Видео: Omnidirectional treadmill CM1 - running in Virtual Reality - work in progress 2 2024, Июль
Anonim
Беговая дорожка DIY VR - Basys3 FPGA-Digilent Contest
Беговая дорожка DIY VR - Basys3 FPGA-Digilent Contest

Вы хотите построить беговую дорожку VR, на которой можно будет запускать приложения и игры для настольных компьютеров? Тогда вы попали в нужное место!

В обычных играх вы используете мышь и клавиатуру для взаимодействия с окружающей средой. Поэтому нам нужно отправлять такие же сигналы, как от мыши и клавиатуры, чтобы не было проблем с совместимостью между нашей беговой дорожкой и игрой. Вместо того, чтобы разбирать эти устройства, мы создадим собственное устройство, которое сможет имитировать их как можно ближе.

Для входов мыши мы будем использовать диск с чередующимися проводящими и непроводящими срезами, по которому будут скользить два провода с небольшим смещением. Плата будет считывать сигналы, поступающие от проводов, давая нам одну из четырех комбинаций: 00, 11, 10, 01, которые мы можем напрямую преобразовать в движение влево-вправо.

Для движения вверх-вниз вместо диска мы будем использовать пластину с тем же рисунком нулей и единиц.

В качестве входов для модуля, имитирующего клавиатуру, у нас будут переключатели, расположенные на шарнире стержня, который будет удерживать привязь. Когда вы шагаете в любом направлении, штанга слегка изгибается, тем самым размыкая переключатель.

(Имейте в виду, что проект все еще находится в стадии разработки и его можно улучшить, поэтому я жду любых советов, которые могут его улучшить)

Шаг 1: База

База
База
База
База
База
База

Основание должно иметь низкий центр тяжести, поэтому необходимо использовать тяжелый материал. В моем случае я использовал гипс и антенный диск, чтобы сделать вогнутую форму, но можно использовать и другие средства (например, мяч для йоги). После высыхания формы ее помещают на два диска одинакового диаметра из МДФ или аналогичного материала. Между двумя дисками MDF будет вставлена прокладка. Между этими дисками будет размещен треугольный профиль, имеющий по краям опоры. Еще один набор подшипников будет размещен перпендикулярно вершинам треугольника и касательно диска сверху. Для большей точности можно использовать больше подшипников. В одну из вершин поместим стержень, как показано на третьем рисунке. Этот стержень удерживает привязь, в которую будет помещен игрок.

Другой фиксированный внешний стержень используется для поддержки тросов, а также в качестве ориентира для вращательного движения.

Шаг 2: 2 Управление вводом

2 Управление вводом
2 Управление вводом
2 Управление вводом
2 Управление вводом
2 Управление вводом
2 Управление вводом

С точки зрения черного ящика устройство будет иметь следующие входы: 4 соединения для счетчиков x, y мыши, 2 соединения для кнопок мыши и 4 соединения для клавиш со стрелками. Выход представлен 4 контактами: 2 для подключения мыши PS2 и еще 2 для подключения клавиатуры PS2. Более подробное описание протокола PS2 можно найти на следующем сайте:

В качестве входов для платы я выбрал цифровые контакты JB (от 1 до 0). Рассматривая последовательность… 11001100…, считываемую на двух входах, мы можем различить три состояния счетчиков:

1. Подсчитать;

2. Обратный отсчет;

3. Сохраните текущее значение;

Модуль Count_Type делает именно это. Если есть изменение на входе, то модуль отправляет соответствующее сообщение 8-битному счетчику (реализованному в файле 8_bit_count.vhd), который добавляет или вычитает текущее значение, если не получен сигнал сброса.

Та же идея используется для движения головки вверх-вниз, но вместо диска должен использоваться скользящий линейный профиль с тем же чередованием 0 и 1.

Шаг 3: реализация VHDL

Реализация VHDL
Реализация VHDL

К презентации прилагаются следующие модули:

1. Count_Type: этот модуль обрабатывает декодирование двух входных проводов с диска или профиля, описанных на втором шаге;

2. 8bit_count: этот модуль интерпретирует декодированное сообщение из Count_Type и увеличивает или уменьшает счетчики;

3. 3-байтовый пакет: этот модуль управляет состоянием левой и правой кнопок и форматирует данные, чтобы их можно было ввести в 3-байтовый пакет данных, используемый в протоколе PS2;

4. clk12khz: этот модуль дает частоту 12 кГц, специфичную для протокола PS2, на котором работают определенные компоненты и процессы;

5. MessageManager: этот модуль отправляет 3-байтовый пакет данных, интерпретирует его и дает соответствующий ответ в качестве ответа на сообщение от ПК.

6. PS2Interface: этот модуль сопрягает протокол связи между устройством и хостом (ПК) (этот модуль требует некоторой отладки и тщательной переоценки для правильной работы).

Рекомендуемые: