Otázka:
Arduino jako USB HID
Anomaly
2014-02-27 20:37:49 UTC
view on stackexchange narkive permalink

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

V současné době mám na Arduinu tlačítkové vstupy poskytující 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é?
Možná se mýlím, ale nejde vlastně o Arduino. Jde o vývoj ovladače zařízení na straně Windows.
První odpověď v google: http://mitchtech.net/arduino-usb-hid-keyboard/ ... ale neurčili jste, které Arduino. V systému Leonardo je integrován a příslušný ovladač již existuje (viz http://arduino.cc/en/Reference/MouseKeyboard).
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 trochu se bojíme cihel, protože komponenty nejsou v mé oblasti tak snadno dostupné a levné jako ve většině místa.
@AsheeshR No, teď jste přidali další informace k podpoře vašeho nároku, ale je to jen odkaz. Proč jste tedy nezveřejnili podrobnější verzi tohoto komentáře jako odpověď (nelze ji považovat za odpověď na odkaz) a počkali jste na hlasy? To by bylo mnohem konstruktivnější než hlasovat pro jeho uzavření.
@AsheeshR Tento problém je nyní v meta: http://meta.arduino.stackexchange.com/q/102/46
To je rozhodně možné, protože Arduino Uno je vybaveno čipem ovladače Atmega16u2 jako USB, může uživatel pomocí blikání DFU nebo ICSP na zařízení zatlačit na firmware blízký leonardo, díky kterému se Arduino bude chovat jako HID klávesnice. Není zapojen žádný vývoj systému Windows, není třeba vytvářet žádný ovladač, protože zařízení USB / HID jsou standardně rozpoznána. tj. tato otázka by měla být znovu otevřena.
Dva odpovědi:
zmo
2014-03-01 22:15:12 UTC
view on stackexchange narkive permalink

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

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

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

Jak vám ukazuje výukový program, musíte svůj kód firmwaru transformovat, takže místo tisku událostí ve skutečnosti spouští 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}; // stiskněte klávesu Serial.write (buf, 8); // emulace zpoždění stisknutí klávesy (10); buf [1] = 0x00; // uvolňovací klíč Serial.write (buf, 8);}  

Co tady děláte, je odesílání z vašich hlavních událostí mikrokontroléru Arduino přes sériovou linku do menšího mikrokontroléru, který zpracovává USB sdělení. Ten mikrokontrolér vezme tyto klíčové „vyrovnávací paměti“ a přenese je, když USB HID Keyboardkey tlačí přes USB.

Pozor, klíčový znak (zde v kódu chr ) je vlastně keycode odesílací USB, které bude interpretováno 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 klávesnici.

Znak mod je jedním z modifikační klávesy, které máte na klávesnici (shift, control, alt ...), přičemž 0x00 není žádný modifikátor.

  • Mám napsat nové okno ovladač zařízení?

Ne, nepotřebujete! S upgradem DFU bude na vaše arduino nahlíženo jako na USB klávesnici v oknech.

  • Mám vytvořit softwarovou vrstvu, která by dokázala brát moje sériová data a Windows by je načetly jako vstup HID?

Ani to nemusíte dělat, a je to vlastně velmi špatný nápad z mnoha 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 spoustu nového kódu; čí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í vstupu 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 trochu se bojíme 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ůj arduinoding a firmware flash:

POZNÁMKA: Neexistuje žádná šance ' zdě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 to můžete obnovit pomocí jiného Arduina nebo programátora Atmel pomocí 6 pinů vedle USB konektoru.

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

Děkujeme za všechny užitečné informace a nakonec jsme toho dosáhli.
Správný způsob, jak zdědit AVR, je přepětí / přepětí. Pak to bude opékané ...
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 skáče po místnosti ;-)
Jak uvolnit konkrétní klíč? Chci emulovat klíč HOLD a poté uvolnit. A také v odkazu jde znak do pole [2], zatímco tady jde do [1]. Proč?
jak je ukázáno v mém příkladu, uděláte to ve dvou krocích, nejprve stisknete klávesu, pak dojde ke zpoždění a pak ji uvolníte. Pak byste se měli naučit, jak implementace hardwarové klávesnice funguje, je to trochu 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, pošlete nový komentář ☺
Jen aby bylo jasno. Tato schopnost závisí na Atmega16u2, takže např. to není možné s Arduino nano?
user3486
2014-08-07 07:13:24 UTC
view on stackexchange narkive permalink

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

Vítejte v Arduino SE! Můžete přidat něco o tom, jak používat vaši knihovnu? Dík!
Přečtěte si soubor readme a vyzkoušejte příklady? Je to všechno tam, není třeba tu všechno napodobovat. Všechno na Githubu je aktuální :)
Omlouváme se, kámo, vypadá to jako skvělá knihovna, ale vaše dokumentace chybí. Pokud vím, neexistují žádné skutečné pokyny k instalaci a celá témata na vaší wiki říkají „TODO“ (konkrétně téma gamepadu je takto úplně 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í.


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...