USB シリアル (mbed)


20140311usb_mbed

Android から USB シリアルで通信します。
USB シリアル機器には、 mbed を使います。

ソースコードは Google Code に置いています。

mbed の USB インタフェースは下記のとおりです。

VendorId : 3368
ProductId : 516

Interface 0
	Class : Mass Storage Devices Class
	Subclass : SCSI transparent command set
	Protocol : BBB Bulk-Only
Endpoint 130
	Direction : IN - device to host
	Transfer Type : Bulk
Endpoint 2
	Direction : OUT - host to device
	Transfer Type : Bulk

Interface 1
	Class : CDC (Communications Device Class)
	Subclass : ACM (Abstract Control Model)
	Protocol : AT Commands: V.250 etc
Endpoint 129
	Direction : IN - device to host
	Transfer Type : Interrupt

Interface 2
	Class : CDC (Communications Device Class) Data
	Subclass : Data Interface
Endpoint 133
	Direction : IN - device to host
	Transfer Type : Bulk
Endpoint 5
	Direction : OUT - host to device
	Transfer Type : Bulk

Arduino Uno と 同じコード では、うまくいかなった。
controlTransfer が失敗して、ボーレートの変更ができませんでした。
原因は、controlTransfer の index が 0 固定だったためです。
参考にしたコードは、どれもそうなっていたので。

Arduino Uno では、CDC ACM は、Interface 0 ですが。
mbed では、Interface 1 です。
そこで、CDC ACM の Interface 番号を取得して、controlTransfer の index に使用しました。

注記
index = Interface 番号というは、いまひとつ確信がないのですが。
USB の仕様には Interface を特定するものという記述があります。

参考
USB Control Transfers


m3pi を注文した


m3pi は ARM の展示会でたびたび見かけるロボットです。
調べてみると、個人でも購入できるようです。
mbed はすでに持っているので、Robot のパーツを注文しました。
ついでに、拡張基板と、AVRライターも。
発送方法は、かんぱぱさんに倣って Fedex にしました。

Pololu m3pi Robot with mbed Socket : $149.95
3pi Expansion Kit with Cutouts : $11.95
Pololu USB AVR Programmer : $19.95
FedEx International Economy : $36.95
計 $218.80

関連
m3pi が届いた

参考
Pololu 3pi robotをオーダーしました
m3piを作ってみよう