Inhaltsverzeichnis:

DIY MPU-6050 USB-Joystick - Gunook
DIY MPU-6050 USB-Joystick - Gunook

Video: DIY MPU-6050 USB-Joystick - Gunook

Video: DIY MPU-6050 USB-Joystick - Gunook
Video: Custom Arduino Xbox controller with motion control MPU-6050. 2024, November
Anonim
DIY MPU-6050 USB-Joystick
DIY MPU-6050 USB-Joystick

Mit Microsoft Flight Simulator 2020 habe ich schnell gemerkt, wie schwierig es ist, mit der Tastatur einen Plan zu fliegen. Bei der Online-Suche konnte ich keinen vernünftigen Joystick zum Kauf finden. Die meisten Online-Händler hatten sie ausverkauft. Die Popularität von MS Flight Simulator und die COVID-19-Pandemie haben alle bestehenden Joystick-Aktien ausgelöscht. Meine einzige Möglichkeit war, selbst einen zu bauen.

Die meisten Joysticks da draußen verwenden Potentiometer an der Basis, um die Winkel des Joysticks zu bestimmen und X- und Y-Achseninformationen zurück an den Computer zu senden. Das funktioniert gut, verkompliziert aber die Konstruktion des Joysticks. und im Laufe der Zeit. Die Potentiometer können verschleißen. Anstatt Potentiometer zu verwenden, entschied ich mich für die Beschleunigungssensor- / Gyroskop-Sensorplatine, um Informationen über die Winkel des Sticks an den Computer zu senden.

Mit der Popularität verschiedener Arduino-Mikroprozessoren und verschiedener Sensoren werden die Kosten für den Aufbau eines Arduino-Projekts viel erschwinglicher. Eine der am häufigsten verwendeten Beschleunigungsmesser/Gyroskop-Sensorplatinen ist MPU-6050. In Kanada kostet es bei Amazon etwa 7CAN. Ich habe meine von eBay für viel weniger aus China geliefert bekommen, aber die Lieferzeit betrug 3 Monate oder länger.

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

Jedes Arduino-Board würde funktionieren, aber die Verwendung eines ATmega32u4-basierten Boards ist viel einfacher, da ATmega32u4 native HID (Human Interface Device) unterstützt. Sobald das Board programmiert ist, können Sie es auf jedem Windows 10-PC verwenden und es ist keine zusätzliche Software erforderlich. Windows 10 erkennt es automatisch als Joystick, wenn der USB angeschlossen ist. (Die Verwendung eines anderen Arduino-Boards ist für dieses einfache Build-Projekt zu kompliziert).

Ich wähle Arduino Leonardo Board. $17CAN von Amazon.

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

Diese 2 Geräte sind die Hauptanforderungen für dieses Projekt. Andere kleinere Gegenstände wie Verkabelungen und Taster sind ebenfalls erforderlich. In diesem Projekt habe ich der Einfachheit halber nur 2 Druckknöpfe verwendet.

Der Joystick-Griff besteht aus einem Schrott-PVC-Wasserrohr. Dies kann leicht durch ein beliebiges kurzes starres Rohr ersetzt werden.

Die Basis des Joysticks ist ein federnder Türstopper, der auf einem Holzstück befestigt ist.

Der Federtürstopper ist bei Home Depot für 2,83 CAN $ erhältlich.

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

Schritt 1: Anschließen von MPU6050 und Drucktasten an das Arduino Leonardo Board

Anschließen von MPU6050 und Drucktasten an das Arduino Leonardo Board
Anschließen von MPU6050 und Drucktasten an das Arduino Leonardo Board
Anschließen von MPU6050 und Drucktasten an das Arduino Leonardo Board
Anschließen von MPU6050 und Drucktasten an das Arduino Leonardo Board
Anschließen von MPU6050 und Drucktasten an das Arduino Leonardo Board
Anschließen von MPU6050 und Drucktasten an das Arduino Leonardo Board

An der MPU 6050 werden nur 4 Anschlüsse verwendet. Sie sind mit VCC, GND, SCL und SDA gekennzeichnet.

Verbinden Sie VCC mit 5 V oder 3,3 V auf Arduino Leonardo. (MPU 6050 kann entweder 5 V oder 3,3 V verwenden. Egal)

Verbinden Sie GND mit einem beliebigen GND auf Arduino Leonardo.

Verbinden Sie SCL mit SCL auf Arduino Leonardo.

Verbinden Sie SDA mit SDA auf Arduino Leonardo.

Ich verwende nur 2 Druckknöpfe für diesen Demonstrationszweck.

Der erste Taster dient zum Zurücksetzen der Joystick-Mitte. In diesem Beispiel ist ein Ende des Tasters mit GND und ein Ende mit PIN 13 verbunden.

Der zweite Taster wird als Joystick-Taste verwendet. In diesem Beispiel ist er mit PIN 9 und GND verbunden.

