Talaan ng mga Nilalaman:

Arduino PS / 2 hanggang USB Adapter: 7 Hakbang (na may Mga Larawan)
Arduino PS / 2 hanggang USB Adapter: 7 Hakbang (na may Mga Larawan)

Video: Arduino PS / 2 hanggang USB Adapter: 7 Hakbang (na may Mga Larawan)

Video: Arduino PS / 2 hanggang USB Adapter: 7 Hakbang (na may Mga Larawan)
Video: Начало работы с QLC+ Управление цветомузыкой с компьютера. Как управлять светом. 2024, Nobyembre
Anonim
Arduino PS / 2 sa USB Adapter
Arduino PS / 2 sa USB Adapter
Arduino PS / 2 sa USB Adapter
Arduino PS / 2 sa USB Adapter

Nais mo bang gamitin ang iyong lumang PS / 2 Keyboard sa iyong laptop o bagong desktop PC at nalaman na wala na silang mga PS / 2 port? At pagkatapos sa halip na bumili ng isang murang PS / 2 sa USB Adapter tulad ng gagawin ng isang normal na tao, nais na gamitin ang iyong Arduino bilang isang PS / 2 sa USB Adapter. Pagkatapos ay nakarating ka sa tamang lugar:)

Makatarungang babala bago tayo makapasok dito. Kapag ginagamit mo ang iyong UNO / Mega bilang isang USB-HID aparato (Hindi limitado sa keyboard, maaari itong maging isang mouse, joystick, atbp.) Pansamantalang mawawala ang mga pag-andar nito bilang isang Arduino. Ibig kong sabihin ay hindi mo magagamit ang mga Serial na komunikasyon at hindi mo ito maaaring mai-reprogram muli sa pamamagitan ng USB. Ito ay dahil sa sobrang pagsusulat namin ng firmware sa chip ng interface ng USB nito (maliit na tao malapit sa USB port na Atmega8U2 at 16U2 depende sa pagbabago). Ngunit huwag mag-alala na hindi mo talaga ma-brick ang iyong UNO / Mega sa pamamagitan ng paggawa nito palagi itong nababaligtad.

Sa pamamagitan din ng anumang pagkakataon kung mayroon kang isang Arduino na mayroon nang isang kakayahan sa USB-HID (Arduino Pro Micro o Leonardo, atbp gawin ang isang paghahanap sa google) maaari mong kalimutan ang itinuturo na kailanman na umiiral na pumunta diretso dito upang i-save ang iyong sarili mula sa isang mundo ng problema, lamang biro!

Mga gamit

  • Hardware

    • Arduino UNO o Mega
    • PS / 2 Keyboard
    • Opsyonal na isang labis na Arduino o Anumang uri ng USB programmer (USBasp, atbp) ay maaaring madaling magamit.
  • Software

    • Atmel FLIP
    • PS2KeyAdvanced library para sa Arduino IDE

Hakbang 1: Mga Kable at Pag-set up

Mga Kable at Pag-set up
Mga Kable at Pag-set up
Mga Kable at Pag-set up
Mga Kable at Pag-set up
Mga Kable at Pag-set up
Mga Kable at Pag-set up
Mga Kable at Pag-set up
Mga Kable at Pag-set up

Nakasalalay sa sitwasyon maaari kang makahanap ng isang breakout board o mai-save ang isang lumang port mula sa isang motherboard (aking ika-2 na pagsubok) o kung sa palagay mo ay partikular na moody maaari mo ring i-cut ang lila jack at ilantad ang 4 na mga wire (aking unang pagsubok) at ikonekta ang mga ito sa UNO.

Keyboard_Arduino

+ 5V (VCC) _ + 5V

GROUND_GND

CLOCK_PIN 2 **

DATA _ PIN3 *

* Maaari mong baguhin ang pin ng DATA sa kung ano ang gusto mo ngunit tandaan na i-update ang sketch.

** Ang CLOCK ay dapat na konektado sa isang makagambala na pin sa Arduino na maaari lamang maging PIN 2 o 3 (tandaan na i-update ang sketch) sa isang UNO. Para sa karagdagang impormasyon at iba't ibang mga board config maaari mong suriin ang seksyon ng komento ng mga halimbawa ng library ng PS2KeyAdvanced.

Hakbang 2: Keyboard ng Pagsubok

Bago ka pumunta sa lahat ng mga kamay sa deck siguraduhin muna na ang lahat ay gumagana sa keyboard at library.

Dito ko naidugtong ang isang nabagong bersyon ng SimpleTest.ino mula sa mga halimbawang aklatan sa PS2KeyAdvanced na may na-update na orasan at mga pin ng data at isang representasyon din ng "make" at "break". Narito ang ilang paliwanag para sa output.

  • Ang "make" at "break" na scancode system at "Code" na kung saan ay ang nakahiwalay (c & 0xFF) scancode ng alinman sa key-press o key-release ay gumaganap ng isang mahalagang bahagi sa PS / 2 sa USB conversion at inirerekumenda kong pag-aralan mo ang iba pang 2 mga halimbawa na kasama ng silid-aklatan upang makakuha ng isang mas mahusay na pag-unawa kung nagpaplano ka sa pagpapabuti o pagbabago (pag-remap ng mga key sa iba't ibang mga layout) ang huling sketch. Maaari ka ring makakuha ng isang kumpletong listahan ng PS / 2 scancode mula sa library sa pamamagitan ng pagbubukas ng alinman sa 'PS2KeyAdvanced.h' o 'PS2KeyCode.h' na mga file mula sa '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
  • Ang "Status Bits" ay tumutukoy sa mga key ng modifier (Ctrl, Alt, Windows, Shift / Caps) at makikita mo na sa bawat karagdagang key ng modifier, nagbabago ang halagang ito habang ang pangunahing "Code" ng normal (non-modifier) key ay hindi nagbabago. Ngunit sa huling sketch ay binalewala ko ang pamamaraang ito at ipinatupad ang mga key ng modifier na ito bilang mga simpleng key-press (Makikita mo na ang mga key ng modifier na ito ay mayroon ding "make" at "break" na scancode na independiyente mula sa normal na mga key kung maraming mga key ang pinindot.) dahil ginagawang mas madali ang mga bagay sa pamamagitan ng USB-HID protocol.

Hakbang 3: PS / 2 sa Preview ng Conversion ng USB

Bago i-update ang Atmega8U2 o 16U2 (UNO Rev3) upang makilala ang aming Arduino bilang isang USB keyboard dapat naming siguraduhin na ang lahat ng mga bagay sa conversion ay gumagana nang tama at ang panghuling pangwakas na sketch ay na-upload o kung hindi man ay magiging isang pangunahing sakit upang mapanatili ang sobrang pagsulat ng paulit-ulit na firmware sa pagitan ng Orihinal at USB-keyboard hex file upang ma-upload mo ang tamang sketch. Nagiging totoo ito lalo na kung wala kang anumang panlabas na programmer tulad ng isang USBasp o ibang Arduino na gagamitin bilang isang ISP. Kaya dito mag-a-upload kami ng isang 'DEBUG' na bersyon ng pangwakas na sketch na may nababasa na output ng tao (sa pamamagitan ng serial monitor) upang masubukan ang mga bagay.

Ang output na nakikita mo ay mai-format tulad nito kapag ang bawat key ay inilabas, 00 00 00 00 00 00 00 00

Narito ang isang pangunahing paliwanag para sa inaasahang output,

Para sa bawat bagong maramihang modifier key-press dapat kang makakuha ng isang bagong linya na may iba't ibang mga halaga para sa 'xx'. Panghuli kapag pinakawalan mo ang lahat ng mga modifier key na 'xx' ay dapat maging 00

xx 00 00 00 00 00 00 00

Para sa bawat bagong maraming normal na mga key-press (para sa isang halimbawa pipindutin namin ang parehong hypothetical key a, key b at key c na may mga halagang 'xx', 'yy' at 'zz' sa pagkakasunud-sunod na iyon) dapat kang magpatuloy (hindi sapilitan) mga bagong linya tulad nito,

00 00 xx yy zz 00 00 00

kapag ilabas mo lang ang susi b ang output ay dapat baguhin sa,

00 00 xx 00 zz 00 00 00

at kung pinindot mo ang bagong key d na may halagang 'nn' nang hindi naglalabas ng key a o key b dapat palitan ang iyong output sa,

00 00 xx nn zz 00 00 00

at sa wakas ay babalik ito kapag ang bawat susi ay inilabas,

00 00 00 00 00 00 00 00

at panghuli kung pinindot mo ang alinman sa Caps Lock, Num Lock o Scroll Lock dapat kang makakuha ng isang bagay tulad nito na may maraming mga linya nang sabay,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Kung ang lahat ng mga bagay na nangyari dito ikaw ay ginintuang magpatuloy!

Hakbang 4: Teknikal na Paliwanag

Teknikal na Paliwanag
Teknikal na Paliwanag
Teknikal na Paliwanag
Teknikal na Paliwanag

Kung nais mo maaari mong laktawan ang hakbang na ito. Ito ay isang paliwanag lamang para sa mga nakaraang output. Ang output 8 bytes array na iyong nakita ay naka-format ayon sa nasa itaas na fig.1 Maaari kang matuto nang higit pa tungkol dito at kung paano din nakasulat ang byte ng katayuan ng mga modifier mula sa wiki na ito tungkol sa USB-HID. Karaniwan kung ano ang ginagawa ng aking code ay sa bawat oras na ang isang bagong key ay pinindot (PS / 2 na protocol ay tumutukoy dito bilang 'make') na ikot nito sa huling 6 bytes ng array na ginagamit para sa normal na mga key-press, at punan ang una walang laman na byte na nahahanap nito sa may-katuturang 'HID scancode' (Ipinapakita tulad ng fig.2 Gayundin maaari kang makahanap ng isang kumpletong listahan mula sa kalakip na PDF) para sa natanggap na 'PS / 2 scancode'. At sa wakas kapag ang kaugnay na susi ay pinakawalan (PS / 2 na protocol ay tumutukoy dito bilang 'break') ang code ay ikot sa pamamagitan ng kasalukuyang byte array at i-clear lamang ang may-katuturang byte.

Kung sinundan mo hanggang dito at kung binabasa mo ang pahina ng wiki makikita mo na mayroong kaunting problema sa pamamaraang ito, normal kapag ang susi ay inilabas, sa HID protocol ang natitirang mga byte ay muling isinaayos upang mapupuksa ang walang laman na mga byte sa pagitan ng natitirang mga walang laman na byte. Ngunit para sa ilang kadahilanan hindi alintana kung gaano karaming mga paraan ang sinubukan ko hindi ko ito magawang gumana tulad ng inilaan nang hindi sinasadyang malinis ang mga hindi nais na byte para sa mga pinindot na key din. Kung maaari mong pagbutihin ito upang ito ay gumana mangyaring mag-iwan ng isang komento. Kahit na sa pagtatapos ng araw ang problemang ito ay hindi nakakaapekto sa pag-andar ng keyboard hangga't ang Arduino ay nagrerehistro pa rin ng bawat key-press hindi alintana ang kanilang pinindot na order (Na hindi nakakaapekto sa anumang bagay sa praktikal na paggamit).

Hakbang 5: Pag-upload ng Final Sketch

Kaya bago mo tuluyang mai-update ang firmware ng Atmega8U2 o 16U2 (UNO Rev3) upang makilala ang aming Arduino bilang isang USB keyboard dapat naming i-upload ang Final Sketch. Matapos mong i-upload ito, kung pupunta ka sa serial monitor makikita mo itong naglilimbag ng basura sa bawat bagong key na pinindot ito ay isang magandang tanda na ang lahat ay gumagana tulad ng inilaan at maaari kaming magpatuloy sa huling hakbang. YAY !!!

Hakbang 6: Ina-update ang Firmware

Sa wakas maaari mong i-update ang firmware ng iyong Arduino upang irehistro ito bilang USB keyboard. Para sa mga ito hindi ako mag-uunawa sa maraming mga detalye dahil gagawin nitong masyadong mahaba ang pagtuturo nito.

  1. Sundin ang patnubay na ito mula sa arduino.cc tungkol sa 'Pag-update ng Atmega8U2 at 16U2 sa isang Uno o Mega2560 gamit ang DFU' ngunit sa halip na gamitin ang 'Arduino-usbserial-uno.hex' gamitin ang naka-attched na 'Arduino-keyboard-0.3.hex'
  2. Sa FLIP tandaan na piliin ang target na aparato bilang Atmega8U2 o 16U2 depende sa iyo Arduino at, mula sa piliin ang medium ng komunikasyon pumili ng USB at sa wakas Mag-load ng tamang hex file bago piliin ang run.
  3. Kung nagkaron ka ng error sa driver, pumunta sa windows device manager at piliin upang maghanap para sa hindi kilalang driver sa loob ng direktoryo ng pag-install ng FLIP '\ Program Files (x86) Atmel \'
  4. Kung nakakuha ka ng mga error habang ina-update ang firmware mula sa FLIP nang maraming beses, isara ang FLIP at patakbuhin ang 'I-reset ang Mga Kagustuhan' mula sa 'Start menu / FLIP \' at pagkatapos ay i-restart ang FLIP at gawin ang mga hakbang sa pagsasaayos bago subukang muli ito ay karaniwang gumagana para sa akin.
  5. Kung nais mong ibalik sa iyo ang Arduino sa orihinal na estado sundin lamang ang gabay sa itaas ng arduino.cc sa sulat nang hindi ginagamit ang hex file na ito.

Hakbang 7: Masiyahan sa ……

Tangkilikin ……
Tangkilikin ……

Masisiyahan ka ngayon sa iyong bagong na-convert na PS / 2 sa USB keyboard …. P. S. Ang Instructable na ito ay ganap na nakasulat mula sa isang panlabas na PS / 2 keyboard na konektado sa aking laptop sa pamamagitan ng Arduino:)

Inirerekumendang: