Inhoudsopgave:

DIY MPU-6050 USB-joystick - Ajarnpa
DIY MPU-6050 USB-joystick - Ajarnpa

Video: DIY MPU-6050 USB-joystick - Ajarnpa

Video: DIY MPU-6050 USB-joystick - Ajarnpa
Video: Usb 3D Mouse Using Arduino and Mpu6050 Accelerometer #programming #arduino #arduinotutorial 2024, November
Anonim
DIY MPU-6050 USB-joystick
DIY MPU-6050 USB-joystick

Met Microsoft Flight Simulator 2020 realiseerde ik me snel hoe moeilijk het is om het toetsenbord te gebruiken om een plan te vliegen. Toen ik online zocht, kon ik geen redelijk geprijsde joystick vinden om te kopen. De meeste online retailers hadden ze niet op voorraad. De populariteit van MS Flight Simulator en de COVID 19-pandemie hebben alle bestaande joystickvoorraden weggevaagd. Mijn enige optie was om er zelf een te bouwen.

De meeste joysticks die er zijn, gebruiken potentiometers aan de basis om de hoeken van de joystick te bepalen en x- en y-asinformatie terug naar de computer te sturen. Dit werkt goed, maar bemoeilijkt de constructie van de joystick. en na verloop van tijd. de potmeters kunnen verslijten. In plaats van potentiometers te gebruiken, besloot ik om met een accelerometer / gyroscoop-sensorbord te gaan om informatie over de hoeken van de stick naar de computer te sturen.

Met de populariteit van verschillende Arduino-microprocessors en verschillende sensoren, worden de kosten van het bouwen van een Arduino-project veel betaalbaarder. Een van de veelgebruikte accelerometer-/gyroscoopsensorkaarten is de MPU-6050. In Canada kost het ongeveer $ 7CAN in Amazon. Ik heb de mijne van eBay voor veel minder uit China laten verzenden, maar de verzendtijd was 3 maanden of langer.

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

Elk Arduino-bord zou werken, maar het gebruik van een op ATmega32u4 gebaseerd bord zal veel eenvoudiger zijn, omdat ATmega32u4 native HID-ondersteuning (Human Interface Device) heeft. Zodra het bord is geprogrammeerd, kunt u het op elke pc met Windows 10 gebruiken en hebt u geen extra software nodig. Windows 10 zal het automatisch herkennen als een joystick wanneer de USB is aangesloten. (Het gebruik van een ander type Arduino-bord is te ingewikkeld voor dit eenvoudige bouwproject).

Ik kies voor Arduino Leonardo-bord. $ 17KAN van Amazon.

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

Deze 2 apparaten zijn de belangrijkste vereisten voor dit project. Andere kleinere items zoals bedrading en drukknoppen zijn ook nodig. In dit project heb ik voor de eenvoud slechts 2 drukknoppen gebruikt.

De joystickhendel is gemaakt van een schroot PVC-waterpijp. Dit kan gemakkelijk worden vervangen door een korte stijve pijp.

De basis van de joystick is een verende deurstopper die op een stuk hout is bevestigd.

De veerdeurstop is verkrijgbaar bij Home Depot voor $ 2,83CAN.

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

Stap 1: MPU6050 en drukknoppen aansluiten op Arduino Leonardo Board

MPU6050 en drukknoppen aansluiten op Arduino Leonardo Board
MPU6050 en drukknoppen aansluiten op Arduino Leonardo Board
MPU6050 en drukknoppen aansluiten op Arduino Leonardo Board
MPU6050 en drukknoppen aansluiten op Arduino Leonardo Board
MPU6050 en drukknoppen aansluiten op Arduino Leonardo Board
MPU6050 en drukknoppen aansluiten op Arduino Leonardo Board

Op de MPU 6050 worden slechts 4 aansluitingen gebruikt. Deze zijn gelabeld met VCC, GND, SCL en SDA.

Sluit VCC aan op 5v of 3.3v op Arduino Leonardo. (MPU 6050 kan 5v of 3.3v gebruiken. Maakt niet uit)

Verbind GND met elke GND op Arduino Leonardo.

Verbind SCL met SCL op Arduino Leonardo.

Verbind SDA met SDA op Arduino Leonardo.

Ik gebruik slechts 2 drukknoppen voor dit demonstratiedoel.

De eerste drukknop wordt gebruikt om het midden van de joystick te resetten. In dit voorbeeld is een uiteinde van de drukknop verbonden met GND en een uiteinde met PIN 13.

De tweede drukknop wordt gebruikt als joystickknop. In dit voorbeeld is deze verbonden met PIN 9 en GND.

U kunt indien nodig extra knoppen toevoegen aan uw project.

Stap 2: De joystickbasis bouwen

De joystickbasis bouwen
De joystickbasis bouwen
De joystickbasis bouwen
De joystickbasis bouwen
De joystickbasis bouwen
De joystickbasis bouwen

Zoek een stuk houtblok. Hoe zwaarder hoe beter. Het maakt de joystickbasis stabieler.

Schroef de veerdeurstopper in het midden van het houtblok zoals op de afbeelding.

Gebruik een stuk korte pijp als joystickhendel. Ik gebruikte een schraap PVC-buis. Betreed de draad zodat de accelerometer/gyroscoopsensor bovenop de pijp zit.

Plaats vervolgens de buis over de veerdeurstopper. Ik heb isolatietape gebruikt om de sensor aan de bovenkant vast te plakken.

Stap 3: Arduino IDE instellen

Download en installeer Arduino IDE.https://www.arduino.cc/en/Main/Software

Ik gebruikte Arduino 1.8.13 voor dit project. Arduino Web Editor kan ook voor dit project worden gebruikt.

Er worden 2 bibliotheken gebruikt.

1. MPU6050_tockn door tockn

github.com/Tockn/MPU6050_tockn

of je kunt het vinden in het menu "Bibliotheek beheren".

2. Joystickbibliotheek door Matthew Heironimus

github.com/MHeironimus/ArduinoJoystickLibr…

Deze is momenteel alleen beschikbaar via de GitHub-website.

Klik op code downloaden en ZIP downloaden. Pak het ZIP-bestand uit in uw Arduino-bibliothekenmap.

In mijn geval is het E:\PinChung\Documents\Arduino\libraries

Stap 4: Arduino-programma

Laad Pin_Joystick.ino op Arduino IDE en compileer en upload naar het Leonardo-bord.

Zorg ervoor dat het Arduino Leonardo-bord is geselecteerd en dat het poortnummer is geselecteerd aan de rechterkant COM: onder het menu Tools.

Ik merkte enige tijd op dat het programma niet kon worden geüpload met foutcode van COM-poort niet beschikbaar. Een paar keer op de resetknop op het Leonardo-bord drukken tijdens het compileren kan helpen. Ook het herstarten van Windows 10 kan ook helpen om de COM-poort vrij te maken.

Zodra het programma is geüpload naar het Leonardo-bord, zou Windows 10 automatisch de Leonardo-joystick moeten detecteren. Typ in de zoekbalk van Windows 10 Game Controllers, voer USB-gamecontrollers instellen uit.

selecteer Leonardo Joystick en klik op Eigenschappen. De joystickbeweging en de joystick #1-knop moeten worden opgepikt door Windows 10.

Als de joystick niet gecentreerd is, klik dan op de resetknop in het midden van de joystick die we zojuist hebben gemaakt. De USB-gamecontrollers moeten de joystick-stip in het midden tonen. Het is niet nodig om de joystick in het USB Game Controller-programma te kalibreren.

Kanttekening: voor degenen die niet bekend zijn met Arduino Leonardo, wanneer het apparaat is geconfigureerd als joystick, muis of toetsenbord, werkt de seriële poort niet. Dus "Serial.print()" zal niet werken. MPU6050 gebruikt ook een i2c-draadbibliotheek en gebruikt SDA- en SLC-pinnen. Op Leonardo nemen SDA en SCL zowel PIN 2 als PIN 3 in beslag, dus gebruik deze 2 pinnen nergens anders voor.

Stap 5: De joystick testen

Ik heb het getest op de Microsoft Flight Simulator 2020 en het werkt erg goed. Ik moet soms op de middelste toets drukken om de joystick op nul te zetten. De MPU6050-sensorwaarde kan in de loop van de tijd een beetje afwijken.

Er zijn veel mogelijkheden om aan het project te besteden, zoals het toevoegen van meer knoppen en het toevoegen van gashendels. Hopelijk inspireert dit andere knutselaars om nieuwe manieren te ontdekken om dingen te maken.

Aanbevolen: