Përmbajtje:

Përshtatës Arduino PS/2 në USB: 7 hapa (me fotografi)
Përshtatës Arduino PS/2 në USB: 7 hapa (me fotografi)

Video: Përshtatës Arduino PS/2 në USB: 7 hapa (me fotografi)

Video: Përshtatës Arduino PS/2 në USB: 7 hapa (me fotografi)
Video: Arduino UNO and Mega Windows 7, 8, 10 USB driver Solved 2024, Nëntor
Anonim
Përshtatës Arduino PS/2 në USB
Përshtatës Arduino PS/2 në USB
Përshtatës Arduino PS/2 në USB
Përshtatës Arduino PS/2 në USB

A keni dashur ndonjëherë të përdorni tastierën tuaj të vjetër PS/2 me laptopin ose kompjuterin tuaj të ri desktop dhe zbuluat se ata nuk kanë më porte PS/2? Dhe pastaj në vend që të blini një përshtatës të lirë PS/2 në USB siç do të bënte një person normal, donte të përdorte Arduino -n tuaj si një përshtatës PS/2 në USB. Atëherë keni ardhur në vendin e duhur:)

Paralajmërim i drejtë para se të hyjmë në të. Kur jeni duke përdorur UNO/Mega tuaj si një pajisje USB-HID (Nuk kufizohet vetëm në tastierë, madje mund të jetë një mi, levë, etj.) Ju do të humbni përkohësisht funksionet e tij si një Arduino. Me këtë dua të them që nuk mund të përdorni komunikimet serike dhe nuk mund ta riprogramoni atë përmes USB. Kjo ndodh sepse ne do të mbishkruajmë firmuerin në çipin e tij të ndërfaqes USB (djalë i vogël pranë portës USB Atmega8U2 dhe 16U2 në varësi të rishikimit). Por mos u shqetësoni se nuk mund të blini UNO/Mega tuaj duke e bërë këtë është gjithmonë e kthyeshme.

Gjithashtu rastësisht nëse keni një Arduino që tashmë ka një aftësi USB-HID (Arduino Pro Micro ose Leonardo, etj bëni një kërkim në google) mund të harroni se ky udhëzues i ekzistuar ndonjëherë shkoni direkt këtu për të shpëtuar veten nga një botë telash, thjesht shaka!

Furnizimet

  • Hardware

    • Arduino UNO ose Mega
    • PS/2 Tastiera
    • Opsionale një Arduino shtesë ose Çdo lloj programuesi USB (USBasp, etj) mund të jetë i dobishëm.
  • Softuer

    • Atmel FLIP
    • PS2KeyA biblioteka e avancuar për Arduino IDE

Hapi 1: Instalimi dhe vendosja

Instalimet dhe instalimi
Instalimet dhe instalimi
Instalimet dhe instalimi
Instalimet dhe instalimi
Instalimet dhe instalimi
Instalimet dhe instalimi
Instalimet dhe instalimi
Instalimet dhe instalimi

Në varësi të situatës, ju ose mund të gjeni një tabelë shpërthimi ose të shpëtoni një port të vjetër nga një motherboard (prova ime e dytë) ose nëse ndiheni veçanërisht me humor, madje mund të prishni prizën vjollce krejtësisht dhe të ekspozoni 4 telat (prova ime e parë) dhe lidhini ato me UNO.

Tastiera_Arduino

+5V (VCC) _+5V

GROUND_GND

ORA _ PINI 2 **

T D DHNAT _ PIN3*

*Ju mund të ndryshoni pinin e të dhënave në atë që dëshironi, por mos harroni të azhurnoni skicën.

** ORA duhet të lidhet me një pin ndërprerës në Arduino i cili mund të jetë vetëm PIN 2 ose 3 (mos harroni të përditësoni skicën) në një UNO. Për më shumë informacion dhe konfigurime të ndryshme të bordit, mund të kontrolloni pjesën e komenteve të shembujve të bibliotekës PS2KeyAdvanced.

Hapi 2: Testimi i tastierës

Para se të shkoni të gjithë në kuvertë, së pari sigurohuni që gjithçka po funksionon në tastierë dhe bibliotekë.

Këtu kam bashkangjitur një version të modifikuar të SimpleTest.ino nga shembujt e bibliotekës PS2KeyAd Advanced me orët e përditësuara dhe kunjat e të dhënave dhe gjithashtu një përfaqësim "bëj" dhe "prish". Këtu është një shpjegim për daljen.

  • Ky sistem "bëj" dhe "prish" skankodin dhe "Kodi" i cili është skankodi i izoluar (c & 0xFF) i shtypjes së tastit ose lëshimit të çelësit luan një rol të rëndësishëm në shndërrimin e PS/2 në USB dhe unë ju rekomandoj të studioni 2 shembujt e tjerë që vijnë me bibliotekën për të kuptuar më mirë nëse planifikoni të përmirësoni ose ndryshoni (rimodeloni çelësat në paraqitje të ndryshme) skicën përfundimtare. Gjithashtu mund të merrni një listë të plotë të skankodeve PS/2 nga biblioteka duke hapur skedarët 'PS2KeyAdvanced.h' ose 'PS2KeyCode.h' nga '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
  • "Status Bits" i referohet çelësave modifikues (Ctrl, Alt, Windows, Shift/Caps) dhe do të shihni që me secilin çelës modifikues shtesë, kjo vlerë ndryshon ndërsa "Kodi" kryesor i çelësit normal (jo modifikues) është i pandryshuar. Por në skicën përfundimtare unë e kam shpërfillur këtë metodë dhe i kam zbatuar këto çelësa modifikues si shtypje të thjeshta të çelësave (Do të shihni që këto çelësa modifikues gjithashtu kanë skanim "bëj" dhe "prish" të pavarur nga çelësat normalë nëse shtypen ose jo çelësa të shumtë.) sepse i bën gjërat më të lehta me protokollin USB-HID.

Hapi 3: Pamja e Konvertimit PS/2 në USB

Para se të përditësoni Atmega8U2 ose 16U2 (UNO Rev3) për të identifikuar Arduino-n tonë si një tastierë USB, duhet të sigurohemi që të gjitha sendet e konvertimit po funksionojnë si duhet dhe skica përfundimtare përfundimtare të ngarkohet ose përndryshe do të jetë një dhimbje e madhe të vazhdoni të shkruani tej mase firmware përsëri dhe përsëri midis skedarëve heks origjinal dhe USB-tastierë vetëm në mënyrë që të ngarkoni skicën e duhur. Kjo bëhet veçanërisht e vërtetë nëse nuk keni ndonjë programues të jashtëm si një USBasp ose një Arduino tjetër për ta përdorur si ISP. Pra, këtu do të ngarkojmë një version 'DEBUG' të skicës përfundimtare me një dalje të lexueshme nga njerëzit (përmes monitorit serik) për të provuar gjërat.

Dalja që shihni do të formatohet kështu kur të lëshohet çdo çelës, 00 00 00 00 00 00 00 00

Këtu është një shpjegim bazë për prodhimin e pritur,

Për çdo shtypës të ri të modifikuesit të shumëfishtë duhet të merrni një linjë të re me vlera të ndryshme për 'xx'. Së fundi kur lëshoni të gjithë çelësat modifikues 'xx' duhet të bëhet 00

xx 00 00 00 00 00 00 00 00

Për çdo shtypje të shumëfishtë të shumëfishtë normale (për shembull ne do të shtypim çelësin hipotetik a, çelësin b dhe çelësin me vlerat 'xx', 'yy' dhe 'zz' sipas asaj radhe) ju duhet të jeni të vazhdueshëm (jo të detyrueshëm) linja të reja si kjo,

00 00 xx yy zz 00 00 00

kur lëshoni vetëm çelësin b dalja duhet të ndryshojë në,

00 00 xx 00 zz 00 00 00

dhe nëse shtypni çelësin e ri d me vlerën 'nn' pa lëshuar çelësin a ose çelësin dalja juaj duhet të ndryshojë në,

00 00 xx nn zz 00 00 00

dhe më në fund kthehuni te kjo kur të lëshohet çdo çelës,

00 00 00 00 00 00 00 00

dhe së fundmi nëse shtypni Caps Lock, Num Lock ose Scroll Lock duhet të merrni diçka të tillë me shumë rreshta në të njëjtën kohë,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Nëse gjithçka ndodh këtu ju jeni të artë për të vazhduar!

Hapi 4: Shpjegimi teknik

Shpjegim teknik
Shpjegim teknik
Shpjegim teknik
Shpjegim teknik

