2011年8月30日 星期二

HID Report Descriptor 教學#2

這篇是我讀 frank "USnooBie’s USB HID Report Descriptor Tutorial 1" 一文而寫的筆記,在此我要感謝 frank 的慷慨分享。

mouse 範例

我們將製作一個含有 3 個按鈕和 X, Y 軸移動 (movements) 的標準滑鼠。也就是說,我們要送按鈕跟 X, Y 軸移動的資料給 host。這會需要:一個 bit 代表一個按鈕,一個 byte 代表一個座標軸的移動,移動值是有符號的整數 (signed integer)。所以,我們需要像這樣的資料結構:

  Bit 3-7 Bit 2 Bit 1 Bit 0
Byte 0 Padding Bits Left Button Middle Button Right Button
Byte 1 8 bit signed relative coordinate x
Byte 2 8 bit signed relative coordinate Y

在 C 語言中資料結構會是這樣:

在我們的 report descriptor 中,首先定義按鈕,總共 3 個按鈕:

按鈕狀態不是 0 就是 1:

3 個按鈕總共 3 個位元:

這個是要送給 host 的變數資料:

得到的結果為:

這些代表按鈕。

2011年8月29日 星期一

HID Report Descriptor 教學#1

什麼是 HID Report Descriptor?

HID report descriptor 的用途是定義 reports 的資料格式與使用目的,包括:device 支援多少個 reports, report 的大小,還有 report 中每個 byte 與 bit 的用途。例如,如果是 mouse device,資料會是 mouse movements (滑鼠的移動) 與 button clicks (滑鼠按鍵動作) ;如果是鍵盤,資料會是 keystrokes (按鍵), modifiers (組合鍵或稱輔助鍵) 與 LED Indicators (指示燈) 的輸出狀態。所以,application 只要解讀 report descriptors 便可以知道 report 中的資料是做何種操控 (control) 之用。

HID report descriptor 可以包含多個 reports,而 report 的種類可以分成三種:Input, Output 與 Feature reports。Host 會用 Input report 收資料、用 Output report 送資料,而 Feature report 則是雙向的。

HID 文件

http://www.usb.org/developers/hidpage/ 這個頁面中有很多 HID 相關的文件,其中,底下這兩份文件比較重要,是學習 HID 必讀的文件:

HID descriptor tool

同一個頁面上有一支工具,叫做 HID descriptor tool:

這支工具可以用來幫助你產生 report descriptor,是每個寫 report descriptor 的工程師必備的,因為自行翻閱 HID Usage Tables 查表對應代碼以純手工的方式寫 report descriptor 是很累的一件事,用這支工具會省下不少工夫。

2011年8月28日 星期日

Arduino 的唸法與意義

每個剛接觸 Arduino 的人都會有的一個疑問,就是「Arduino 要怎麼唸?」。很簡單,用聽的比較快,在 http://arduino.cc/en/Main/ArduinoBoardDuemilanove 這個頁面下方有一些錄音檔,不如自己下載個音訊來聽聽看就知道了。錄音檔聲音有點小,記得把喇吧音量調大一些。

那麼 Arduino 的意義是什麼?據說 Arduino 是取自 11 世紀義大利一個國王的名字,這個說法是否正確,或是那位義大利國王有什麼偉大的事蹟,我不曉得,現在也不感興趣。Arduino 共同創辦人 David Cuartielles 今年擔任 COSCUP 2011 開幕 Keynote Speaker,他在演講中表示,Arduino 代表著四件事情:

  1. An open source hardware prototyping platform, an I/O board
  2. A software IDE
  3. An education methodology
  4. Community, Community and Community!

在提到第四點時,David Cuartielles 特別加強了語氣,可見 David 一定認為 Community 是 Arduino 最重要的一件事。的確,網路上有無數 Arduino 的應用分享與教學資源,各個社群也都很活躍,只要你懂得發問,不管遇到什麼疑難雜症,網友都會很熱心幫忙,玩 Arduino 將近一年的時間,我從中獲得不少知識。我想,分享、接觸與互動 --- 這三點應該是最足以代表 Arduino 的精神吧!

2011年8月27日 星期六

EasyTransfer over XBee Wireles Communication

簡介

EasyTransfer Library 也可以用在 XBee 無線通訊上,這篇將說明如何辦到。你需要兩組 Arduino + XBee 設備,以及 XBee 的設定軟體 X-CTU

image
▲ Arduino, XBee Shield 與 XBee module 的合體,你需要兩組這樣的設備

設定 XBee modules

參考「Arduino and XBee Series 2」這篇,把 function set 為 "ZIGBEE COORDINATOR AT" 的韌體寫入到要當 coordinator 的 XBee module,把 function set 為 "ZIGBEE END DEVICE AT" 的韌體寫入到要當 End device 的 XBee module。參數全部使用預設值即可,不用修改。

image
▲ Coordinator 使用 "ZIGBEE COODIRNATOR AT" function set

image
▲ End device 使用 "ZIGBEE END DEVICE AT" function set

2011年8月26日 星期五

EasyTransfer Library for Arduino

簡介

image

EasyTransfer 是一個可以讓 Arduino 跟 Arduino 彼此通訊的 Library,它既簡單又好用,會自動將使用者的資料封裝成一個封包並透過 Serial 傳遞。

安裝

EasyTransfer Library 可以在底下的連結中取得:

http://www.billporter.info/easytransfer-arduino-library/

把檔案解壓縮並放到 Arduino Sketchbook Folder 的 Libraries 資料夾底下,或是放到 Arduino IDE 的 libraries 資料夾底下即可。

使用範例

要使用這個 Library,只要定義好你要的資料結構:

然後像底下這樣初始化 Library,告訴 EasyTransfer 所用的資料結構與 Serial port:

2011年8月25日 星期四

V-USB 簡介

什麼是 V-USB ?

V-USB 是一個專門為 Atmel AVR microcontrollers 設計相容於 USB 1.1 的純軟體低速 USB device (software-only implementation of a low-speed USB device ),它讓開發者能夠用幾乎任何 AVR microcontroller 建立 USB 硬體。

V-USB 可以採用 GNU GPL (General Public License) 授權或者是用商業授權。

官網提供很充份的範例,示範廣泛的可能的應用。

特色

底下是 V-USB 的特色:

  • 完全與 USB 1.1 低速設備相容,通訊錯誤的處理與電氣規範除外。
  • 支援多重 endpoints: 1 個 control endpoint, 2 個 interrupt/bulk-in endpoints 與最多 7 個 interrupt/bulk-out endpoints (USB 標準禁止低速裝置使用 Bulk endpoints)
  • 傳輸量預設最多 254 bytes,需要更多可在設定選項中調整
  • 提供免費使用的 USB identifiers (Vendor-ID 與 Product ID)
  • 可在硬體最低需求為 2 kB Flash, 128 bytes RAM, 12 MHz 時脈的任何 AVR microcontroller 上跑
  • 可使用 12 MHz, 15 MHz, 16 MHz 或 20 MHz 振盪晶體或者 12.8 MHz 或 16.5 MHz 的內部 RC 振盪器  
下載

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

2011年8月16日 星期二

2011 arduino bof

轉載自: http://www.openlabtaipei.org/2011/08/2011-arduino-bof.html

 

哈囉各位,
Openlab.Taipei 今年在 COSCUP 中舉辦Arduino BoF 聚會,今年有Arduino 與OT貼紙、小禮物、食物大放送!
不管是OT好朋友、arduino粉絲,一起來啃披薩、看影片聊聊阿都若。
有圖有真相!

COSCUP 特產 Pizza 塔!!


費用:$0
地點:台北市南港區 中央研究院 人文社會科學館 (院區圖中的 #24)
日期:8/20 (六)
時間:18:15 ~ 21:00


報名方式:
請按 BoF 2011 @ COSCUP Wiki 最下方的 [Edit] 把你的暱稱放在 Arduino 後的參加人員列表裡,這樣就算報名完成囉!


感謝:
COSCUP
Make:Taiwan
藝科資訊

2011年8月4日 星期四

XBee Light Sensor

在這篇裏,我們將用 XBee 製作一個 Zigbee 無線 Light Sensor。

image

你需要這些材料:

  • 光敏電阻 (photocell) x 1
  • 10k 歐姆電阻 x 1
  • Arduino x 2
  • XBee Shield and XBee module x 2

我們將採集光敏電阻的讀值,讓 End Device 透過 Zigbee 無線通訊把資料傳給 coordinator,然後透過 USB 把 coordinator 跟電腦接在一起,這樣電腦便可以收集光敏電阻的讀值。coordinator 與電腦的連接方法有兩個,一個是使用 sparkfun XBee Explorer USB 轉板:

image
XBee Explorer USB

Arduino 作品影片募集

轉貼網址:http://www.openlabtaipei.org/2011/07/arduino.html

哈囉,大家好,
今年應該是 arduino 最轟動的一年,
自從google 宣佈android 採用arduino 來作為互動連結後,
到今年八月中,arduino 創辦人之一的David 即將來台演講
這些事件的宣佈都讓 arduino 愛好者為之振奮,
因此 Openlab.Taipei 有個計畫,想邀請有興趣的創作者來一起參與,
之前我們在與 David 溝通來台事宜的書信中,
他非常關心當地使用者和學校教育中的發展,
所以我們想跟大家募集您使用 arduino 所創作的作品影片記錄,
我們會將這些作品整理成一份完整光碟,內容包含:
作品影片
創作者聯絡名單

藉此機會讓他與台灣優秀的創作者交流,
也希望透過他在世界各地演講的時候,能將台灣的優秀作品與這個世界分享,
影片同時也會在第一天晚上的聚會發表,會與 arduino 紀錄片一起播放,
讓對 arduino 有興趣的人看看這些有趣的作品。


有興趣的朋友,請填好下面的表格,並將你最酷的作品影片傳給我們。
由於我們人手不多,如果你能自己先做好片頭,我們會很感謝你。內容希望能有:

  • 作品名稱。
  • 作者。
  • 作品敘述。
  • 可列出你所使用的 arduino 版本,感應器、其他軟硬體等。

整個片長請維持在十分鐘以內。
使用 mov 檔案格式。
以及填好這份表格,讓我們可以聯絡到你。


最重要、最重要的是,除了準備作品影片之外,希望大家能在 8/20 當天晚上(18:15~21:00)也一起來共玩,
在中央研究院人文社會科學館 國際會議廳(台北市南港區研究院路二段128號)聚聚,聊聊 arduino 。

收件截止日期為 2011/08/19
郵寄請寄到台北市汀洲路三段 230 巷 53 號 2 樓
或是你有 dropbox, rapidshare 等網路硬碟以及 vimeo,把連結傳送給我們來下載你的作品影片記錄。
有任何問題,請來信

honkiaa@gmail.com
或是來電

0939958808

2011年8月3日 星期三

Arduino and XBee Series 2

Arduino XBee shield 可以讓 Arduino 板子透過 Zigbee 進行無線通訊,這篇將簡單介紹 XBee Series 2 的設定與使用方法。你需要兩片 Arduino,兩片 XBee Shield,兩個 XBee Series 2 modules,以及 XBee 的設定軟體 X-CTU

image

設定 XBee modules

1) 首先取下 Arduino 板子上的 ATmega 晶片

image