Sie können Ihrem Projekt nach Bedarf zusätzliche Schaltflächen hinzufügen.

Schritt 2: Aufbau der Joystick-Basis

Aufbau der Joystick-Basis
Aufbau der Joystick-Basis
Aufbau der Joystick-Basis
Aufbau der Joystick-Basis
Aufbau der Joystick-Basis
Aufbau der Joystick-Basis

Finden Sie ein Stück Holzblock. Je schwerer desto besser. Dadurch wird die Joystick-Basis stabiler.

Schrauben Sie den Federtürstopper wie im Bild gezeigt in die Mitte des Holzblocks.

Verwenden Sie ein Stück kurzes Rohr als Joystick-Griff. Ich benutzte ein kratzendes PVC-Rohr. Treten Sie den Draht so, dass der Beschleunigungsmesser / Gyroskopsensor oben auf dem Rohr sitzt.

Dann das Rohr über den Federtürstopper stecken. Ich benutzte Isolierband, um den Sensor auf die Oberseite zu kleben.

Schritt 3: Arduino-IDE einrichten

Laden Sie die Arduino IDE herunter und installieren Sie sie.https://www.arduino.cc/en/Main/Software

Ich habe Arduino 1.8.13 für dieses Projekt verwendet. Der Arduino Web Editor kann auch für dieses Projekt verwendet werden.

Es werden 2 Bibliotheken verwendet.

1. MPU6050_tockn von tockn

github.com/Tockn/MPU6050_tockn

oder Sie finden es im Menü "Bibliothek verwalten".

2. Joystick-Bibliothek von Matthew Heironimus

github.com/MHeironimus/ArduinoJoystickLibr…

Dieser ist derzeit nur auf der GitHub-Website verfügbar.

Klicken Sie auf Code herunterladen und ZIP herunterladen. Entpacken Sie die ZIP-Datei in Ihr Arduino-Bibliotheksverzeichnis.

In meinem Fall ist es E:\PinChung\Documents\Arduino\libraries

Schritt 4: Arduino-Programm

Laden Sie Pin_Joystick.ino in die Arduino IDE und kompilieren und laden Sie sie auf das Leonardo-Board hoch.

Stellen Sie sicher, dass das Arduino Leonardo-Board ausgewählt ist und die Portnummer für den richtigen COM ausgewählt ist: im Menü Extras.

Mir ist einige Zeit aufgefallen, dass das Programm nicht hochgeladen werden konnte mit Fehlercode des COM-Ports nicht verfügbar. Es kann helfen, den Reset-Knopf auf dem Leonardo-Board während des Kompilierens ein paar Mal zu drücken. Auch ein Neustart von Windows 10 kann helfen, den COM-Port freizugeben.

Sobald das Programm auf das Leonardo-Board hochgeladen wurde, sollte Windows 10 den Leonardo Joystick automatisch erkennen. Geben Sie in der Suchleiste von Windows 10 Gamecontroller ein, und führen Sie USB-Gamecontroller einrichten aus.

Wählen Sie Leonardo Joystick und klicken Sie auf Eigenschaften. Die Joystick-Bewegung und die Joystick-Taste Nr. 1 sollten von Windows 10 aufgenommen werden.

Wenn der Joystick nicht zentriert ist, klicken Sie beim Loslassen auf die soeben erstellte Schaltfläche zum Zurücksetzen der Joystick-Mitte. Die USB-Gamecontroller sollten den Joystick-Punkt in der Mitte anzeigen. Es ist nicht erforderlich, den Joystick im USB-Gamecontroller-Programm zu kalibrieren.

Randnotiz: Für diejenigen, die mit Arduino Leonardo nicht vertraut sind: Wenn das Gerät als Joystick, Maus oder Tastatur konfiguriert ist, funktioniert die serielle Schnittstelle nicht. "Serial.print()" wird also nicht funktionieren. Außerdem verwendet MPU6050 eine i2c-Drahtbibliothek und verwendet SDA- und SLC-Pins. Auf Leonardo nehmen SDA und SCL sowohl PIN 2 als auch PIN 3 auf, also verwenden Sie diese 2 Pins nicht für etwas anderes.

Schritt 5: Testen des Joysticks

Ich habe es auf dem Microsoft Flight Simulator 2020 getestet und es funktioniert sehr gut. Ich muss manchmal die mittlere Taste drücken, um den Joystick auf Null zu setzen. Der Wert des MPU6050-Sensors kann im Laufe der Zeit etwas abweichen.

Es gibt viele Möglichkeiten, sich für das Projekt einzusetzen, z. B. das Hinzufügen weiterer Schaltflächen und das Hinzufügen von Drosselklappensteuerungen. Hoffentlich wird dies andere Bastler dazu inspirieren, neue Wege der Herstellung von Dingen zu erkunden.

Empfohlen: