Innholdsfortegnelse:

Arduino PS/2 til USB -adapter: 7 trinn (med bilder)
Arduino PS/2 til USB -adapter: 7 trinn (med bilder)

Video: Arduino PS/2 til USB -adapter: 7 trinn (med bilder)

Video: Arduino PS/2 til USB -adapter: 7 trinn (med bilder)
Video: МОЩНЫЙ мультиметр UNI-T UT171B купить сегодня, или что лучше? 2024, Juli
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 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

Kabling og oppsett
Kabling og oppsett
Kabling og oppsett
Kabling og oppsett
Kabling og oppsett
Kabling og oppsett
Kabling og oppsett
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

Teknisk forklaring
Teknisk forklaring
Teknisk forklaring
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.

  1. 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'
  2. 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.
  3. 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 \'
  4. 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.
  5. 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……
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: