2011年9月15日 星期四

V-USB hid-mouse

HID-Mouse 是 V-USB 提供的一個範例,它實作了一個很簡單的滑鼠裝置。這個範例示範 HID device 的實作。

因為現在大部份作業系統都有內建 USB 滑鼠驅動程式,所以跑 HID-Mouse 不需要安裝驅動程式。

下載

HID-Mouse 包在 V-USB 套件裏:

http://www.obdev.at/products/vusb/download.html

硬體電路

基本上,HID-Mouse 可以用在所有 V-USB 支援的電路上。底下是一個參考電路,由於 USB D+ 和 D- 用 3.3V 的電壓,因此在 D+ 和 D- 上使用稽納二極體 (Zener diodes)。你必須確保 D- 準位在 2.5V 與 3.6V 之間。

image_thumb13

韌體調整

● usbconfig.h:


定義所用的 D+ 和 D- data lines 腳位。必須根據你的硬體調整 USB_CFG_IOPORTNAME, USB_CFG_DMINUS_BIT 和 USB_CFG_DPLUS_BIT。其它不需要改變。

● Makefile:


定義所用的 MCU 以及時脈頻率。必須根據你的硬體調整 DEVICE 和 F_CPU。

編譯與執行

Hid-mouse 在 "vusb-xxxx/examples/hid-mouse" 資料夾裏。

下指令編譯韌體,你會需要 WinAVR:

cd examples/hid-mouse/firmware 
make hex

接著把韌體燒錄到板子上,讓裝置重新上電,然後你就會看到電腦畫面上的滑鼠指標會自己移動。

延伸閱讀

8 意見:

CC 提到...

您好:
我看到您這篇文章很有興趣,想請教如何把v-usb裡HID Keyboard的範例應用在arduino上,我參考了 Virtual USB Keyboard 這篇文章
http://www.practicalarduino.com/projects/virtual-usb-keyboard

做了板子,並將VirtualUsbKeyboard裝到arduino uno上,但並沒有看到任何usb鍵盤出現,想跟您請教arduino上要模擬鍵盤滑鼠輸入,有什麼好的方法,或是用其它微控制器,我主要是要用來進去電腦bios所使用的。

coopermaa 提到...

您好,我是照我寫的這篇的電路做了板子,只用到 PD2 跟 PD4 這兩支腳,http://www.practicalarduino.com/projects/virtual-usb-keyboard 這篇好像還多靠一支腳 (PD5) 去接 pull-up resistor,跟我接法不大一樣。

那你有沒有在 Arduino 板子跑 hid-mouse 程式?可以動嗎?

CC 提到...

你好:
我後來有看到這篇的做法,http://hunt.net.nz/users/darran/weblog/b3029/Arduino_UNO_Keyboard_HID_version_03.html\
所以我猜測可能要更換Bootloader才能在arduino uno上使用。

coopermaa 提到...

Arduino UNO 硬體上的 ATMEGA8U2 這顆 MCU 有支援 USB,跟 V-USB 這個 pure software USB 不太一樣喔。
如果你用的是 UNO 的板子,也許直接用該網頁的程式會比較容易。
謝謝你提供的資訊。

不過,其實玩玩 V-USB 也不錯。我現在是用 Arduino Duemilanove 在跑 V-USB。現在 V-USB 附的四個 samples 都可以跑了。我下一步打算來試那個 V-USB for Arduino。這樣以後就可以直接用 Arduino IDE 寫 V-USB 的程式了。

CC 提到...

感謝您的指教回覆,我大概膫解我的方向應該是要使用V-USB for Arduino的方式才有機會跟我舊的程式有機會合併在一起。

coopermaa 提到...

不客氣。我也正在玩 V-USB for Arduino,歡迎常來,一起切磋交流啊。你說你想做 HID Keyboard,有打算做什麼應用嗎?

CC 提到...

我想利用網路接到資料後再用鍵盤一樣控制電腦,我還想要在開機時可以選擇用哪一顆硬碟或光碟開機,所以我想要控制Bios,我有看到一種是用PS2鍵盤一種是USB鍵盤,再來還需要找一個CCD去或是vga去做圖片監控,這只是單純我想控制電腦的興趣。我也很快樂能夠遇到有相同興趣的人在一起討論。

coopermaa 提到...

Hi CC, Arduino UNO 的 USB Keyboard 我已經研究出來了,可以參考我最近寫的幾篇文章:
http://coopermaa2nd.blogspot.com/2011/11/arduino-uno-keyboard.html
http://coopermaa2nd.blogspot.com/2011/11/send-keystroke.html
http://coopermaa2nd.blogspot.com/2011/11/blog-post.html
http://coopermaa2nd.blogspot.com/2011/11/usbkeyboard-library.html