Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Kabling og oppsett
- Trinn 2: Testing av tastatur
- Trinn 3: Forhåndsvisning av PS/2 til USB -konvertering
- Trinn 4: Teknisk forklaring
- Trinn 5: Last opp den endelige skissen
- Trinn 6: Oppdatering av fastvaren
- Trinn 7: Nyt ……
Video: Arduino PS/2 til USB -adapter: 7 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Har du noen gang ønsket å bruke det gamle PS/2 -tastaturet med den bærbare eller nye stasjonære PC -en din, og fant ut at de ikke har PS/2 -porter lenger? Og så heller enn å kjøpe en billig PS/2 til USB -adapter som en vanlig person ville gjort, ønsket å bruke Arduino som en PS/2 til USB -adapter. Da har du kommet til rett sted:)
Rettferdig advarsel før vi går inn på det. Når du bruker UNO/Mega som en USB-HID-enhet (ikke begrenset til tastatur, det kan til og med være en mus, joystick, etc.) vil du midlertidig miste funksjonene som en Arduino. Med det mener jeg at du ikke kan bruke seriekommunikasjonen, og du kan ikke omprogrammere den via USB. Dette er fordi vi vil overskrive fastvaren på USB-grensesnittbrikken (lille fyr i nærheten av USB-porten Atmega8U2 og 16U2, avhengig av revisjonen). Men ikke bekymre deg, du kan faktisk ikke tegne din UNO/Mega ved å gjøre dette, den er alltid reversibel.
Også hvis du har en Arduino som allerede har en USB-HID-funksjon (Arduino Pro Micro eller Leonardo, etc gjør et Google-søk) kan du glemme at denne instruerbare noensinne har eksistert, gå direkte hit for å redde deg selv fra en verden av problemer, bare tuller!
Rekvisita
-
Maskinvare
- Arduino UNO eller Mega
- PS/2 -tastatur
- Eventuelt kan en ekstra Arduino eller en hvilken som helst USB -programmerer (USBasp, osv.) Komme godt med.
-
Programvare
- Atmel FLIP
- PS2KeyAvansert bibliotek for Arduino IDE
Trinn 1: Kabling og oppsett
Avhengig av situasjonen kan du enten finne et utbruddstavle eller redde en gammel port fra hovedkortet (mitt andre forsøk), eller hvis du føler deg spesielt humørsyk, kan du til og med kutte den lilla kontakten og avsløre de 4 ledningene (mitt første forsøk) og koble dem til UNO.
Tastatur_Arduino
+5V (VCC) _+5V
GRUNN_GND
CLOCK_PIN 2 **
DATA _ PIN3*
*Du kan endre DATA -pinnen til hva du vil, men husk å oppdatere skissen.
** CLOCK må kobles til en avbruddsnål på Arduino som bare kan være PIN 2 eller 3 (husk å oppdatere skissen) på en UNO. For mer informasjon og forskjellige tavlekonfigurasjoner kan du sjekke kommentarseksjonen i PS2KeyAdvanced bibliotekeksempler.
Trinn 2: Testing av tastatur
Før du går alle hendene på dekk, må du først kontrollere at alt fungerer på tastatur og bibliotek.
Her har jeg vedlagt en modifisert versjon av SimpleTest.ino fra PS2KeyAdvanced bibliotekseksempler med oppdaterte klokke- og datapinner og også en "make" og "break" representasjon. Her er en forklaring på utgangen.
- Dette "make" og "break" scancode-systemet og "Code" som er den isolerte (c & 0xFF) scancode for enten tastetrykk eller tastfrigjøring spiller en viktig rolle i PS/2 til USB-konvertering, og jeg anbefaler deg å studere de to andre eksemplene som følger med biblioteket for å få en bedre forståelse hvis du planlegger å forbedre eller endre (omorganisere nøkler til forskjellige oppsett) den siste skissen. Du kan også få en komplett liste over PS/2 -skannkoder fra biblioteket ved å åpne enten 'PS2KeyAdvanced.h' eller 'PS2KeyCode.h' filer fra '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
- "Status Bits" refererer til modifikatorstaster (Ctrl, Alt, Windows, Shift/Caps), og du vil se at for hver ekstra modifikatortast endres denne verdien mens hoved "Code" for normal (ikke-modifikator) nøkkel er uendret. Men i den siste skissen har jeg sett bort fra denne metoden og implementert disse modifiseringstastene som enkle tastetrykk (Du vil se at disse modifiseringstastene også har "make" og "break" scancode uavhengig av normale taster, uansett om flere taster trykkes eller ikke.) fordi det gjør ting enklere med USB-HID-protokoll.
Trinn 3: Forhåndsvisning av PS/2 til USB -konvertering
Før du oppdaterer Atmega8U2 eller 16U2 (UNO Rev3) for å identifisere Arduino som et USB-tastatur, bør vi sørge for at alle konverteringsfunksjonene fungerer som de skal og at den siste siste skissen blir lastet opp, ellers vil det være en stor smerte å fortsette å skrive over fastvare igjen og igjen mellom de originale og USB-tastaturet hex-filer, slik at du kan laste opp riktig skisse. Dette blir spesielt sant hvis du ikke har noen ekstern programmerer som en USBasp eller en annen Arduino å bruke som en ISP. Så her vil vi laste opp en "DEBUG" -versjon av den siste skissen med en lesbar utgang (gjennom seriell skjerm) for å teste ut ting.
Utgangen du ser, blir formatert slik når hver nøkkel slippes, 00 00 00 00 00 00 00 00
Her er en grunnleggende forklaring på den forventede produksjonen,
For hvert nytt tastetrykk med flere modifikatorer bør du få en ny linje med forskjellige verdier for 'xx'. Til slutt, når du slipper alle modifiseringstastene, skal 'xx' bli 00
xx 00 00 00 00 00 00 00 00
For hvert nytt flere normale tastetrykk (for et eksempel trykker vi på både hypotetisk tast a, tast b og tast c med verdiene 'xx', 'åå' og 'zz' i den rekkefølgen) bør du få kontinuerlig (ikke obligatorisk) nye linjer som dette,
00 00 xx åå zz 00 00 00
når du bare slipper tast b, skal utgangen endres til,
00 00 xx 00 zz 00 00 00
og hvis du trykker på ny tast d med verdien 'nn' uten å slippe tast a eller tast b, bør utgangen endres til,
00 00 xx nn zz 00 00 00
og til slutt gå tilbake til dette når hver nøkkel slippes,
00 00 00 00 00 00 00 00
og til slutt, hvis du trykker på enten Caps Lock, Num Lock eller Scroll Lock, bør du få noe slikt med flere linjer samtidig,
00 00 xx 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
Hvis alt skjer her, er du gyllen til å fortsette!
Trinn 4: Teknisk forklaring
Hvis du vil kan du hoppe over dette trinnet. Dette er bare en forklaring på de tidligere utgangene. Utdata 8 bytes-matrisen du så, er formatert i henhold til fig.1 ovenfor. Du kan lære mye mer om dette og også hvordan statusbyte for modifikatorstaster skrives fra denne wikien om USB-HID. I utgangspunktet er det koden min gjør hver gang en ny tast trykkes (PS/2-protokollen omtaler dette som 'make') den blar gjennom de siste 6 byte i matrisen som brukes til normale tastetrykk, og fyll ut den første tom byte den finner med den relevante 'HID scancode' (vist som i figur 2. Du kan også finne en fullstendig liste fra vedlagte PDF) for den mottatte 'PS/2 scancode'. Og til slutt når den relevante nøkkelen slippes (PS/2 -protokollen refererer til dette som "pause"), vil koden gå gjennom gjeldende byte -array og bare slette den relevante byten.
Hvis du fulgte til her og også hvis du leste wiki-siden, vil du se at det er et lite problem med denne metoden, normalt når nøkkelen slippes, blir de resterende byte ordnet i HID-protokollen for å bli kvitt tomme byte. mellom gjenværende ikke-tomme byte. Men av en eller annen grunn, uansett hvor mange måter jeg prøvde, kunne jeg ikke få det til å fungere etter hensikten uten at jeg ved et uhell slettet uønskede byte for trykte taster. Legg igjen en kommentar hvis du kan forbedre dette for å få det til å fungere. Selv om dette på slutten av dagen ikke påvirker funksjonaliteten til tastaturet så lenge Arduino fortsatt registrerer hvert tastetrykk uavhengig av hvilken presset rekkefølge (som ikke påvirker noe i praktisk bruk).
Trinn 5: Last opp den endelige skissen
Så før du endelig oppdaterer fastvaren til Atmega8U2 eller 16U2 (UNO Rev3) for å identifisere Arduino som et USB -tastatur, må vi laste opp Final Sketch. Etter at du har lastet opp denne, hvis du går til den serielle skjermen, vil du se at den skriver ut søppel med hver ny tast som er trykket på, dette er et godt tegn på at alt fungerer etter hensikten, og vi kan gå videre til siste trinn. JIPPI!!!
Trinn 6: Oppdatering av fastvaren
Til slutt kan du oppdatere fastvaren til Arduino for å registrere den som USB -tastatur. For dette kommer jeg ikke til å gå inn på mange detaljer, da det vil gjøre dette instruerbart for lenge.
- Følg denne veiledningen fra arduino.cc om 'Oppdatering av Atmega8U2 og 16U2 på en Uno eller Mega2560 ved bruk av DFU', men i stedet for å bruke 'Arduino-usbserial-uno.hex' bruk vedlagte 'Arduino-keyboard-0.3.hex'
- I FLIP husk å velge målenheten som Atmega8U2 eller 16U2 avhengig av deg Arduino, og velg USB fra valg av kommunikasjonsmedium og til slutt Last inn riktig hex -fil før du velger kjøre.
- Hvis du støter på en driverfeil, går du til enhetsbehandling i Windows og velger å søke etter den ukjente driveren i installasjonskatalogen for FLIP '\ Program Files (x86) Atmel \'
- Hvis du støter på feil mens du oppdaterte fastvaren fra FLIP flere ganger, lukker du FLIP og kjører 'Tilbakestill preferanser' fra 'Start -meny / FLIP \' og starter deretter FLIP på nytt og utfører konfigurasjonstrinnene før du prøver igjen, dette fungerer vanligvis for meg.
- Hvis du vil gjenopprette Arduino til sin opprinnelige tilstand, følg bare arduino.cc -guiden ovenfor til bokstaven uten å bruke denne hex -filen.
Trinn 7: Nyt ……
Nyt nå det nylig konverterte PS/2 til USB -tastaturet …. P. S. Denne instruksen ble fullstendig skrevet fra et eksternt PS/2 -tastatur koblet til min bærbare datamaskin gjennom Arduino:)
Anbefalt:
Legg til en digital skjerm til en gammel kommunikasjonsmottaker: 6 trinn (med bilder)
Legg til en digital skjerm i en gammel kommunikasjonsmottaker: En av manglene ved bruk av et eldre kommunikasjonsutstyr er det faktum at den analoge skiven ikke er veldig nøyaktig. Du gjetter alltid på frekvensen du mottar. I AM- eller FM -båndet er dette vanligvis ikke et problem fordi du vanligvis
Legg til Aux til Sonos ved hjelp av Raspberry Pi: 26 trinn (med bilder)
Legg til Aux til Sonos ved hjelp av Raspberry Pi: Jeg har alltid vært fascinert av Raspberry Pi, men har aldri hatt et reelt behov for en før nå. Vi har tre Sonos -komponenter i huset vårt: En Play 5 i stua, en Play 3 på soverommet og en Sonos CONNECT: AMP som driver utendørs høyttalere på vår
Legg til en USB -port til en lampe: 5 trinn (med bilder)
Legg til en USB-port til en lampe: Da jeg kom over denne vintage Electrix gåsehalsbordlampen, skjønte jeg at det var en gåsehals skrivebordslampe jeg ikke kunne leve uten, så jeg kjøpte den. Da tenkte jeg at det ville vært mye kulere hvis det hadde en USB -port i bunnen av det. Det viser seg at dette er en ganske
Legg til lys og skummel musikk til din Jack-O-Lantern-Ingen lodding eller programmering (med mindre du vil): 9 trinn (med bilder)
Legg til lys og skummel musikk til din Jack-O-Lantern-Ingen lodding eller programmering (med mindre du vil): Ha den skumleste Jack-O-Lantern på gaten din ved å legge til glødende lys og skummel musikk! Dette er også en fin måte å prøve Arduino og programmerbar elektronikk på fordi hele prosjektet kan fullføres uten å skrive kode eller lodding
Legg til en Arduino-basert optisk turteller til en CNC-ruter: 34 trinn (med bilder)
Legg til en Arduino-basert optisk turteller til en CNC-ruter: Bygg en optisk RPM-indikator for CNC-ruteren din med en Arduino Nano, en IR LED/IR fotodiodesensor og en OLED-skjerm for mindre enn $ 30. Jeg ble inspirert av eletro18's Measure RPM - Optical Tachometer Instructable og ønsket å legge til et turteller