HOME > V-USBでHIDデバイス

 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として認識される.

CIMG1930.JPG

Androidタブレットに挿し,terminal emulatorで dmesgによりHIDとして認識されていることを確認.
CIMG1933.JPG

hid-dataはdatastoreデバイスとして認識, hid-mouse はマウスとして認識される.マウスの場合は 画面上の外周をカーソルがくるくる回るプログラムが入っている.

でも,マウスというからには自在に動かせないと・・・
サンプルを書き換えて自在に(といってもゆっくりですが)動くようにしました. あと,左クリックも.
CIMG1948.JPG

上下左右に動いてダブルクリックでテキストが開く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回押すと元に復帰.

CIMG1956.JPG

AVRによるV-USBを使ったHIDキーボードの動画

custom-class

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 で点灯状態を確認 できました.
CIMG1950.JPG

広告↓

TVで話題の iPed!? 超激安Androidタブレット「EKEN M001」

< 前の記事へ次の記事へ >


ページトップに戻る



ESP32 Wifi Bluetooth開発ボード

Arduino Nano Every
​​
Raspberry Pi pico

FPGA XILINX Artix-7