INHOUDSOPGAWE:

Arduino PS/2 na USB -adapter: 7 stappe (met foto's)
Arduino PS/2 na USB -adapter: 7 stappe (met foto's)

Video: Arduino PS/2 na USB -adapter: 7 stappe (met foto's)

Video: Arduino PS/2 na USB -adapter: 7 stappe (met foto's)
Video: 😳😂 Alex probeert Athena te zoenen in vlog Gio #gio #alex #athena #vlog 2024, Julie
Anonim
Arduino PS/2 na USB -adapter
Arduino PS/2 na USB -adapter
Arduino PS/2 na USB -adapter
Arduino PS/2 na USB -adapter

Wou u ooit u ou PS/2 -sleutelbord met u skootrekenaar of 'n nuwe tafelrekenaar gebruik, en het u uitgevind dat dit nie meer 'n PS/2 -poort het nie? En dan, eerder as om 'n goedkoop PS/2 na USB -adapter te koop, soos 'n normale persoon sou doen, wou u u Arduino as 'n PS/2 na USB -adapter gebruik. Dan het u op die regte plek gekom:)

Eerlike waarskuwing voordat ons daarby ingaan. As u u UNO/Mega as 'n USB-HID-toestel gebruik (nie beperk tot die sleutelbord nie; dit kan selfs 'n muis, 'n joystick, ens.) Wees, verloor u sy funksies as 'n Arduino tydelik. Daarmee bedoel ek dat u nie die seriële kommunikasie kan gebruik nie, en u kan dit nie via die USB herprogrammeer nie. Dit is omdat ons die firmware op die USB-koppelvlak-chip gaan oorskryf (outjie naby die USB-poort Atmega8U2 en 16U2, afhangende van die hersiening). Maar moenie bekommerd wees nie, u kan u UNO/Mega nie eintlik baksteen nie; dit is altyd omkeerbaar.

Ook as u 'n Arduino het wat reeds 'n USB-HID-funksie het (Arduino Pro Micro of Leonardo, ens. 'N Google-soektog), kan u vergeet dat hierdie instruksionele ooit bestaan het, en gaan direk hierheen om u te red uit 'n wêreld van moeilikheid, net maak 'n grap!

Voorrade

  • Hardeware

    • Arduino UNO of Mega
    • PS/2 -sleutelbord
    • Optioneel kan 'n ekstra Arduino of enige soort USB -programmeerder (USBasp, ens.) Handig wees.
  • Sagteware

    • Atmel FLIP
    • PS2Key Gevorderde biblioteek vir Arduino IDE

Stap 1: Bedrading en opstel

Bedrading en opstel
Bedrading en opstel
Bedrading en opstel
Bedrading en opstel
Bedrading en opstel
Bedrading en opstel
Bedrading en opstel
Bedrading en opstel

Afhangende van die situasie, kan u 'n uitbreekbord vind of 'n ou poort van 'n moederbord red (my tweede probeerslag), of as u besonder humeurig voel, kan u selfs die pers aansluiting heeltemal sny en die 4 drade (my eerste probeerslag) blootstel en koppel hulle aan die UNO.

Sleutelbord_Arduino

+5V (VCC) _+5V

GROND_GND

KLOK_ PIN 2 **

DATA _ PIN3*

*U kan die DATA -pen verander na wat u wil, maar onthou om die skets by te werk.

** KLOK moet gekoppel word aan 'n onderbrekingspen op Arduino, wat slegs PIN 2 of 3 kan wees (onthou om die skets by te werk) op 'n UNO. Vir meer inligting en verskillende bordopsies, kan u die kommentaarafdeling van PS2KeyAdvanced -biblioteekvoorbeelde nagaan.

Stap 2: toets toetsbord

Voordat u alles in die hande kry, moet u eers seker maak dat alles op die sleutelbord en biblioteek werk.

Hier het ek 'n aangepaste weergawe van die SimpleTest.ino van PS2KeyAdvanced -biblioteekvoorbeelde aangeheg met bygewerkte klok- en datapennetjies en ook 'n 'maak' en 'breek' voorstelling. Hier is 'n verduideliking vir die uitset.

  • Hierdie "maak" en "breek" scancode stelsel en "Code", wat die geïsoleerde (c & 0xFF) scancode is van óf die druk op die toets of die sleutel los, speel 'n belangrike rol in PS/2 na USB omskakeling en ek beveel aan dat u studeer die ander twee voorbeelde van die biblioteek om 'n beter begrip te kry as u van plan is om die finale skets te verbeter of te verander (sleutels na verskillende uitlegte toe). U kan ook 'n volledige lys van PS/2 -scancodes uit die biblioteek kry deur 'PS2KeyAdvanced.h' of 'PS2KeyCode.h' lêers uit '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \' oop te maak
  • 'Statusbyte' verwys na wysigingsleutels (Ctrl, Alt, Windows, Shift/Caps), en u sal sien dat met elke bykomende wysigingsleutel hierdie waarde verander terwyl die hoof 'kode' van die normale (nie-wysiger) sleutel onveranderd is. Maar in die laaste skets het ek hierdie metode verontagsaam en hierdie wysigingsleutels geïmplementeer as eenvoudige druk op die toets (u sal sien dat hierdie wysigingsleutels ook 'make' en 'break' scancode het, onafhanklik van normale sleutels, al dan nie of daar op verskeie sleutels gedruk word.) omdat dit dinge makliker maak met USB-HID-protokol.

Stap 3: Voorskou PS/2 na USB -omskakeling

Voordat ons die Atmega8U2 of 16U2 (UNO Rev3) opdateer om ons Arduino as 'n USB-sleutelbord te identifiseer, moet ons seker maak dat al die omskakelings goed werk en dat die finale finale skets opgelaai word, anders sal dit 'n groot pyn wees om die skryfwerk oor te skryf herhaaldelik firmware tussen die oorspronklike en die USB-sleutelbord hex-lêers, sodat u die korrekte skets kan oplaai. Dit geld veral as u nie 'n eksterne programmeerder soos 'n USBasp of 'n ander Arduino as 'n ISP het nie. Hier laai ons dus 'n 'DEBUG' -weergawe van die finale skets op met 'n menslike leesbare uitset (deur die seriële monitor) om dinge uit te toets.

Die uitset wat u sien, word so geformateer wanneer elke sleutel vrygestel word, 00 00 00 00 00 00 00 00

Hier is 'n basiese verduideliking vir die verwagte uitset,

Vir elke nuwe veelvuldige wysiger-toetspers moet u 'n nuwe reël kry met verskillende waardes vir 'xx'. Uiteindelik, as u alle wysigingsleutels 'xx' loslaat, moet dit 00 word

xx 00 00 00 00 00 00 00 00

Vir elke nuwe veelvoudige normale druk op die toets (byvoorbeeld, ons druk beide hipotetiese sleutel a, sleutel b en sleutel c met die waardes 'xx', 'yy' en 'zz' in die volgorde). nuuslyne soos hierdie,

00 00 xx yy zz 00 00 00

as u slegs sleutel b loslaat, moet die uitset verander na,

00 00 xx 00 zz 00 00 00

en as u op nuwe sleutel d met waarde 'nn' druk sonder om sleutel a of sleutel b los te laat, moet u uitset verander na,

00 00 xx nn zz 00 00 00

en kom uiteindelik hierop terug as elke sleutel losgelaat word,

00 00 00 00 00 00 00 00

en laastens, as u op Caps Lock, Num Lock of Scroll Lock druk, moet u so iets met verskeie reëls tegelyk kry,

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

As alles hier gebeur, is u gou om voort te gaan!

Stap 4: Tegniese verduideliking

Tegniese verduideliking
Tegniese verduideliking
Tegniese verduideliking
Tegniese verduideliking

As u wil, kan u hierdie stap oorslaan. Dit is slegs 'n verduideliking vir die vorige uitsette. Die uitset 8 grepe skikking wat u gesien het, is geformateer volgens bogenoemde fig.1 U kan meer hieroor leer en ook hoe die statusbyte van die wysigingsleutels uit hierdie wiki oor USB-HID geskryf word. Wat my kode eintlik doen, is elke keer as 'n nuwe sleutel ingedruk word (PS/2-protokol verwys na dit as 'maak'), dit loop deur die laaste 6 grepe van die skikking wat gebruik word vir normale druk op die sleutel, en vul die eerste in leë byte wat dit vind met die relevante 'HID scancode' (soos getoon in fig. 2 U kan ook 'n volledige lys uit die aangehegte PDF vind) vir die ontvangde 'PS/2 scancode'. En uiteindelik, wanneer die relevante sleutel vrygestel word (PS/2 -protokol verwys hierna as 'breek'), sal die kode deur die huidige byte -skikking loop en slegs die relevante byte uitvee.

As u tot hier gevolg het en ook as u die wiki-bladsy lees, sal u sien dat daar 'n klein probleem is met hierdie metode, gewoonlik wanneer die sleutel losgelaat word, word die oorblywende grepe in HID-protokol herrangskik om van leë grepe ontslae te raak. tussen oorblywende nie-leë grepe. Maar om een of ander rede, ongeag hoeveel maniere ek probeer het, kon ek dit nie na wense laat werk sonder om per ongeluk ook ongewenste grepe vir ingedrukte sleutels uit die weg te ruim nie. Lewer 'n opmerking as u dit kan verbeter om dit te laat werk. Alhoewel hierdie probleem aan die einde van die dag nie die funksionaliteit van die sleutelbord beïnvloed nie, solank die Arduino steeds elke toets wat ingedruk word registreer, ongeag die volgorde wat hulle ingedruk het (wat niks in die praktiese gebruik beïnvloed nie).

Stap 5: Laai die finale skets op

Dus, voordat u uiteindelik die firmware van Atmega8U2 of 16U2 (UNO Rev3) opdateer om ons Arduino as 'n USB -sleutelbord te identifiseer, moet ons die Final Sketch oplaai. Nadat u dit opgelaai het, as u na die seriële monitor gaan, sal u sien dat dit vullis afdruk met elke nuwe sleutel wat gedruk word, dit is 'n goeie teken dat alles werk soos bedoel, en ons kan na die laaste stap gaan. YAY !!!

Stap 6: Die opdatering van die firmware

Uiteindelik kan u die firmware van u Arduino opdateer om dit as 'n USB -sleutelbord te registreer. Hiervoor gaan ek nie in op baie besonderhede nie, aangesien dit hierdie instruksies te lank sal maak.

  1. Volg hierdie gids van arduino.cc oor 'Werk van die Atmega8U2 en 16U2 op 'n Uno of Mega2560 met behulp van DFU', maar eerder as om 'Arduino-usbserial-uno.hex' te gebruik, gebruik die aangehegte 'Arduino-keyboard-0.3.hex'
  2. Onthou in FLIP om die teikenapparaat as Atmega8U2 of 16U2 te kies, afhangende van u Arduino, en kies dan uit die kommunikasiemedium USB en laai laastens die korrekte hex -lêer voordat u 'run' kies.
  3. As u 'n bestuurderfout teëgekom het, gaan na die Windows Device Manager en soek na die onbekende bestuurder in die installeringsgids van FLIP '\ Program Files (x86) Atmel \'
  4. As u foute ondervind het tydens die opdatering van die firmware van FLIP verskeie kere, sluit FLIP en voer 'Herstel voorkeure' uit 'Start menu / FLIP \' en herbegin dan FLIP en voer die konfigurasiestappe uit voordat u weer probeer, dit werk gewoonlik vir my.
  5. As u Arduino in sy oorspronklike toestand wil herstel, volg die bogenoemde arduino.cc -gids tot die letter sonder om hierdie hex -lêer te gebruik.

Stap 7: Geniet ……

Geniet ……
Geniet ……

Geniet nou u nuut omgeskakelde PS/2 na USB -sleutelbord …. P. S. Hierdie instruksie is volledig geskryf vanaf 'n eksterne PS/2 -sleutelbord wat via die Arduino op my skootrekenaar gekoppel was:)

Aanbeveel: