Obsah:

Adaptér Arduino PS/2 na USB: 7 krokov (s obrázkami)
Adaptér Arduino PS/2 na USB: 7 krokov (s obrázkami)

Video: Adaptér Arduino PS/2 na USB: 7 krokov (s obrázkami)

Video: Adaptér Arduino PS/2 na USB: 7 krokov (s obrázkami)
Video: 40 полезных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #6 2024, Júl
Anonim
Adaptér Arduino PS/2 na USB
Adaptér Arduino PS/2 na USB
Adaptér Arduino PS/2 na USB
Adaptér Arduino PS/2 na USB

Chceli ste niekedy použiť starú klávesnicu PS/2 s prenosným počítačom alebo novým stolným počítačom a zistili ste, že už nemajú porty PS/2? A potom radšej než ísť kúpiť lacný adaptér PS/2 na USB, ako by to urobil normálny človek, chcel použiť váš Arduino ako adaptér PS/2 na USB. Potom ste na správnom mieste:)

Spravodlivé varovanie, než sa do toho pustíme. Keď používate svoj UNO/Mega ako zariadenie USB-HID (neobmedzuje sa len na klávesnicu, môže to byť dokonca myš, joystick atď.), Dočasne stratíte svoje funkcie ako Arduino. Tým chcem povedať, že nemôžete používať sériovú komunikáciu a nemôžete ju preprogramovať cez USB. Dôvodom je, že prepíšeme firmvér na jeho čip rozhrania USB (malý chlapík v blízkosti portu USB Atmega8U2 a 16U2 v závislosti od revízie). Ale nebojte sa, že v skutočnosti nemôžete svoj UNO/Mega murovať, je to vždy reverzibilné.

Tiež ak náhodou máte Arduino, ktoré už má schopnosť USB-HID (Arduino Pro Micro alebo Leonardo atď. Vykonajte vyhľadávanie Google), môžete zabudnúť, že tento návod existoval, choďte priamo sem, aby ste sa zachránili pred svetom problémov, stačí žartujem!

Zásoby

  • Hardvér

    • Arduino UNO alebo Mega
    • Klávesnica PS/2
    • Voliteľne môže prísť vhod ďalší programátor Arduino alebo akýkoľvek USB programátor (USBasp atď.).
  • Softvér

    • Atmel FLIP
    • Rozšírená knižnica PS2Key pre Arduino IDE

Krok 1: Zapojenie a nastavenie

Zapojenie a nastavenie
Zapojenie a nastavenie
Zapojenie a nastavenie
Zapojenie a nastavenie
Zapojenie a nastavenie
Zapojenie a nastavenie
Zapojenie a nastavenie
Zapojenie a nastavenie

V závislosti od situácie môžete nájsť oddeľovaciu dosku alebo zachrániť starý port zo základnej dosky (môj druhý pokus), alebo ak sa cítite obzvlášť náladovo, môžete dokonca prerušiť fialový konektor a odhaliť 4 vodiče (môj prvý pokus) a pripojte ich k UNO.

Klávesnica_Arduino

+5V (VCC) _+5V

GROUND_GND

HODINY _ 2

ÚDAJE _ PIN3*

*DATA DATA môžete zmeniť na čokoľvek, čo chcete, ale nezabudnite aktualizovať náčrt.

** HODINY musia byť pripojené k prerušovaciemu kolíku na Arduine, ktorým môže byť na UNO iba PIN 2 alebo 3 (nezabudnite aktualizovať náčrt). Ďalšie informácie a rôzne konfigurácie dosiek nájdete v sekcii komentárov k príkladom knižnice PS2KeyAdvanced.

Krok 2: Testovanie klávesnice

Predtým, ako sa pustíte do práce, skontrolujte, či všetko funguje na klávesnici a knižnici.

Tu som pripojil upravenú verziu knižnice SimpleTest.ino z knižnice PS2KeyAdvanced s aktualizovanými hodinovými a dátovými pinmi a tiež znázornením „make“a „break“. Tu je nejaké vysvetlenie výstupu.

  • Tento systém skenovacieho kódu „make“a „break“a „kód“, ktorý je izolovaným (c & 0xFF) skenovacím kódom buď pri stlačení klávesu alebo pri uvoľnení klávesu, hrá dôležitú úlohu pri konverzii PS/2 na USB a odporúčam vám študovať ďalšie 2 príklady, ktoré sú súčasťou knižnice, aby ste lepšie porozumeli, ak plánujete vylepšiť alebo zmeniť (premapovanie klávesov na rôzne rozloženia) konečný náčrt. Úplný zoznam skenovacích kódov PS/2 z knižnice môžete získať aj otvorením súborov „PS2KeyAdvanced.h“alebo „PS2KeyCode.h“v priečinku „\ Documents / Arduino / libraries / PS2KeyAdvanced / src \“
  • „Stavové bity“označujú modifikačné klávesy (Ctrl, Alt, Windows, Shift/Caps) a uvidíte, že s každým ďalším klávesom modifikátora sa táto hodnota zmení, zatiaľ čo hlavný „Kód“normálneho (nemodifikačného) kľúča sa nezmení. Ale v konečnom súčte som túto metódu ignoroval a implementoval som tieto modifikačné klávesy ako jednoduché stlačenia klávesov (Uvidíte, že tieto modifikačné klávesy majú tiež skenovací kód „make“a „break“nezávislý od bežných klávesov, bez ohľadu na to, či je stlačených viac klávesov alebo nie.) pretože to uľahčuje protokol USB-HID.

Krok 3: Ukážka konverzie PS/2 na USB

Pred aktualizáciou Atmega8U2 alebo 16U2 (UNO Rev3), aby sme identifikovali náš Arduino ako klávesnicu USB, by sme sa mali uistiť, že všetky položky prevodu fungujú správne a konečný konečný náčrt je nahraný, inak bude prepisovanie stále veľkým problémom. firmvér znova a znova medzi pôvodnými hex súbormi a klávesnicou USB, aby ste mohli nahrať správny náčrt. To platí najmä vtedy, ak nemáte žiadneho externého programátora, akým je napríklad USBasp alebo iné Arduino, ktoré by bolo možné použiť ako ISP. Preto tu nahráme „DEBUG“verziu konečného náčrtu s výstupom čitateľným pre človeka (prostredníctvom sériového monitora), aby sme si veci vyskúšali.

Výstup, ktorý uvidíte, bude po uvoľnení každého kľúča naformátovaný takto, 00 00 00 00 00 00 00 00

Tu je základné vysvetlenie očakávaného výstupu,

Pri každom novom stlačení klávesu viacnásobného modifikátora by ste mali dostať nový riadok s rôznymi hodnotami pre „xx“. Nakoniec, keď uvoľníte všetky modifikačné klávesy, „xx“by malo byť 00

xx 00 00 00 00 00 00 00 00

Pri každom novom viacnásobnom normálnom stlačení klávesu (napríklad stlačíme hypotetický kláves a, kláves b a kláves c s hodnotami „xx“, „yy“a „zz“v uvedenom poradí) by ste mali získať nepretržité (nie povinné) takéto nové riadky,

00 00 xx rr zz 00 00 00

keď uvoľníte iba kláves b, výstup by sa mal zmeniť na,

00 00 xx 00 zz 00 00 00

a ak stlačíte nové tlačidlo d s hodnotou „nn“bez uvoľnenia klávesu a alebo b, váš výstup by sa mal zmeniť na,

00 00 xx nn zz 00 00 00

a nakoniec sa k tomu vráťte, keď uvoľníte každý kľúč,

00 00 00 00 00 00 00 00

a nakoniec, ak stlačíte buď Caps Lock, Num Lock alebo Scroll Lock, mali by ste dostať niečo také s viacerými riadkami súčasne,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Ak sa tu všetko stane, ste zlatí, aby ste pokračovali!

Krok 4: Technické vysvetlenie

Technické vysvetlenie
Technické vysvetlenie
Technické vysvetlenie
Technické vysvetlenie

Ak chcete, môžete tento krok preskočiť. Toto je len vysvetlenie predchádzajúcich výstupov. Výstupné 8 bajtové pole, ktoré ste videli, je formátované podľa vyššie uvedeného obr. 1 Môžete sa o tom dozvedieť oveľa viac a tiež o tom, ako je stavový bajt modifikačných kľúčov zapísaný z tejto wiki o USB-HID. V zásade môj kód robí zakaždým, keď sa stlačí nový kláves (protokol PS/2 to označuje ako „značka“), prejde poslednými 6 bytmi poľa, ktoré sa používajú na bežné stlačenia klávesov, a vyplní prvé prázdny bajt nájde s príslušným „skenovacím kódom HID“(zobrazené ako na obr. 2 Tiež nájdete kompletný zoznam z priloženého PDF) pre prijatý „skenovací kód PS/2“. A nakoniec, keď sa príslušný kľúč uvoľní (protokol PS/2 to označuje ako „prerušenie“), kód bude cyklovať v aktuálnom poli bajtov a vymaže iba príslušný bajt.

Ak budete postupovať až sem a tiež si prečítate stránku wiki, uvidíte, že v tejto metóde je malý problém, zvyčajne po uvoľnení kľúča sa v protokole HID zostávajúce bajty usporiadajú tak, aby sa zbavili prázdnych bytov. medzi zostávajúcimi prázdnymi bytmi. Ale z nejakého dôvodu, bez ohľadu na to, koľkými spôsobmi som to skúsil, som nemohol dosiahnuť, aby to fungovalo podľa plánu bez toho, aby sa omylom vymazali nechcené bajty aj pre stlačené klávesy. Ak to môžete zlepšiť, aby to fungovalo, zanechajte komentár. Aj keď na konci dňa tento problém neovplyvňuje funkčnosť klávesnice, pokiaľ Arduino stále registruje každé stlačenie klávesu bez ohľadu na ich poradie (čo v praktickom použití nič neovplyvňuje).

Krok 5: Odovzdanie konečného náčrtu

Takže skôr, ako konečne aktualizujete firmvér Atmega8U2 alebo 16U2 (UNO Rev3), aby ste identifikovali naše Arduino ako klávesnicu USB, musíme nahrať konečný náčrt. Keď to nahráte, ak prejdete na sériový monitor, uvidíte, že pri každom novom stlačení klávesu vytlačí odpadky, čo je dobrým znamením, že všetko funguje tak, ako malo, a môžeme pristúpiť k poslednému kroku. JÉJ!!!

Krok 6: Aktualizácia firmvéru

Nakoniec môžete aktualizovať firmvér svojho Arduina a zaregistrovať ho ako klávesnicu USB. Z tohto dôvodu nebudem zachádzať do väčších podrobností, pretože bude príliš dlhý tento návod.

  1. Postupujte podľa tohto sprievodcu z arduino.cc o „Aktualizácii Atmega8U2 a 16U2 na zariadení Uno alebo Mega2560 pomocou DFU“, ale namiesto „Arduino-usbserial-uno.hex“použite priložený „Arduino-keyboard-0.3.hex“
  2. Vo FLIP nezabudnite vybrať cieľové zariadenie ako Atmega8U2 alebo 16U2 v závislosti od vášho Arduina a z komunikačného média vyberte USB a nakoniec pred výberom spustenia načítajte správny hex súbor.
  3. Ak sa vám vyskytla chyba ovládača, prejdite na správcu zariadení systému Windows a zvoľte vyhľadať neznámy ovládač v inštalačnom adresári FLIP '\ Program Files (x86) Atmel \'
  4. Ak sa vám pri aktualizácii firmvéru z FLIP vyskytli chyby viackrát, zatvorte FLIP a spustite „Obnoviť predvoľby“z „ponuky Štart / FLIP \“a potom reštartujte FLIP a vykonajte kroky konfigurácie pred ďalším pokusom, to mi zvyčajne funguje.
  5. Ak chcete obnoviť svoj Arduino do pôvodného stavu, postupujte podľa vyššie uvedeného sprievodcu arduino.cc do písmena bez použitia tohto hexadecimálneho súboru.

Krok 7: Užite si ……

Užite si to……
Užite si to……

Teraz si užite svoju novo skonvertovanú klávesnicu PS/2 na USB…. P. S. Tento návod bol úplne napísaný z externej klávesnice PS/2 pripojenej k môjmu notebooku prostredníctvom Arduina:)

Odporúča: