V-USBでHIDデバイスV-USBを使ってAVRでHIDマウスにしてAndroidに接続してみました.詳細は以下の通り. ----------------------------- Androidタブレットとマイコンを接続使用と思ってもUSB-シリアルはドライバが 簡単に見つからず,標準で入ってるHIDを使って接続する手段を調べていたら, 前にArduinoに使ったV-USBはHIDにも使えるのが分かったので早速実験. 以下のURLから vusb-20100715.zip というファイルを持ってきた. http://www.obdev.at/products/vusb/download.html examples 内に hid-data (Datastore) と hid-mouse (マウス) などがある. これらのフォルダ内のfirmware 内のファイルをusudrvフォルダ内のファイルを 使ってビルドしないといけない. makefileがあるが,それを使わずAVRStudioで以下の手順でビルドした. 1)usbdrv内のファイルを全部選び,ビルドしたいexamplesのどれかの firmwareのフォルダ内にコピー 2)プロジェクトウィザードで新規プロジェクト作成. 3) AVR GCCで を選び,examplesのどれかのフォルダを選び, create inital file のチェックを外して,適当にプロジェクト名をつけ, 次へ.シミュレータとAVRの種類(168P)を選んでフィニッシュ. 4)source files 上で右クリック,add existing source files で firmware 内の ソースファイルを全部追加. 5)header files も同様に全部追加. 6)project -> option でatmega168P を選択,クロックは16000000Hzとしてビルド. 7)default フォルダ内のhexファイルをAtmega168Pに書き込み. 8)ヒューズビットの設定は,makefileに書いてある. high: DE, low: DF (Ext: FB) 次にatmega168Pをブレッドボードに挿して,電源,GND,抵抗,白LED, 16M Hzクロック,USBケーブルで回路を作成. PCに接続するとHIDとして認識される. ![]() Androidタブレットに挿し,terminal emulatorでdmesgにより HIDとして認識されていることを確認. ![]() hid-dataはdatastoreデバイスとして認識, hid-mouse はマウスとして認識される.マウスの場合は 画面上の外周をカーソルがくるくる回るプログラムが入っている. でも,マウスというからには自在に動かせないと・・・ サンプルを書き換えて,自在に(といってもゆっくりですが)動くようにしました. あと,左クリックも. ![]() 上下左右に動いてダブルクリックでテキストが開くV-USB HIDマウスの動画 書き換えたのは,以下を追加. void initIO(void){ DDRB &=0xc0; // PB0-3を入力に設定 PORTB |=0x3f; // PB0-3をプルアップ } void Mytest(void){ if ((PINB & 0x04)==0) reportBuffer.dx=1; // PB2 カーソル右へ if ((PINB & 0x08)==0) reportBuffer.dx=-1; // PB3 カーソル左へ if ((PINB & 0x0c)==0x0c) reportBuffer.dx=0; // if ((PINB & 0x10)==0) reportBuffer.dy=1; // PB4 カーソル下へ if ((PINB & 0x20)==0) reportBuffer.dy=-1; // PB5 カーソル上へ if ((PINB & 0x30)==0x30) reportBuffer.dy=0; // // PB2を0にしたときクリック // buttonMask= 右クリック:1,左クリック:2 if ((PINB & 0x02)==0) reportBuffer.buttonMask=1; else reportBuffer.buttonMask=0; } main の中に, initIO(); を追加. main の中の次の関数をコメント-> //advanceCircleByFixedAngle(); main の中に, Mytest(); を追加してビルド,AVR荷書き込み. ----追記----------- キーボードを作ってみました. HIDKeys - An Example USB HID のサイトからサンプルをダウンロード http://www.obdev.at/products/vusb/hidkeys.html HIDKeys.2007-03-29.zip サンプルは,ATmega8用だったので,atmega168P用に修正 ビルドして16MHzのクロックで動作させると, なにもしない状態で:Q PB0をLにして:A PB1をLにして:B PB2をLにして:C PB3をLにして:D になりました.ケーブルを外すとシフトキーが押されたままの状態になっていたので, キーボードからシフトを1回押すと元に復帰. ![]() AVRによるV-USBを使ったHIDキーボードの動画 ----追記----------- V-USBのexamleの中にcustom-classというのがあったので,やってみました. LEDをピカピカするだけのようですが,プログラムを読んでもいまひとつ分かりません. 取りあえず, firmwareの中のmainをusbdrvフォルダの中のファイル一式を使ってビルド. LEDの設定は0番から1番へ書き換え.atmega168Pに書込み. 前にインストールしたcygwinにUSB関連のツールをusbで検索,追加インストール.commandlineの中Makefileを読むと,Windowsの場合は3行コメントを付け替えて修正が 必要だったので修正してmakeしてset-led.exeを作成. 写真のようにブレッドボードにAVRを載せて,LEDを挿し,PCのコマンドラインまたはCygwinから set-led on でLED点灯 set-led off でLED消灯 set-led status で点灯状態を確認 できました. ![]() 広告↓ ![]() TVで話題の iPed!? 超激安Androidタブレット「EKEN M001」 |