arduinoをUSB keyboardに化けさせる

照明のdoctorMXのチェンジャーの送りのためにパソコンの下矢印を使ってるのだけど、エラーが多いというので試作品を作ってみることにしました。

作りたいのは、シーン送りをするための押し心地のいいボタンがひとつだけのもの。
二度押し防止のデバウンスを組み込み、連射は無しで、安心して使えるようにするつもりです。
ちゃんと作れたらLIVE用にも使えるだろうし。

この辺を参考に
http://www.practicalarduino.com/projects/virtual-usb-keyboard
http://d.hatena.ne.jp/kougaku-navi/20110423/1303589571
ここからファイルを落として
http://code.google.com/p/vusb-for-arduino/downloads/detail?name=vusb-for-arduino-005.zip
librariesの中味を
/Applications/Arduino.app/Contents/Resources/Java/libraries
にいれて
examplesの中味を
/Applications/Arduino.app/Contents/Resources/Java/examples/USB
を作って入れて準備ok.

サンプルプログラム(ボタンを押すと"hello world"を送り出す)
/Applications/Arduino.app/Contents/Resources/Java/libraries/UsbKeyboard/examples/UsbKeyboardDemo1/UsbKeyboardDemo1.pde
を実行するべく、必要なハードウェア(usb周りとスイッチ)を作っていきました。

出来たのがこちら。

手元に3.6v 0.5wのツェナーダイオードがなかったので、ジャンクの青色LEDを入れてみました。順電圧たしか3.5v位だったような。勿論ツェナーとは逆向きで。

信号電圧が2.9vくらいで低いんだけどなんとか動くようです。

時々止まる。arduinoのリセットボタンを押すと、また動き出す。

iPadのメモ帳にhellow worldを大量に書き出して何か楽しい。

macbookにつなぐと不明のキーボードとなって「あのキーはどこ?押して」と聞いてくるので、このままではだめでした。
聞いてこないように何か名乗ればいいのか?
いちいち答えられるようにすればいいのか?

おいおい調べながら作っていこうと思います。

コメント

  1. 初めまして。

    ワタシもUSBコネクタをarduinoに接続して、
    PCにキーボード入力を送りたいのですが、
    USBホストシールドを購入しなくても、できるのでしょうか。

    みたところ、基板取付用USBコネクタをつけただけのようですが、
    こちらとarduinoの接続はどのようにして行っているのでしょうか。

    お手数ですが、回路など教えていただきたいです。
    よろしくお願いします。

    返信削除
  2. 匿名さん ようこそ。

    USBホストシールドはいらないと思います。arduinoにマウス等つなぐものらしいので。

    このコネクタは職場に落ちていたプリンタからもぎ取ったものです。
    続きの記事の中では、ちゃんと買ってきたコネクタと基板でやってますので、そちらもご覧下さい。

    接続は記事中にもありますが、

    http://www.practicalarduino.com/projects/virtual-usb-keyboard
     抵抗値はここを参考にしています。
    http://d.hatena.ne.jp/kougaku-navi/20110423/1303589571
     日本語で解りやすい。抵抗値は微妙に違いますがこっちでもいいのかも。

    です。あと、スイッチをD12-GND間に入れてます。

    次の記事でも触れていますが、ダウンロードして登録したUsbKeyboard.hには全てのキーが登録されているわけではないので、場合によっては書き換えが必要です。
    今回は下矢印を使いたかったのですが、矢印は左しか登録されておらず、上下左右矢印を使えるよう書き加えました。

    返信削除
  3. あ、そのままでもアルファベット、数字、f1~f12とshift,option,control,gui(command or windows?)は使えるようです。

    書き換えろ的に書いてあったのでそうしたんですけど、自分も含め慣れてない人にはライブラリを書き換えるのは、どうも敷居が高いと感じます。

    一案としては、ライブラリは書き換えず、キーボードに割り振られている数字を調べてそのまま使うとか。
    http://www.usb.org/developers/devclass_docs/Hut1_12v2.pdf
    の10章を見ろ、だそうです。

    UsbKeyboard.sendKeyStroke(KEY_ARROW_DOWN);

    とやったけど、

    UsbKeyboard.sendKeyStroke(81);

    でいいんですよね、確か。

    今更ですが。

    返信削除

コメントを投稿