Nëse ju pëlqen mund ta kaloni këtë hap. Ky është vetëm një shpjegim për rezultatet e mëparshme. Grupi i daljes prej 8 bajtësh që keni parë është i formatuar sipas fig. 1 të mësipërm. Ju mund të mësoni shumë më tepër për këtë dhe gjithashtu se si bajti i statusit të çelësave modifikues është shkruar nga ky wiki për USB-HID. Në thelb ajo që bën kodi im është sa herë që shtypet një çelës i ri (protokolli PS/2 i referohet kësaj si 'bëj') kalon nëpër 6 bajtët e fundit të grupit që përdoren për shtypjet normale të çelësave dhe plotësoni të parën bajt i zbrazët gjen me 'Fshirjen e fshehur' HID (Shfaq si në fig.2 Gjithashtu mund të gjeni një listë të plotë nga PDF bashkangjitur) për 'skanikun PS/2' të marrë. Dhe së fundi kur të lëshohet çelësi përkatës (protokolli PS/2 i referohet kësaj si 'break') kodi do të qarkullojë nëpër grupin aktual të bajtit dhe do të pastrojë vetëm bajtin përkatës.

Nëse keni ndjekur deri këtu dhe gjithashtu nëse lexoni faqen wiki do të shihni se ka një problem të vogël në këtë metodë, normalisht kur çelësi lëshohet, në protokollin HID bajtët e mbetur riorganizohen për të hequr qafe bajtët e zbrazët midis bajtëve të mbetur jo bosh. Por për disa arsye, pavarësisht nga sa mënyra u përpoqa, nuk arrita ta bëj atë të funksionojë siç ishte menduar pa pastruar aksidentalisht bajtët e padëshiruar edhe për çelësat e shtypur. Nëse mund ta përmirësoni këtë që të funksionojë, ju lutemi lini një koment. Edhe pse në fund të ditës ky problem nuk ndikon në funksionalitetin e tastierës për aq kohë sa Arduino ende regjistron çdo shtypur të tastit pavarësisht nga rendi i tyre i shtypur (i cili nuk ndikon asgjë në përdorim praktik).

Hapi 5: Ngarkimi i Skicës Finale

Pra, para se të azhurnoni përfundimisht firmware -in e Atmega8U2 ose 16U2 (UNO Rev3) për të identifikuar Arduino -n tonë si një tastierë USB, duhet të ngarkojmë Skicën Finale. Pasi ta ngarkoni këtë, nëse shkoni te monitori serik do të shihni se printon mbeturina me çdo çelës të ri të shtypur, ky është një ogur i mirë që gjithçka po funksionon siç është menduar dhe ne mund të vazhdojmë në hapin përfundimtar. PO !!!

Hapi 6: Përditësimi i firmuerit

Së fundi, ju mund të azhurnoni firmware -in tuaj Arduino për ta regjistruar atë si tastierë USB. Për këtë nuk do të hyj në shumë detaje pasi do ta bëjë këtë të mësueshme shumë gjatë.

  1. Ndiqni këtë udhëzues nga arduino.cc në lidhje me 'Përditësimin e Atmega8U2 dhe 16U2 në një Uno ose Mega2560 duke përdorur DFU', por në vend që të përdorni 'Arduino-usbserial-uno.hex' përdorni lidhësin 'Arduino-keyboard-0.3.hex'
  2. Në FLIP mos harroni të zgjidhni pajisjen e synuar si Atmega8U2 ose 16U2 në varësi të ju Arduino dhe, nga përzgjedhja e mediumit të komunikimit zgjidhni USB dhe në fund Ngarko skedarin e duhur gjashtëkëndësh para se të zgjidhni drejtimin.
  3. Nëse hasni në një gabim drejtuesi, shkoni te menaxheri i pajisjes Windows dhe zgjidhni për të kërkuar drejtuesin e panjohur brenda drejtorisë së instalimit të FLIP '\ Program Files (x86) Atmel \'
  4. Nëse hasni në gabime gjatë azhurnimit të firmuerit nga FLIP shumë herë, mbyllni FLIP dhe ekzekutoni 'Reset Preferences' nga 'Start menu / FLIP \' dhe pastaj rinisni FLIP dhe bëni hapat e konfigurimit para se të provoni përsëri, kjo zakonisht funksionon për mua.
  5. Nëse doni të riktheni Arduino në gjendjen e tij origjinale, thjesht ndiqni udhëzimin e mësipërm të arduino.cc në letër pa përdorur këtë skedar gjashtëkëndësh.

Hapi 7: Shijoni ……

Shijoni ……
Shijoni ……

Tani shijoni tastierën tuaj PS/2 të konvertuar rishtas në USB…. P. S. Ky udhëzues u shkrua plotësisht nga një tastierë e jashtme PS/2 e lidhur me laptopin tim përmes Arduino:)

Recommended: