Indholdsfortegnelse:

Arduino PS/2 til USB -adapter: 7 trin (med billeder)
Arduino PS/2 til USB -adapter: 7 trin (med billeder)

Video: Arduino PS/2 til USB -adapter: 7 trin (med billeder)

Video: Arduino PS/2 til USB -adapter: 7 trin (med billeder)
Video: МОЩНЫЙ мультиметр UNI-T UT171B купить сегодня, или что лучше? 2024, November
Anonim
Arduino PS/2 til USB -adapter
Arduino PS/2 til USB -adapter
Arduino PS/2 til USB -adapter
Arduino PS/2 til USB -adapter

Har du nogensinde ønsket at bruge dit gamle PS/2 -tastatur med din bærbare eller nye stationære pc og fandt ud af, at de ikke længere har PS/2 -porte? Og så i stedet for at købe en billig PS/2 til USB -adapter, som en normal person ville gøre, ville du bruge din Arduino som en PS/2 til USB -adapter. Så er du kommet til det rigtige sted:)

Retfærdig advarsel, før vi går ind i det. Når du bruger din UNO/Mega som en USB-HID-enhed (ikke begrænset til tastatur, det kan endda være en mus, joystick osv.), Mister du midlertidigt dens funktioner som en Arduino. Med det mener jeg, at du ikke kan bruge den serielle kommunikation, og du kan ikke omprogrammere den via USB. Dette skyldes, at vi vil overskrive firmwaren på dens USB-interfacechip (lille fyr i nærheden af USB-porten Atmega8U2 og 16U2 afhængigt af revisionen). Men bare rolig, du kan faktisk ikke tegne din UNO/Mega ved at gøre dette, den er altid reversibel.

Også hvis du har en Arduino, der allerede har en USB-HID-funktion (Arduino Pro Micro eller Leonardo, osv. Gør en Google-søgning) kan du glemme, at denne instruerbare nogensinde har eksisteret, gå direkte her for at redde dig selv fra en verden af problemer, bare sjov!

Forbrugsvarer

  • Hardware

    • Arduino UNO eller Mega
    • PS/2 tastatur
    • Eventuelt kan en ekstra Arduino eller enhver form for USB -programmør (USBasp osv.) Være praktisk.
  • Software

    • Atmel FLIP
    • PS2KeyAvanceret bibliotek til Arduino IDE

Trin 1: Kabelføring og opsætning

Kabelføring og opsætning
Kabelføring og opsætning
Kabelføring og opsætning
Kabelføring og opsætning
Kabelføring og opsætning
Kabelføring og opsætning
Kabelføring og opsætning
Kabelføring og opsætning

Afhængigt af situationen kan du enten finde et breakout -bord eller redde en gammel port fra et bundkort (mit 2. forsøg), eller hvis du føler dig særligt lunefuld, kan du endda helt skære den lilla jackstik og afsløre de 4 ledninger (mit første forsøg) og slutte dem til UNO.

Tastatur_Arduino

+5V (VCC) _+5V

GRUND_GND

UR_PIN 2 **

DATA _ PIN3*

*Du kan ændre DATA -stiften til hvad du vil, men husk at opdatere skitsen.

** CLOCK skal tilsluttes en afbrydelsesstift på Arduino, som kun kan være PIN 2 eller 3 (husk at opdatere skitsen) på en UNO. For mere information og forskellige tavlekonfigurationer kan du tjekke kommentarfeltet i PS2KeyAdvanced bibliotekseksempler.

Trin 2: Test af tastatur

Inden du går alle hænderne på dækket, skal du først kontrollere, at alt fungerer på tastatur og bibliotek.

Her har jeg vedhæftet en modificeret version af SimpleTest.ino fra PS2KeyAdvanced bibliotekseksempler med opdateret ur og datapinde og også en "make" og "break" repræsentation. Her er en forklaring på output.

  • Dette "make" og "break" scancode system og "Code", som er den isolerede (c & 0xFF) scancode for enten tastetryk eller tastfrigivelse spiller en vigtig rolle i PS/2 til USB konvertering, og jeg anbefaler dig at studere de to andre eksempler, der følger med biblioteket, for at få en bedre forståelse, hvis du planlægger at forbedre eller ændre (omlægge nøgler til forskellige layout) den sidste skitse. Du kan også få en komplet liste over PS/2 scancodes fra biblioteket ved at åbne enten 'PS2KeyAdvanced.h' eller 'PS2KeyCode.h' filer fra '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
  • "Statusbits" refererer til ændringstaster (Ctrl, Alt, Windows, Shift/Caps), og du vil se, at med hver ekstra modifikatortast ændres denne værdi, mens hovedkoden "normal" (ikke-modifikator) er uændret. Men i sidste skitse har jeg set bort fra denne metode og implementeret disse ændringstaster som enkle tastetryk (Du vil se, at disse ændringstaster også har "make" og "break" scancode uafhængigt af normale taster, uanset om der trykkes på flere taster eller ej.) fordi det gør tingene lettere med USB-HID-protokol.

Trin 3: Forhåndsvisning af PS/2 til USB -konvertering

Inden vi opdaterer Atmega8U2 eller 16U2 (UNO Rev3) for at identificere vores Arduino som et USB-tastatur, bør vi sikre os, at alle konverteringsmaterialer fungerer korrekt, og at den sidste sidste skitse uploades, eller på anden måde vil det være en stor smerte at blive ved med at skrive over firmware igen og igen mellem de originale og USB-tastatur hex-filer, så du kunne uploade den korrekte skitse. Dette bliver især sandt, hvis du ikke har en ekstern programmør som en USBasp eller en anden Arduino til brug som en internetudbyder. Så her vil vi uploade en 'DEBUG' version af den endelige skitse med et menneskeligt læseligt output (gennem den serielle skærm) for at teste tingene.

Det output, du ser, formateres sådan, når hver nøgle slippes, 00 00 00 00 00 00 00 00

Her er en grundlæggende forklaring på det forventede output,

For hvert nyt tastetryk med flere modifikatorer skal du få en ny linje med forskellige værdier for 'xx'. Endelig, når du slipper alle ændringstaster 'xx', skal det blive 00

xx 00 00 00 00 00 00 00 00

For hver nye flere normale tastetryk (for et eksempel trykker vi på både hypotetisk tast a, tast b og tast c med værdierne 'xx', 'yy' og 'zz' i den rækkefølge) du skulle få kontinuerlig (ikke obligatorisk) nyheder som denne,

00 00 xx åå zz 00 00 00

når du kun slipper tast b, skal output skifte til,

00 00 xx 00 zz 00 00 00

og hvis du trykker på ny tast d med værdien 'nn' uden at slippe tast a eller tast b, skal dit output skifte til,

00 00 xx nn zz 00 00 00

og endelig vende tilbage til dette, når hver nøgle slippes,

00 00 00 00 00 00 00 00

og endelig, hvis du trykker på enten Caps Lock, Num Lock eller Scroll Lock, skulle du få sådan noget med flere linjer på samme tid,

00 00 xx 00 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Hvis alt sker her, er du gylden til at fortsætte!

Trin 4: Teknisk forklaring

Teknisk forklaring
Teknisk forklaring
Teknisk forklaring
Teknisk forklaring

Hvis du kan lide, kan du springe dette trin over. Dette er blot en forklaring på de tidligere output. Det output-8-bytes-array, du så, er formateret i henhold til ovenstående fig.1 Du kan lære meget mere om dette og også hvordan ændringsnøglerne statusbyte skrives fra denne wiki om USB-HID. Grundlæggende er det, min kode gør, hver gang der trykkes på en ny tast (PS/2-protokollen betegner dette som 'make'), den cykler gennem de sidste 6 bytes i arrayet, der bruges til normale tastetryk, og udfyld den første tom byte den finder med den relevante 'HID scancode' (vist som i fig.2 Du kan også finde en komplet liste fra den vedhæftede PDF) for den modtagne 'PS/2 scancode'. Og endelig når den relevante nøgle frigives (PS/2 -protokollen betegner dette som 'break'), vil koden gå gennem det aktuelle byte -array og kun slette den relevante byte.

Hvis du fulgte indtil her og også, hvis du læste wiki-siden, vil du se, at der er et lille problem i denne metode, normalt når nøglen slippes, bliver de resterende bytes i HID-protokol omarrangeret for at slippe af med tomme bytes mellem resterende ikke-tomme bytes. Men af en eller anden grund, uanset hvor mange måder jeg prøvede på, kunne jeg ikke få det til at fungere efter hensigten uden ved et uheld også at slette uønskede bytes for trykte taster. Hvis du kan forbedre dette for at få det til at fungere, skal du efterlade en kommentar. Selvom dette problem i sidste ende ikke påvirker tastaturets funktionalitet, så længe Arduino stadig registrerer hvert tastetryk uanset deres trykte rækkefølge (hvilket ikke påvirker noget i praktisk brug).

Trin 5: Upload af den endelige skitse

Så før du endelig opdaterer firmwaren til Atmega8U2 eller 16U2 (UNO Rev3) for at identificere vores Arduino som et USB -tastatur, skal vi uploade den endelige skitse. Når du har uploadet dette, hvis du går til den serielle skærm, vil du se, at det udskriver skrald med hver ny tast, der trykkes på, dette er et godt tegn på, at alt fungerer efter hensigten, og vi kan gå videre til sidste trin. YAY !!!

Trin 6: Opdatering af firmwaren

Endelig kan du opdatere firmwaren på din Arduino for at registrere den som USB -tastatur. Til dette vil jeg ikke gå ind på mange detaljer, da det vil gøre dette instruerbart for langt.

  1. Følg denne vejledning fra arduino.cc om 'Opdatering af Atmega8U2 og 16U2 på en Uno eller Mega2560 ved hjælp af DFU', men frem for at bruge 'Arduino-usbserial-uno.hex' brug det vedhæftede 'Arduino-keyboard-0.3.hex'
  2. I FLIP skal du huske at vælge målenheden som Atmega8U2 eller 16U2 afhængigt af dig Arduino, og fra vælge kommunikationsmediet vælge USB og til sidst indlæse den korrekte hex -fil, før du vælger kør.
  3. Hvis du stødte på en driverfejl, skal du gå til Windows enhedshåndtering og vælge at søge efter den ukendte driver inde i installationsmappen for FLIP '\ Program Files (x86) Atmel \'
  4. Hvis du stødte på fejl under opdatering af firmwaren fra FLIP flere gange, skal du lukke FLIP og køre 'Nulstil præferencer' fra 'Start -menu / FLIP \' og derefter genstarte FLIP og udføre konfigurationstrinnene, før du prøver igen, dette fungerer normalt for mig.
  5. Hvis du vil gendanne din Arduino til sin oprindelige tilstand, skal du bare følge ovenstående arduino.cc -guide til brevet uden at bruge denne hex -fil.

Trin 7: Nyd ……

God fornøjelse……
God fornøjelse……

Nyd nu dit nyligt konverterede PS/2 til USB -tastatur …. P. S. Denne instruks var fuldt ud skrevet fra et eksternt PS/2 -tastatur, der var forbundet til min bærbare computer via Arduino:)

Anbefalede: