Arduino + USBホストシールド で ADK を試す(その3)

公開日: 電子工作 | , , , ,

Arduino + USBホストシールド で ADK を試す(その1)」では、Android上のアプリの説明
Arduino + USBホストシールド で ADK を試す(その2)」では、Arduino+USBホストシールドを使ったハードウェアの説明をしました。

で、今回は、Arduinoに書き込むプログラムの説明をして、最後にしたいと思います。

 

と、その前に、実際に動いているところの動画をアップしてみました。

動画内では、ボタンを押してスイッチのチェック、手をかざして明るさセンサーのチェック、スライダーを使ってLED1~3の調光テストを、しています。 

 

開発環境

Arduinoにプログラムを書き込む為には、Arduinoの開発環境をPCにインストールしておかなくてはいけません。

Arduino の開発環境はこちらでダウンロードできます。

http://arduino.cc/en/Main/Software

最新のArduino 0022をダウンロード&インストールしておきましょう。

 

参考)http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/arduino_inst.htm
Arduinoの接続するポート番号も、同時にチェックしておいて下さい。
 

 

ソース

ADKのソースは、Android Developersの Android Open Accessory Development Kit ページからダウンロードできます。 最初の方にある、ADK package downloadと言うリンクがそれです。

ダウンロードした中には、ADKのソースの他、Androidで動かすデモアプリ、ハードウェアの回路図なんかも含まれています。ADK関連の物が一式詰まっています。

ダウンロードしたパッケージは、適当な場所に展開しておきます。

 

パッケージに含まれているADKのソースは、Arduino MEGAベースで作られた物なので、当然ながら、そのままではArduino Duemilanove では動きませんので、対応手順を示します。

 

まず、ライブラリー

パッケージ内のフォルダ

ADK_release_0506 firmware arduino_libs

には、AndroidAccessory USB_Host_Shield の2つのフォルダ(ライブラリ)が入っています。

adk_cap5

この2つを、そのままArduino 0022のライブラリフォルダーにコピーします。

adk_cap7

Arduino 0022のライブラリフォルダーは、Arduino 0022をインストールした時のフォルダの中の libraries です。

例)僕の場合、C: Program Files2 arduino-0022 libraries

 

で、 USB_Host_Shield のライブラリは、以下の3つのファイルを

  • Max3421e.cpp
  • Max3421e.h
  • Max3421e_constants.h

こちらの felis / USB_Host_Shield で公開されているファイルに置き換えます。

 

※ オリジナルUSBホストシールドのプロジェクト(Circuits@Home)で USB_Host_Shield ライブラリのADK対応バージョンが公開されたようです。

3つのファイルだけで無く、こちらの https://github.com/felis/USB_Host_Shield/tree/dev で公開されているファイル全てを、 USB_Host_Shield フォルダーにコピーすればOKです。

詳細は Andriod ADK-compatible USB Host Library release. で説明されています。

 

あと、Sparkfunの旧USBホストシールドを使う場合は、Max3421e_constants.h 内の MAX_GPX と MAX_RESET の番号(7と8)を入れ替える必要があるようです。

ライブラリの準備は、これで終了です。 

 

次は、Arduinoのスケッチ

Arduinoでは、ソースのことをスケッチと言ったりします。
Arudinoのスケッチは

ADK_release_0506 firmware demokit

に、入っている、demokit.pdeと言うファイルですが、修正箇所は多すぎて書ききれないので、変更後のファイルを公開しておきます。
ダウンロードして適当な場所に保存しておいてください。
ちなみに、修正箇所は、// でコメントアウトしている部分の殆どです。

修正版 demokit.pde のダウンロード

 

 

コンパイル~書き込み

Arduino 0022 を起動して、[File]→[Open]で先ほどダウンロードしたスケッチファイル demokit.pde を開きます。

arduino0022

次に、[Tools]→[Board]→[Arduino Duemilanove or Nano w/ ATmega328]

として、Arduinoのボードを指定します。(UNOの場合は、UNOを選択)

arduino0022 ボード指定

続いて、[Tools]→[Serial Port]

で、Arduinoの接続ポートを指定します。

arduino0022 接続ポート指定

 

 そして、アップロードボタンをクリックすれば、自動でスケッチがビルドされて、Arduinoへの書き込みが始まります。

arduino0022 Upload Button

 

書き込みが終了するまで、数秒間待ちます。
書き込み中は、画面下に、Uploading to I/O board… と出ています。

画面下に、Done uploading. と出れば書き込み終了です。

arduino0022 Done uploading

 

 後は、USBホストシールドのUSBコネクターに、Android端末を接続すればAndroid端末側で自動で認識してくれます。

connect

そして、この先は、記事の冒頭の動画へ・・・

 

最後に

今回試してみたのは、もともとArduino Megaベースで作られているADKのソースを、Arduino向けにちょっと変えただけの、比較的簡単な方法です。
簡単な方法ですが、やってる事(AndroidとArduinoの通信)は本物のADKと同じです。

Android Open Accesorry に興味が有ってさわってみたいけど、本物のADKは高すぎて手が出ないと言う人は、是非Arduino + USBホストシールドを使ってお試し下さい。 これは、お勧めの方法だとおもいます。

 

Wifi、Bluetooth、NFC、そしてUSBと、外部機器と接続の選択肢が多い Android端末。
さて、これを使って何を作りましょうか?

 

関連記事

no image

米粒AVR(ATtiny10)

通称「米粒AVR」で知られるTiny10を使ってみたくて、秋月の通販で買ってみました。 超小型

記事を読む

no image

Android + Bluetoothドングル + PIC24F

@hrdakinori さんと言う方が、PIC24FとBluetoothドングルを使って、Andro

記事を読む

米粒AVT(tiny10) リモコンレシーバー

米粒AVRでリモコン受信処理

  米粒AVR(Tiny10)で赤外線リモコンを受信して処理をするサンプルを作ってみまし

記事を読む

sdcards

Raspberry Pi SDカードのクラスと起動速度

SDカードにOSをインストールするので、起動にはそれなりに時間がかかります。 では、どれくらい

記事を読む

no image

PICでMicroBridgeをやってみた

今回は、@yishiiさんが公開されている、PIC24FJ64GB002用のMicroBridgeソ

記事を読む

no image

Wimeji Client for Arduino

前回紹介したWimeji Client for WindowsXPをArduinoでやってみました。

記事を読む

no image

USBホストケーブルとUSBケーブルの違い

USBホストケーブル(OTGケーブル)と普通のUSBケーブルの違いは、USBホストケーブルとして振る

記事を読む

no image

Android+Arduinoでリモコン3 その2(AndroidAccessory接続)

何度か、Android+リモコンのネタを書いたことがあるのですが、今回はAndroid Access

記事を読む

Androidで気圧高度計

androidで気圧・高度計(LPS331AP使用)

Androidと大気圧センサー(LPS331AP)をイヤフォンジャックで繋いで気圧と高度、ついで

記事を読む

no image

Android + Arduino でリモコン2 (softmodem接続)

以前、LAN接続のリモコン Android + Arduino でリモコン と言うものを作ったのです

記事を読む

Arduinoで温湿度データロガー
Arduinoで温湿度計 #2

今回は、前回作った温湿度計にRTCモジュールとSDカードアダプタを

Arduinoで温湿度計
Arduinoで温湿度計

秋月電子の温湿度モジュールを使って、温湿度計を作ってみました。 以前

SDカード・マイクロSDカード
ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduin

秋月電子 リアルタイムクロック(RTC)モジュール
秋月のリアルタイムクロック(RTC)モジュール

今回は秋月電子のI2C接続のリアルタイムクロック(RTC)モジュールを

秋月電子 キャラクタLCD
秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、

PAGE TOP ↑