Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY Arduino USB Gaming Controller – Bouw Je Eigen High-Performance Gamepad

Onderdelen en benodigdheden

Onderdeel Aantal
SparkFun Pro Micro - 5V/16MHz (of Arduino Leonardo / ATmega32U4) 1
Drukknoppen (tactile switches, 12mm) 12
Custom geëtste PCB (PDF voor button matrix bijgevoegd) 1
Weerstand 10k ohm 1
Jumper-draden 1 set

Benodigde tools en machines

  • Ferric chloride poeder (voor PCB etsen)
  • 3D-printer (voor behuizing)
  • Draaiboor / schroevendraaier

Apps en online diensten

  • Arduino IDE
  • Autodesk Fusion 360 (voor 3D-ontwerp behuizing)

Over dit project

Introductie

Dit project gaat over een "DIY Gaming USB Controller" waar we recent aan gewerkt hebben bij ElectroPunkz Labs.

Het idee is om een goedkope ATmega32U4-gebaseerde USB-controller te maken met knoppen en analoge joysticks die gebruikt kan worden om games te spelen zoals NFS, GTA, Half-Life, Little Fighter 2! etc.

We hebben de controller in twee vormfactoren gemaakt: de eerste op basis van een PS1- of SNES-configuratie, de andere een volledige Xbox USB-controller met analoge sticks en knoppen (nog niet afgerond).

In deze post maken we versie 1: de PS1-layout controller!

Het is beter om eerst de projectvideo te bekijken.

Materialen

De hardware is simpel en makkelijk te verkrijgen (behalve de PCB, je kunt je eigen maken met het bijgevoegde PDF-bestand van de PCB).

  • Arduino Leonardo / Pro Micro / ATmega32U4
  • Knoppen (tactile switches)
  • Custom geëtste PCB (button matrix PDF bijgevoegd)
  • 10k Weerstanden
  • Jumper-draden

Dank aan UTSOURCE.net voor het aanleveren van elektronische componenten voor dit project! Je kunt UTSOURCE.net bekijken, ze leveren alle soorten elektronische componenten, zoals alle onderdelen die in dit project gebruikt zijn.

BOUWPROCES (Bedrading, montage, etc.)

Het eerste wat we moeten doen is de basisopstelling voorbereiden: 12 drukknoppen in pull-down configuratie aangesloten op een Pro Micro.

We testten dit op een breadboard en maakten vervolgens een PCB volgens het bovenstaande schema.

Na het ontwerpen van de PCB (in OrCAD Cadence) printten we de TOP-laag PDF op glanspapier.

Ik knipte het glanspapier op PCB-formaat, plaatste het op een koperplaat en pasteer de inkt van het glanspapier op de koperplaat met warmte. (Basale Toner Transfer-methode, bekijk mijn video over dit onderwerp.)

Na het voorbereiden van de PCB, dompelden we het in een etsoplossing en etsten de PCB. Daarna boorden we gaten voor componenten, en onze DIY GAME CONTROLLER PCB was klaar!

Plaats alles erop volgens het schema en de schakeling was klaar.

Na het klaarmaken van de schakeling, ontwierpen en 3D-printten we de PCB-behuizing/hoes voor de controller in Fusion360.

Nu hoeven we alleen nog de code te uploaden en wat games te spelen.

Code

Upload de onderstaande code naar je Pro Micro.

Advies: Test je bord/opstelling grondig eerst, check de weerstand en connectiviteit van PCB-sporen. Als er iets ontbreekt, veroorzaakt dit veel toetsenbordfouten omdat ontbrekende ground-lijnen onregelmatige signalen naar de pinnen sturen en je Pro Micro blijft willekeurige toetsen indrukken, wat herprogrammeren heel moeilijk maakt.

Testen

Open Kladblok en begin met de toetsen van je controller indrukken en check of de juiste tekens verschijnen die in de code toegewezen zijn.

Of gebruik een toetsenbord-test-app of web-app.

Als alles werkt volgens de code, open dan een game en begin te spelen met deze DIY GAMING CONSOLE!

Verder verbeteren

Het eerste wat ik ga toevoegen zijn analoge joysticks voor het spelen van games die een muis gebruiken voor navigatie, soort van zoals een Xbox One-controller.

Versie 2 zal een goede PCB met Xbox One-controller-layout hebben, dus blijf op de hoogte.

Laat een reactie achter als jullie vragen hebben!

Code

#include <Keyboard.h>
int WPin = 2; // OMHOOG
int SPin = 3; // OMLAAG
int APin = 4; // LINKS
int DPin = 5; // RECHTS
int UPLpin = 7; // BOVEN LINKS Q
int UPRpin = 9; // BOVEN RECHTS E
int Xpin = 14; // X
int Apin = 10; // I
int Ypin = 15; // Y
int Bpin = 16; // B

void setup() {
  pinMode(WPin, INPUT);
  pinMode(SPin, INPUT);
  pinMode(APin, INPUT);
  pinMode(DPin, INPUT);
  pinMode(UPLpin, INPUT);
  pinMode(UPRpin, INPUT);
  pinMode(Xpin, INPUT);
  pinMode(Apin, INPUT);
  pinMode(Ypin, INPUT);
  pinMode(Bpin, INPUT);
  digitalWrite(WPin, HIGH);
  digitalWrite(SPin, HIGH);
  digitalWrite(APin, HIGH);
  digitalWrite(DPin, HIGH);
  digitalWrite(UPLpin, HIGH);
  digitalWrite(UPRpin, HIGH);
  digitalWrite(Xpin, HIGH);
  digitalWrite(Apin, HIGH);
  digitalWrite(Ypin, HIGH);
  digitalWrite(Bpin, HIGH);
  Keyboard.begin();
}

void loop() {
  if (digitalRead(WPin) == 0) { Keyboard.write('W'); delayMicroseconds(1); }
  if (digitalRead(SPin) == 0) { Keyboard.write('S'); delayMicroseconds(1); }
  if (digitalRead(APin) == 0) { Keyboard.write('A'); delayMicroseconds(1); }
  if (digitalRead(DPin) == 0) { Keyboard.write('D'); delayMicroseconds(1); }
  if (digitalRead(UPLpin) == 0) { Keyboard.write('q'); delayMicroseconds(1); }
  if (digitalRead(UPRpin) == 0) { Keyboard.write('e'); delayMicroseconds(1); }
  if (digitalRead(Xpin) == 0) { Keyboard.write('x'); delayMicroseconds(1); }
  if (digitalRead(Apin) == 0) { Keyboard.write('i'); delayMicroseconds(1); }
  if (digitalRead(Ypin) == 0) { Keyboard.write('y'); delayMicroseconds(1); }
  if (digitalRead(Bpin) == 0) { Keyboard.write('b'); delayMicroseconds(1); }
}

Aangepaste onderdelen en behuizingen

3D-printbestanden voor de behuizing zijn beschikbaar in de repository.

Schema's

Schema en PCB-layout bestanden zijn bijgevoegd.

Productieproces

  1. Bouw een real-time gyroscoop-spel met Arduino Nano & MPU-6050 sensor
  2. Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
  3. Bouw een Tetris-spel met Arduino Nano op een Zelfgemaakte 16×8 LED-matrix
  4. Slimme Arduino-waterfles – realtime monitoring & herinneringen
  5. Pixel Chaser: Interactieve één-tik LED-spel met Arduino Nano
  6. Alexa-ingeschakelde Arduino Thuiscontroller: Slimme Automatisering Made Simple
  7. NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
  8. Slimme gebaar-naar-tekst handskoen voor gebarentaal
  9. 1D Pong-spel met Arduino en WS2812 LED-strip – Stap-voor-stap DIY handleiding
  10. Arduino DMX-512 Tester Controller – Complete Onderdelenkit voor Betrouwbare Verlichtingsbesturing
  11. DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano