Arduino Uno ではじめる ADK


Arduino Uno は Arduino シリーズの中で、もっとも標準的なボードです。


ATmega328p をメインのMPUに、USB シリアル変換用にATmega16u2 (バージョンによってはATmega8u2 仕様もあり) を搭載しています。

ADK/ADB に必要な USBホストの機能はありません。そのため、ホスト機能を追加するシールド(拡張ボード)が必要です。


Arduino の種類の確認
 本ページではArduino Uno を対象としています。Arduino Uno は細かな改版があり、2012年5月現在 R1、R2、R3の3つのバージョンがあります。どのモデルでも問題ありません。

 Uno 以前の Arduino (2009:Duemilanova, 2008:Diecimila) の場合、ATmega328p 仕様のものであれば使用で可能です。ATmega168 仕様の場合はメモリ不足のため使用できません。

お手持ちのArduino がATmega168 仕様の場合「ブートローダ書き込み済みのATmega328p」に換装して使用することも可能です。
こちらに変更した場合は Tools > Board で Arduino Uno を選択
こちらに変更した場合は Tools > Board で Arduino Duemilanove w/ ATmega328 を選択


USB Host Shield の種類
 ここでは入手の容易な Sparkfun のUSB Host Shield を使用します。このボードはメーカー型番で
DEV-09947 とDEV-09628 の2種類あります。改版されて1年以上たつので、最近購入した場合はDEV-09947 だと思いますが、念のため確認して下さい。
(D7 とD8 の配線が入れ替わっているという大きな違いがあります。)



USB Host Shiled の組み立てと改造

注意:改造を行なう事で製品本来の保証を受けられなくなります。改造によって生じたトラブルについて、当サイトは一切の保証をいたしません。

組み立て
 Sparkfun USB Host Shild にはArduino と接続するための連結ピンが付属していません。
こちら、あるいは相当品が必要です。

 USB Host Shiled および、このボード用のライブラリは D7,D8,D9,D10,D11,D12,D13 を使用します。(以下の改造でD7, D8 はハード的に開放されますが、ソフト的に使用したままです。)
よって、自由に使えるのは D0-D6 と A0-A5 になります。

改造1
 USB ホストシールドは、Arduino のVin 端子から電源をとります。5V の端子をバイパスすることで、USB 端子から電源をとった場合でも動作させる事が出来ます。

 この改造を行なわない場合でも、Arduino の電源端子に規定のAC アダプタ(DC 7V〜13V) を接続すれば、正常に動作します。(ただし、接続する相手がスマートフォンの場合、充電モードに入るため、基板上のレギュレータが非常に高温になります。放熱などの対策をしたほうがよいでしょう。)



改造2
 Sparkfun のUSB Host Shield  を本家 Circuits@home のUSB Host Shield  2.0 相当にする改造です。この改造を行なうことで、USB Host Shield Library 2.0 を使用することができます。
(この改造を行なった後も、yaoadk ライブラリで問題なく使用できます。)

 上で説明しているDEV-09947 の場合、yaoadk ライブラリで使用する場合はこの改造をしなくても、問題なく動作します。
DEV-09628 の場合はこの改造をするか、D7 とD8 の入れ替えが必要です。
(ハード的に入れ替える方法とソフトウェアで入れ替える方法がありますが、この改造の方が簡単です。)




以上の改造を行なった上で、次はIDE のセットアップです。


Arduino 開発環境のセットアップ
こちら(Arduino.cc) からダウンロードします。
 インストールは圧縮ファイルを解凍するだけでOK。

Arduino 用ADKライブラリの導入
 ADK 用のライブラリは複数の亜種があり、IDE のバージョン等で互換性の問題が散見されます。
 ここでは、当勉強会のメンバーがメンテナンスをしている yaoadk を使用します。
 最新のIDE(1.0) で、ADK/ADB(Microbridge) が使用できます。

ライブラリのインストール方法
 1) こちらから、Zip でダウンロード



 2) 解凍した中身のフォルダ3つ(Adb、AndroidAccessory、USB_Host_Shield)を
  Arduino のライブラリフォルダにコピーする
   Windows の場合: Arduino IDE と同じフォルダに libraries というフォルダがある。
   Mac OSX の場合: 各自のホームフォルダの書類の中にArduino というフォルダがある。
            そこに libraries という名前のフォルダを自分で作成する。

 3) Arduino IDE を起動していた場合は、一度終了して再起動する。

ボードとPC の接続
 1) Arduino ボードとPC をUSB ケーブルで接続

 2) ドライバのインストールが必要な場合は手順に従ってインストール。
        Mac OSX では不要。Windows はdrivers フォルダの inf ファイルを指定する。

  Arduino Duemilanova など、FTDI のUSB シリアル変換を使用している場合はFTDI のドライバをインストールする。Windows の場合はFTDI のドライバもdrivers フォルダに含まれている。

インストールの際に必要なファイルが無い場合は、こちらのVCP ドライバをインストール。
  (Mac 版、Windows 版ともに 32bit 版/64bit 版があるが、2012年5月現在、
   どちらも同じファイルをダウンロードするようなので悩まなくて良い。)

       
ボードの選択
 Arduino IDE のメニュー Tools > Board > から Arduino Uno を選択。

シリアルポートの選択
 Arduino IDE のメニュー Tools > Serial Port > からポートを選択。

 Windows の場合はCOM3, COM4 というような名前になる。
 Mac OSX の場合は /dev/tty.usbmodemXXX といった名前になる。
 (/dev/tty. と/dev/cu. の2つ出るが、同じもの。)

プログラムの作成と転送


Comments