Arduino USB HID-ként

HID-eszközt (például billentyűzetet) lehet építeni Arduino uno használatával?

Abban az időben lévén, az Arduino-n vannak gomb bemeneteim, amelyek kimeneteket adnak a soros vonalon. Szóval, hogyan tudom átalakítani a jelenlegi firmware -met olyanra, amely HID-billentyűzetként viselkedhet?

  • Írjak egy új ablakos eszközillesztőt?
  • Hozzon létre egy szoftvert réteg, amely elviheti a soros adataimat, és a Windows HID bemenetként olvashatja?
  • Van-e valamilyen jobb módszer ennek elérésére, ha ez egyáltalán lehetséges?

Megjegyzések

  • Lehet, hogy tévedek, de ez valójában nem Arduinóról szól. A Window ' oldalsó eszközillesztő fejlesztéséről.
  • Első válasz a Google-ban: mitchtech.net/arduino -usb-hid-keyboard … de nem adta meg, melyik Arduino. Egy Leonardo beépített ' s beépített verzióval rendelkezik, és a megfelelő illesztőprogram már létezik (lásd: arduino.cc/en/Reference/MouseKeyboard).
  • I ' m egy Uno használatával, de ' megnézem, hogy mit posztoltál, mert legutóbb a DFU frissítést fontolgattuk, de ' nagyon megijedtünk a téglafalazástól, mivel az alkatrészek ' t nem találják olyan könnyen és olcsón, az én területem, mint a legtöbb helyen.
  • @AsheeshR Ez a kérdés a metán van: meta.arduino.stackexchange.com/q/102/46
  • Nos, ez ' mindenképpen lehetséges, mivel az Arduino Uno USB-meghajtó chipként egy Atmega16u2-t tartalmaz, a felhasználó használhatja a DFU-t vagy az ICSP-t nyomja meg a készüléken a leonardo ' shez közeli firmware-t, amely arra készteti az Arduino-t, hogy HID billentyűzetként viselkedjen. ' nincs Windows fejlesztés, alapértelmezés szerint nem ismerhető fel USB / HID eszközként felépítendő illesztőprogram. azaz ezt a kérdést újra meg kell nyitni.

Válasz

HID eszközt (például billentyűzetet) fel lehet építeni egy Arduino uno használatával?

igen! És van egy nagyszerű bemutató, hogyan lehet ezt megtenni itt

jelenleg az Arduino-nál vannak gombbemeneteim, amelyek kimeneteket adnak a soros vonalon. Tehát hogyan alakíthatnám át a jelenlegi firmware-em olyasmivé, amely HID-billentyűzetként viselkedhet?

Amint az oktatóanyag megmutatja, át kell alakítania a firmware kódját, így az események kinyomtatása helyett valóban eseményeket indít el. Amit meg kell tennie, hozzá kell adnia a kódjához:

void triggerKey(uint8_t mod, uint8_t chr) { uint8_t buf[8] = {mod, chr, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // press key Serial.write(buf, 8); // emulate key press delay delay(10); buf[1] = 0x00; // release key Serial.write(buf, 8); } 

Amit itt csinál, az a fő Arduino mikrovezérlő eseményekből kerül soros vonalon keresztül az USB kommunikációt kezelő kisebb mikrovezérlőre. Ez a mikrovezérlő elviszi ezeket a kulcs “puffereket” és átadja őket, amikor az USB HID billentyűzet megnyomja az USB-t.

Vigyázzon, hogy a kulcs karakter (chr itt található) ), valójában egy USB-n keresztül küldött kulcskód, amelyet az USB HID illesztőprogramja értelmez, amely aztán valódi karakterré alakítja át a billentyűzethez beállított jelenlegi elrendezés használatával.

A mod karakter az egyik módosító billentyű, amely a billentyűzeten van (shift, control, alt …), 0x00 nem módosító.

  • Írjak egy új ablakos eszközillesztőt?

Nem, nem kell! A DFU frissítésével az arduino-t a Windows USB billentyűzetként fogja látni.

  • Hozzon létre egy szoftver réteget, amely elveheti a soros verziómat adatokat, és a Windows HID bemenetként olvassa-e?

Önnek sem kell ezt tennie, és valójában nagyon rossz ötlet sok ok:

  • a megoldása nem lenne hordozható, és ezért minden feltöltött platformra feltörnie kellene valamit,
  • a megoldása sok új kód; minél több kódot írsz, annál több hiba fordulhat elő a rendszeredben,
  • a megoldásod valóban hackeres lenne, mivel eszközillesztőként viselkedne (azaz kernel land ) vesz egy felhasználói programból származó bemenetet (pl. felhasználói föld ), és valószínűleg nem fog működni, pokolian hibakeresni és hajlamos a biztonsági problémákra … Ha ez még lehetséges is!

Uno-t használok, de megnézem, hogy mit posztoltál, mert legutóbb a DFU frissítést vettük figyelembe, de kissé fél a téglafalazástól

Végül egy megjegyzésben aggodalmát fejezi ki az arduino téglázásával kapcsolatban.Kérem, higgyen nekem és a cikk írójának, hogy nem téglázza meg az arduino-t egy firmware-vakuval:

MEGJEGYZÉS: Nincs esély arra, hogy ezzel a módszerrel „téglázza” az eszközt. Az Arduino rendszerbetöltő firmware mindig frissíthető a DFU protokoll használatával!

Ha valami nagyon rosszul lesz, és egy bootloader sérülést okoz a kis AVR-ben (atmega8u2), akkor is újracsaphat egy másik arduino használatával vagy egy atmel programozóval az USB csatlakozó melletti 6 érintkező segítségével.

Végül tudd meg, hogy a csak módja annak, hogy téglázzon egy AVR-t, tehát egy Arduino-t is , a biztosítékokkal való játék és a programozási biztosítékok visszaállítása. És akkor is használhatja a HVSP eszközt az eszköz mentéséhez, bár gyakran kevesebb gondot okoz csupán egy új chip megszerzése.

Megjegyzések

  • Köszönöm a hasznos információkat, végül ezt elértük.
  • Nos, az AVR téglájának megfelelő módja a túláram / Ezután megpirítjuk …
  • De akkor ' nem téglának, hanem sütésnek, vagy ahogy mondjuk pirításnak hívják. Tegyen 15amp-ot az MCU-ra, és fogadni mernék, hogy ' látni fogja, hogy átugrik a szobán 😉
  • Hogyan adhatom ki egy adott kulcsot? Szeretnék utánozni egy kulcs HOLD, majd engedje el. És a linkben is a karakter a [2] tömbbe megy, míg itt az [1]. Miért?
  • Nos, ahogy a példám is mutatja, ketté teszed lépéseket, először megnyomja a gombot, majd ott ' s a késleltetés, majd felengedi. Nos, akkor ' előadás magának arról, hogyan működik a hardveres billentyűzet Az ntation működik, ez ' nem természetes, és a tömb minden értékének van jelentése. Bocsásson meg, hogy nincs linkem az atm megosztásához, de amikor talál valamit az interneten, kérjük, tegyen új megjegyzést ☺

Válasz

Létrehoztam egy projektet, amely teljes mértékben felváltja az Arduino Bootloadert. Feltöltheti a vázlatokat és felhasználhatja azokat HID-ként. Lásd a HID projekt a Githubon: https://github.com/NicoHood/HID

megjegyzések

  • Üdvözöljük az Arduino SE-n! Hozzá tudna tenni egy kicsit a könyvtár használatáról? Köszönöm!
  • Olvassa el a readme-et és próbálja ki a példákat? Minden ott van, nem kell itt mindent elárasztani. A Githubon minden naprakész 🙂
  • Sajnálom haver, klassz könyvtárnak tűnik, de a dokumentáció őrülten hiányzik. ' nincsenek valós telepítési utasítások, amennyire meg tudom mondani, és a wiki egész témája csak annyit mond, hogy " TODO " (konkrétan a gamepad téma így teljesen üres). : – /
  • Valójában itt egy alapvető leírást kell bemutatni: a válaszoknak a külső kapcsolat nélkül is értelmesnek kell lenniük, amely meghalhat. És ez nem az.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük