Arduino jako USB HID (Čeština)

Je možné sestavit zařízení HID (například klávesnici) pomocí Arduino uno?

V té době mám na Arduinu tlačítkové vstupy, které dávají výstupy na sériové lince. Jak tedy mohu transformovat svůj aktuální firmware na něco, co se může chovat jako klávesnice HID?

  • Mám napsat nový ovladač zařízení okna?
  • Mám vytvořit software vrstva, která by mohla vzít moje sériová data a nechat ji Windows číst jako vstup HID?
  • Existuje nějaký lepší způsob, jak toho dosáhnout, pokud je to vůbec možné?

Komentáře

  • Možná se mýlím, ale nejde o Arduino. Jedná se o vývoj ovladačů zařízení na straně '.
  • První odpověď v google: mitchtech.net/arduino -usb-hid-keyboard … ale neurčili jste, které Arduino. Na Leonardu je to ' integrováno a příslušný ovladač již existuje (viz arduino.cc/en/Reference/MouseKeyboard).
  • Používám Uno ', ale ' se podívám na to, co jste zveřejnili, protože minule jsme uvažovali o aktualizaci DFU, ale ' se trochu bojíme cihel, protože komponenty nejsou ' tak snadno dostupné a levné v moje oblast jako na většině míst.
  • @AsheeshR Tento problém je nyní v meta: meta.arduino.stackexchange.com/q/102/46
  • No, to je ' rozhodně možné, protože Arduino Uno má jako čip ovladače USB Atmega16u2, uživatel může použít blikání DFU nebo ICSP zatlačte na zařízení firmware v blízkosti leonardo ' s, díky kterému se Arduino bude chovat jako HID klávesnice. ' Není zapojen žádný vývoj systému Windows, standardně není rozpoznán žádný ovladač, který by měl být vytvořen jako zařízení USB / HID. tj. tato otázka by měla být znovu otevřena.

odpověď

Je možné sestavit zařízení HID (například klávesnici) pomocí Arduino uno?

ano, je! A je tu skvělý návod, jak to udělat zde

Na v současné době mám na Arduinu tlačítkové vstupy, které dávají výstupy na sériové lince. Jak tedy mohu transformovat svůj aktuální firmware na něco, co se může chovat jako HID klávesnice?

Jak vám ukazuje výukový program, musíte transformovat svůj kód firmwaru, takže místo tisku událostí ve skutečnosti spouštíte události. Co musíte udělat, je přidat do svého kódu:

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); } 

To, co zde děláte, je odesílání z hlavních událostí mikrokontroléru Arduino po sériové lince do menšího mikrokontroléru, který zpracovává komunikaci USB. Tento mikrokontrolér vezme tyto klíčové „vyrovnávací paměti“ a přenese je, když klávesa USB HID klávesnice stiskne přes USB.

Pozor, klíčový znak (chr v kódu zde ), je ve skutečnosti klíčový kód odeslaný přes USB, který je interpretován vaším ovladačem USB HID, který jej poté převede na skutečný znak pomocí aktuálního rozložení, které jste nastavili pro svou klávesnici.

mod znak je jedním z modifikátorů, které máte na klávesnici (shift, control, alt …), 0x00 není modifikátor.

  • Mám napsat nový ovladač zařízení v okně?

Ne, nepotřebujete! S upgradem DFU bude vaše arduino v systému Windows považováno za USB klávesnici.

  • Vytvořím softwarovou vrstvu, která by mohla mít můj seriál data a nechat Windows je číst jako HID vstup?

Ani to nemusíte dělat, a je to vlastně velmi špatný nápad mnoho důvodů:

  • vaše řešení by nebylo přenosné, a proto byste museli hackovat něco pro každou platformu, kterou používáte,
  • vaše řešení by znamenalo mnoho nový kód; čím více kódu napíšete, tím více chyb ve vašem systému pravděpodobně bude,
  • vaše řešení by bylo opravdu hackerské, protože by se chovalo jako ovladač zařízení (tj. přistání jádra ) převzetí vstupů od uživatelského programu (tj. uživatelská země ) a pravděpodobně nebude fungovat, bude to sakra ladit a bude náchylné k bezpečnostním problémům … Pokud je to vůbec možné!

Používám Uno, ale podívám se na to, co jste zveřejnili, protože jsme naposledy uvažovali o aktualizaci DFU, ale jsme Trochu se bojím cihel.

Konečně máte v komentáři obavy ohledně zděšení svého arduina.Věřte mi a autorovi článku , že nemůžete zdědit své arduino provedením flash firmwaru:

POZNÁMKA: Neexistuje šance na „zdědění“ zařízení pomocí této metody. Firmware zavaděče Arduino lze vždy aktualizovat pomocí protokolu DFU!

V případě, že se něco opravdu špatně pokazí a v malém AVR (atmega8u2) dojde k poškození zavaděče, stále můžete provést aktualizaci pomocí jiného arduina nebo atmel programátora pomocí 6 pinů vedle USB konektoru.

Nakonec vězte, že jediný způsob zděšení AVR, tedy také Arduina , je hrát si s pojistkami a resetovat programovací pojistky. A dokonce i poté můžete použít HVSP k uložení zařízení, i když s novým čipem je často menší problém.

Komentáře

  • Děkujeme za všechny užitečné informace a nakonec jsme toho dosáhli.
  • No, správný způsob, jak AVR zdědit, je nadproud / přepětí. Pak se to opéká …
  • Ale pak se to ' nenazývá zděšením, ale smažením, nebo jak říkáte, opékáním. Projděte MCU 15 ampéry a vsadím se, že ' uvidíte, jak to skáče po místnosti 😉
  • Jak uvolnit konkrétní klíč? Chci napodobit klíč HOLD pak uvolněte. A také v odkazu jde znak do pole [2], zatímco tady jde do [1]. Proč?
  • no, jak je ukázáno v mém příkladu, uděláte to ve dvou kroky, nejdříve stiskněte klávesu, pak ' s zpoždění, pak ji uvolníte. Pak ' musíte přednáška o tom, jak se implementuje hardwarová klávesnice Ntation funguje, ' to není přirozené a každá hodnota pole má svůj význam. Promiňte, že nemám odkaz na sdílení atm, ale kdykoli najdete něco, co prohledává web, napište nový komentář ☺

Odpovědět

Vytvořil jsem projekt, který plně nahrazuje bootloader Arduino. Můžete nahrát náčrtky a použít je jako HID. Viz Project HID na Github: https://github.com/NicoHood/HID

Komentáře

  • Vítejte v Arduino SE! Můžete přidat něco o tom, jak používat vaši knihovnu? Děkujeme!
  • Přečíst soubor readme a vyzkoušet příklady? Je to všechno tam, není třeba tu všechno napodobovat. Všechno na Githubu je aktuální 🙂
  • Promiň, kámo, vypadá to jako skvělá knihovna, ale chybí ti šíleně dokumentace. ' Neexistují žádné skutečné instalační pokyny, pokud vím, a celá témata na vaší wiki řeknou " TODO " (konkrétně téma gamepadu je takto zcela prázdné). : – /
  • Ve skutečnosti je zde třeba uvést základní popis: odpovědi musí být smysluplné i bez externího odkazu, který by mohl zemřít. A tohle není.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *