Arduino Unoを使用してHIDデバイス(キーボードなど)を構築することは可能ですか?
現時点では、Arduinoにボタン入力があり、シリアルラインに出力があります。では、現在のファームウェアをHIDキーボードのように動作するものに変換するにはどうすればよいですか?
- 新しいウィンドウデバイスドライバを作成しますか?
- シリアルデータを取得し、WindowsにHID入力として読み取らせるソフトウェアレイヤーを作成しますか?
- 可能であれば、これを達成するためのより良い方法はありますか?
Arduino Unoを使用してHIDデバイス(キーボードなど)を構築することは可能ですか?
現時点では、Arduinoにボタン入力があり、シリアルラインに出力があります。では、現在のファームウェアをHIDキーボードのように動作するものに変換するにはどうすればよいですか?
回答:
Arduino Unoを使用してHIDデバイス(キーボードなど)を構築することは可能ですか?
はい、そうです!そして、それを行う方法についての素晴らしいチュートリアルがここにあります
現時点では、Arduinoにボタン入力があり、シリアルラインに出力があります。では、現在のファームウェアをHIDキーボードのように動作するものに変換するにはどうすればよいですか?
チュートリアルが示すように、イベントを出力するのではなく、実際にイベントをトリガーするように、ファームウェアコードを変換する必要があります。あなたがする必要があるのは、コードに追加することです:
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);
}
ここで行っていることは、メインのArduinoマイクロコントローラーイベントからシリアル回線を介して、USB通信を処理する小さなマイクロコントローラーに送信することです。そのマイクロコントローラーは、これらのキー「バッファー」を取得し、USB HIDキーボードキーがUSBを介して押すと転送します。
キーキャラクター(chr
ここのコード内)は、実際にはUSB経由で送信されるキーコードであり、USB HIDドライバーによって解釈され、キーボード用に設定した現在のレイアウトを使用して実際のキャラクターに変換されます。
このmod
文字は、キーボードにある修飾キー(shift、control、alt ...)の1つであり、修飾キーで0x00
はありません。
- 新しいウィンドウデバイスドライバを作成しますか?
いいえ、必要ありません!DFUのアップグレードにより、arduinoはWindowsからUSBキーボードとして認識されます。
- シリアルデータを取得し、WindowsにHID入力として読み取らせるソフトウェアレイヤーを作成しますか?
あなたもそれをする必要はなく、実際には多くの理由で非常に悪い考えです:
私はUnoを使用していますが、前回DFUの更新を検討したので、投稿されたものを見ていきます。
最後に、コメントで、あなたのarduinoをブロックすることに懸念を持っています。私との作者と信じてください記事あなたがいることはできませんレンガあなたのArduinoのファームウェアのフラッシュをやりました:
注:この方法を使用してデバイスを「ブリック」することはできません。Arduinoブートローダーファームウェアは、DFUプロトコルを使用していつでも更新できます!
何かが本当にひどく間違って、小さなAVR(atmega8u2)でブートローダーが破損した場合でも、USBプラグの隣の6ピンを使用して、別のarduinoまたは atmelプログラマーを使用して再フラッシュできます。
最後に、AVR、つまりArduinoをブリックする唯一の方法は、ヒューズで遊んでプログラミングヒューズをリセットすることです。さらに、HVSPを使用してデバイスを保存することも できますが、新しいチップを使用するだけで問題は少なくなります。
Arduino Bootloaderを完全に置き換えるプロジェクトを作成しました。スケッチをアップロードして、HIDとして使用できます。GithubのProject HIDを参照してください:https : //github.com/NicoHood/HID