Tartalomjegyzék:

Arduino PS/2 - USB adapter: 7 lépés (képekkel)
Arduino PS/2 - USB adapter: 7 lépés (képekkel)

Videó: Arduino PS/2 - USB adapter: 7 lépés (képekkel)

Videó: Arduino PS/2 - USB adapter: 7 lépés (képekkel)
Videó: Кодовый дверной замок своими руками 😂😂 2024, Július
Anonim
Arduino PS/2 - USB adapter
Arduino PS/2 - USB adapter
Arduino PS/2 - USB adapter
Arduino PS/2 - USB adapter

Szerette valaha használni a régi PS/2 billentyűzetét laptopjával vagy új asztali számítógépével, és rájött, hogy már nincs PS/2 portja? És akkor inkább vásároljon olcsó PS/2 -USB -adaptert, mint egy normális ember, az Arduino -t PS/2 -USB -adapterként akarta használni. Akkor jó helyre jöttél:)

Korrekt figyelmeztetés, mielőtt belekezdünk. Ha UNO/Mega készülékét USB-HID eszközként használja (nem csak billentyűzetre, de akár egérre, joystickra stb. Is), ideiglenesen elveszíti funkcióit Arduino-ként. Ezalatt azt értem, hogy nem használhatja a soros kommunikációt, és nem programozhatja át USB -n keresztül. Ez azért van, mert túl fogjuk írni a firmware-t az USB interfész chipjére (kis srác az Atmega8U2 és 16U2 USB port közelében, a felülvizsgálattól függően). De ne aggódjon, hogy valójában nem tudja lefalazni az UNO/Mega készüléket, mert ez mindig visszafordítható.

Szintén véletlenül, ha rendelkezik olyan Arduino-val, amely már rendelkezik USB-HID képességgel (Arduino Pro Micro vagy Leonardo, stb. Google-keresést végez), akkor elfelejtheti ezt a valaha létező oktathatót, menjen közvetlenül ide, hogy megmentse magát a bajok világától, csak vicc!

Kellékek

  • Hardver

    • Arduino UNO vagy Mega
    • PS/2 billentyűzet
    • Opcionálisan egy extra Arduino vagy bármilyen USB programozó (USBasp, stb.) Jöhet jól.
  • Szoftver

    • Atmel FLIP
    • PS2KeyAdvanced könyvtár az Arduino IDE számára

1. lépés: Kábelezés és beállítás

Kábelezés és beállítás
Kábelezés és beállítás
Kábelezés és beállítás
Kábelezés és beállítás
Kábelezés és beállítás
Kábelezés és beállítás
Kábelezés és beállítás
Kábelezés és beállítás

A helyzettől függően vagy találhat egy kitörő táblát, vagy kimenthet egy régi portot az alaplapról (a második próbálkozásom), vagy ha különösen rosszkedvűnek érzi magát, akkor akár levághatja a lila aljzatot, és leleplezheti a 4 vezetéket (az első próbálkozásom). csatlakoztassa őket az UNO -hoz.

Billentyűzet _Arduino

+5V (VCC) _+5V

GROUND_GND

ÓRA _ 2. PIN **

ADATOK _ PIN3*

*Megváltoztathatja a DATA pin -t tetszés szerint, de ne felejtse el frissíteni a vázlatot.

** A CLOCK -t egy megszakító tűhöz kell csatlakoztatni az Arduino -n, amely csak a 2. vagy 3. PIN -kód lehet (ne felejtse el frissíteni a vázlatot) az UNO -n. További információkért és a különböző tábla konfigurációkért tekintse meg a PS2KeyAdvanced könyvtári példák megjegyzés szakaszát.

2. lépés: A billentyűzet tesztelése

Mielőtt minden kézzel a fedélzetre lépne, először győződjön meg arról, hogy minden működik a billentyűzeten és a könyvtárban.

