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.