Оглавление:

USB-джойстик DIY MPU-6050: 5 шагов
USB-джойстик DIY MPU-6050: 5 шагов

Видео: USB-джойстик DIY MPU-6050: 5 шагов

Видео: USB-джойстик DIY MPU-6050: 5 шагов
Видео: DIY 2 axis joystick 2024, Ноябрь
Anonim
USB-джойстик DIY MPU-6050
USB-джойстик DIY MPU-6050

С Microsoft Flight Simulator 2020 я быстро понял, насколько сложно использовать клавиатуру для выполнения плана. Поискав в Интернете, я не смог найти подходящий джойстик по разумной цене. У большинства интернет-магазинов их не было в наличии. Популярность MS Flight Simulator и пандемия COVID 19 уничтожили все существующие запасы джойстиков. Моим единственным вариантом было построить его самому.

Большинство джойстиков используют потенциометры в основании для определения углов джойстика и отправки информации об осях x и y обратно на компьютер. Это работает хорошо, но усложняет конструкцию джойстика. и со временем. потенциометры могут изнашиваться. Вместо того, чтобы использовать потенциометры, я решил использовать сенсорную плату акселерометра / гироскопа, чтобы отправлять в компьютер информацию об углах стика.

С ростом популярности различных микропроцессоров Arduino и различных датчиков стоимость создания проекта Arduino становится намного доступнее. Одна из часто используемых плат датчиков акселерометра / гироскопа - MPU-6050. В Канаде это стоит около 7 канадских долларов на Amazon. Я получил свой на eBay, доставленный из Китая, гораздо дешевле, но время доставки было примерно 3 месяца или больше.

www.amazon.ca/Neuftech-MPU-6050-3-Gyroscop…

Подойдет любая плата Arduino, но использование платы на базе ATmega32u4 будет намного проще, потому что ATmega32u4 имеет встроенную поддержку HID (Human Interface Device). После того, как плата запрограммирована, вы можете использовать ее на любом ПК с Windows 10 без дополнительного программного обеспечения. Windows 10 автоматически распознает его как джойстик при подключении USB. (Использование платы Arduino другого типа слишком сложно для этого простого проекта сборки).

Я выбираю плату Arduino Leonardo. 17 канадских долларов на Amazon.

www.amazon.ca/KEYESTUDIO-Leonardo-Developm…

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

Рукоятка джойстика сделана из обрезной водопроводной трубы ПВХ. Его легко заменить любой короткой жесткой трубой.

Основание джойстика - пружинный упор двери, закрепленный на дереве.

Пружинный ограничитель двери можно приобрести в Home Depot за 2,83 канадских доллара.

www.homedepot.ca/product/everbilt-spring-d…

Шаг 1. Подключение MPU6050 и кнопок к плате Arduino Leonardo

Подключение MPU6050 и кнопок к плате Arduino Leonardo
Подключение MPU6050 и кнопок к плате Arduino Leonardo
Подключение MPU6050 и кнопок к плате Arduino Leonardo
Подключение MPU6050 и кнопок к плате Arduino Leonardo
Подключение MPU6050 и кнопок к плате Arduino Leonardo
Подключение MPU6050 и кнопок к плате Arduino Leonardo

MPU 6050 использует только 4 соединения. Они имеют маркировку VCC, GND, SCL и SDA.

Подключите VCC к 5 В или 3,3 В на Arduino Leonardo. (MPU 6050 может использовать 5 В или 3,3 В. Не имеет значения)

Подключите GND к любому GND на Arduino Leonardo.

Подключите SCL к SCL на Arduino Leonardo.

Подключите SDA к SDA на Arduino Leonardo.

Я использую только 2 кнопки для этой демонстрационной цели.

Первая кнопка используется для сброса центра джойстика. В этом примере один конец кнопки подключен к GND, а другой конец - к контакту 13.

Вторая кнопка используется как кнопка джойстика. В этом примере он подключен к PIN 9 и GND.

При необходимости вы можете добавить в свой проект дополнительные кнопки.

Шаг 2: Сборка основания джойстика

Создание базы джойстика
Создание базы джойстика
Создание базы джойстика
Создание базы джойстика
Создание базы джойстика
Создание базы джойстика

Найдите кусок дерева. Чем тяжелее, тем лучше. Это сделает основание джойстика более устойчивым.

Прикрутите пружинный стопор дверцы к центру деревянного бруска, как показано на рисунке.

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

Затем наденьте трубу на пружинный стопор дверцы. Я использовал изоленту, чтобы приклеить датчик сверху.

Шаг 3: Установите Arduino IDE

Загрузите и установите Arduino IDE.

Для этого проекта я использовал Arduino 1.8.13. Для этого проекта также можно использовать веб-редактор Arduino.

Используются 2 библиотеки.

1. MPU6050_tockn от tockn

github.com/Tockn/MPU6050_tockn

или вы можете найти его в меню «Управление библиотекой».

2. Библиотека джойстиков от Мэтью Хейронимуса.

github.com/MHeironimus/ArduinoJoystickLibr…

В настоящее время он доступен только на сайте GitHub.

Нажмите "Загрузить код" и "Загрузить ZIP". Распакуйте ZIP-файл в каталог библиотек Arduino.

В моем случае это E: / PinChung / Documents / Arduino / libraries

Шаг 4: программа Arduino

Загрузите Pin_Joystick.ino в Arduino IDE, скомпилируйте и загрузите на плату Леонардо.

Убедитесь, что выбрана плата Arduino Leonardo и номер порта выбран справа COM: в меню «Инструменты».

Некоторое время я заметил, что программа не может быть загружена с кодом ошибки COM-порта недоступен. Нажатие кнопки сброса на плате Леонардо пару раз во время компиляции может помочь. Также перезапуск Windows 10 также может помочь освободить COM-порт.

После загрузки программы на плату Леонардо Windows 10 должна автоматически обнаружить джойстик Леонардо. В строке поиска Windows 10 введите Игровые контроллеры, запустите Настройка игровых контроллеров USB.

выберите «Джойстик Леонардо» и нажмите «Свойства». Движение джойстика и кнопку джойстика №1 должна улавливать Windows 10.

Если джойстик не отцентрован, когда вы отпустите его, нажмите только что сделанную кнопку сброса центра джойстика. На игровых контроллерах USB должна быть точка джойстика в центре. Калибровать джойстик в программе USB Game Controller не нужно.

Боковое примечание: для тех, кто не знаком с Arduino Leonardo, когда устройство настроено как джойстик, мышь или клавиатура, последовательный порт не будет работать. Так что "Serial.print ()" работать не будет. Кроме того, MPU6050 использует библиотеку проводов i2c и выводы SDA и SLC. На Леонардо SDA и SCL занимают как PIN 2, так и PIN 3, поэтому не используйте эти 2 контакта ни для чего другого.

Шаг 5: Проверка джойстика

Я тестировал его на Microsoft Flight Simulator 2020, и он работает очень хорошо. Иногда мне приходится нажимать центральную клавишу, чтобы обнулить джойстик. Значение датчика MPU6050 может немного измениться со временем.

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

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