Itt csatoltam a SimpleTest.ino módosított verzióját a PS2KeyAdvanced könyvtári példákból, frissített óra- és adattűkkel, valamint "make" és "break" ábrázolással. Íme néhány magyarázat a kimenetre.

  • Ez a "make" és "break" scancode rendszer és a "Code", amely vagy a billentyű lenyomása, vagy a billentyűkioldás elszigetelt (c & 0xFF) szkennelési kódja, fontos szerepet játszik a PS/2 USB átalakításban, és javaslom, hogy tanulmányozza a másik 2 példa, amely a könyvtárhoz tartozik, hogy jobban megértse, ha a végleges vázlat javítását vagy megváltoztatását tervezi (kulcsok átrendezése különböző elrendezésekre). A PS/2 szkennelési kódok teljes listáját a könyvtárból is elérheti, ha megnyitja a "PS2KeyAdvanced.h" vagy a "PS2KeyCode.h" fájlokat a "Documents / Arduino / libraries / PS2KeyAdvanced / src \" mappából.
  • Az "Állapotbitek" a módosító billentyűkre (Ctrl, Alt, Windows, Shift/Caps) vonatkozik, és látni fogja, hogy minden további módosító billentyűvel ez az érték megváltozik, miközben a normál (nem módosító) kulcs fő "kódja" változatlan. De a végső vázlatban figyelmen kívül hagytam ezt a módszert, és ezeket a módosító billentyűket egyszerű billentyűkombinációként implementáltam (Látni fogja, hogy ezeknek a módosító gomboknak a "make" és "break" szkennelési kódja is független a normál billentyűktől, függetlenül attól, hogy több gombot nyomnak-e vagy sem.) mert megkönnyíti a dolgokat az USB-HID protokollal.

3. lépés: PS/2 - USB konverzió előnézete

Mielőtt frissítenénk az Atmega8U2 vagy 16U2 (UNO Rev3), hogy az Arduino-t USB-billentyűzetként azonosítsuk, meg kell győződnünk arról, hogy az összes konverziós anyag megfelelően működik, és a végső vázlat feltöltésre került, vagy különben nagy fájdalmat okoz a továbbírás. firmware-t újra és újra az eredeti és az USB-billentyűzet hex fájljai között, csak hogy fel tudja tölteni a megfelelő vázlatot. Ez különösen igaz, ha nincs külső programozója, például USBasp vagy más Arduino, amelyet internetszolgáltatóként használhat. Tehát itt feltöltjük a végső vázlat „DEBUG” változatát, amely emberi olvasható kimenettel rendelkezik (a soros monitoron keresztül), hogy teszteljük a dolgokat.

A megjelenített kimenet így lesz formázva, amikor minden kulcsot elenged, 00 00 00 00 00 00 00 00

Íme egy alapvető magyarázat a várható teljesítményre,

Minden új többszörös módosító billentyű lenyomásakor egy új sort kell kapnia az „xx” különböző értékeivel. Végül, amikor elengedi az összes módosító gombot, az „xx” 00 -nak kell lennie

xx 00 00 00 00 00 00 00

Minden új, több normál gombnyomásnál (például az hipotetikus a, b és c gombokat is megnyomjuk az „xx”, „yy” és „zz” értékekkel ebben a sorrendben) folyamatosnak kell lennie (nem kötelező) ilyen új sorok,

00 00 xx yy zz 00 00 00

amikor csak a b billentyűt engedi fel, a kimenet a következőre változik:

00 00 xx 00 zz 00 00 00

és ha megnyomja az „d” értékű új d gombot az a vagy b gomb elengedése nélkül, akkor a kimenet a következőre változik:

00 00 xx nn zz 00 00 00

és végül térjen vissza ehhez, amikor minden kulcsot elengednek,

00 00 00 00 00 00 00 00

és végül, ha megnyomja a Caps Lock, a Num Lock vagy a Scroll Lock billentyűt, akkor valami ilyesmit kell kapnia egyszerre több sorral,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Ha itt minden megtörténik, arany vagy a folytatáshoz!

4. lépés: Műszaki magyarázat

Műszaki magyarázat
Műszaki magyarázat
Műszaki magyarázat
Műszaki magyarázat

Ha tetszik, kihagyhatja ezt a lépést. Ez csak magyarázat a korábbi kimenetekre. A látott 8 bájtos tömb a fenti 1. ábra szerint van formázva. Sokkal többet megtudhat erről, és arról is, hogyan írják a módosító kulcsok állapotbájtját a wikiből az USB-HID-ről. A kódom alapvetően az, hogy minden egyes új billentyű megnyomásakor (a PS/2 protokoll ezt "make" -nek nevezi), a rendszer a normál billentyűlenyomáshoz használt tömb utolsó 6 bájtját végigkíséri, és kitölti az első üres bájtot talál a megfelelő „HID szkennelési kóddal” (látható a 2. ábra szerint. A teljes listát a mellékelt PDF -ből is megtalálja) a kapott „PS/2 szkennelési kódhoz”. És végül, amikor a megfelelő kulcsot elengedik (a PS/2 protokoll ezt „törésnek” nevezi), a kód átfut a jelenlegi bájt tömbön, és csak a vonatkozó bájtot törli.

Ha eddig követte, és ha elolvassa a wiki oldalt, akkor látni fogja, hogy van egy kis probléma ezzel a módszerrel, általában a kulcs elengedésekor, a HID protokollban a fennmaradó bájtok átrendeződnek, hogy megszabaduljanak az üres bájtoktól a fennmaradó nem üres bájtok között. De valamilyen oknál fogva, függetlenül attól, hogy hányféleképpen próbáltam, nem tudtam úgy működni, ahogy rendeltem, anélkül, hogy véletlenül törölném a nem kívánt bájtokat a lenyomott billentyűk számára is. Ha ezen javítani tud, hogy működjön, kérjük, írjon megjegyzést. Bár a nap végén ez a probléma nem befolyásolja a billentyűzet működését, amíg az Arduino továbbra is regisztrál minden billentyűlenyomást, függetlenül a megnyomási sorrendtől (ami a gyakorlati használatban semmit nem befolyásol).

5. lépés: A végső vázlat feltöltése

Tehát mielőtt végre frissítené az Atmega8U2 vagy 16U2 firmware -t (UNO Rev3), hogy az Arduino -t USB -billentyűzetként azonosítsa, fel kell töltenünk a végső vázlatot. A feltöltés után, ha a soros monitorhoz megy, látni fogja, hogy minden új gomb megnyomásával szemetet nyomtat, ez jó előjel, hogy minden a tervek szerint működik, és folytathatjuk az utolsó lépést. HURRÁ!!!

6. lépés: A firmware frissítése

Végül frissítheti Arduino firmware -jét, hogy regisztrálja azt USB -billentyűzetként. Ebből a szempontból nem részletezem a részleteket, mert ez túl hosszúra teszi ezt az utasítást.

  1. Kövesse ezt az útmutatót az arduino.cc webhelyről: „Az Atmega8U2 és 16U2 frissítése Uno vagy Mega2560 készüléken DFU használatával”, de az „Arduino-usbserial-uno.hex” helyett használja az „Arduino-keyboard-0.3.hex”
  2. A FLIP -ben ne felejtse el a céleszközt Atmega8U2 vagy 16U2 -ként választani, attól függően, hogy Arduino, és válassza ki a kommunikációs adathordozót az USB -ből, és végül töltse be a megfelelő hexafájlt a futtatás kiválasztása előtt.
  3. Ha illesztőprogram -hibába ütközött, menjen a Windows eszközkezelőbe, és válassza ki az ismeretlen illesztőprogram keresését a FLIP '\ Program Files (x86) Atmel \' telepítési könyvtárában
  4. Ha hibákba ütközött, miközben többször frissítette a firmware -t a FLIP -ből, zárja be a FLIP -et, és futtassa a „Reset Preferences” menüpontot a „Start menü / FLIP \” menüből, majd indítsa újra a FLIP -t, és hajtsa végre a konfigurációs lépéseket, mielőtt újra megpróbálná.
  5. Ha vissza szeretné állítani az Arduino eredeti állapotát, kövesse a fenti arduino.cc útmutatót a levélhez anélkül, hogy használná ezt a hexa fájlt.

7. lépés: Élvezze ……

Élvezd……
Élvezd……

Most élvezze az újonnan átalakított PS/2 USB billentyűzetet…. P. S. Ezt az Instructable -t teljes egészében egy külső PS/2 billentyűzetről írtam, amely az Arduino -n keresztül csatlakozott a laptopomhoz:)

Ajánlott: