Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Kabelføring og opsætning
- Trin 2: Test af tastatur
- Trin 3: Forhåndsvisning af PS/2 til USB -konvertering
- Trin 4: Teknisk forklaring
- Trin 5: Upload af den endelige skitse
- Trin 6: Opdatering af firmwaren
- Trin 7: Nyd ……
Video: Arduino PS/2 til USB -adapter: 7 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
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
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
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.
- 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'
- 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.
- 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 \'
- 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.
- 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 ……
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:
Sådan laver du din egen WIFI -gateway til at forbinde din Arduino til IP -netværk?: 11 trin (med billeder)
Sådan laver du din egen WIFI -gateway til at forbinde din Arduino til IP -netværk?: Som så mange mennesker synes du, at Arduino er en meget god løsning til hjemmeautomatisering og robotik! Men når det kommer til kommunikation, kommer Arduinos bare med serielle links. Jeg arbejder på en robot, der skal være permanent forbundet med en server, der kører ar
Temperatursensor til Arduino Anvendt til COVID 19: 12 trin (med billeder)
Temperatursensor til Arduino Anvendt til COVID 19: Temperatursensoren til Arduino er et grundlæggende element, når vi vil måle temperaturen på en processor i menneskekroppen. Temperatursensoren med Arduino skal være i kontakt eller tæt på for at modtage og måle varmeniveauet. Sådan t
Ambilight -system til hver input, der er sluttet til dit tv. WS2812B Arduino UNO Raspberry Pi HDMI (opdateret 12.2019): 12 trin (med billeder)
Ambilight -system til hver input, der er sluttet til dit tv. WS2812B Arduino UNO Raspberry Pi HDMI (opdateret 12.2019): Jeg har altid ønsket at tilføje ambilight til mit tv. Det ser så fedt ud! Det gjorde jeg endelig, og jeg blev ikke skuffet! Jeg har set mange videoer og mange tutorials om oprettelse af et Ambilight -system til dit fjernsyn, men jeg har aldrig fundet en komplet tutorial til mit nøjagtige navn
Sådan laver du Bluetooth -skærme til uploadskitse til Arduino: 9 trin (med billeder)
Sådan laver du Bluetooth -skærme til uploadskitse til Arduino: Du kan uploade en skitse til Arduino fra Android eller pc via bluetooth, for at gøre det har du brug for en lille ekstra komponent som f.eks. op sammen og tilslut til Arduino pin
Instruktioner til fremstilling af en tilkobling med fire stænger til centermonteret fodstøtte: 9 trin (med billeder)
Instruktioner til fremstilling af en tilkoblingstilslutning med fire stænger til midtermonteret fodstøtte: Mellemdrevne kørestole (PWC) er blevet mere populære i de seneste år. Men på grund af placeringen af de forreste hjul er de traditionelle sidemonterede fodstøtter blevet erstattet af en enkelt midtermonteret fodstøtte. Desværre center-mou