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の動作周波数

  米粒AVR(ATtiny10)のデフォルトでは内臓発振器利用の1MHzが指定されてい

記事を読む

no image

SoundIRModemライブラリのサンプル

 SoundIRModemライブラリは、米粒AVR(Tiny10)とAndroid端末をイ

記事を読む

no image

米粒AVRでシリアル通信(ただし送信だけ)

米粒AVR(ATtiny10)にUART機能は搭載されていないので、シリアル通信を行う為には自前

記事を読む

no image

Android + Bluetooth + Arduino

 以前書いた『気になる物』で紹介したBluetoothモジュールですが、本当に気になって実

記事を読む

raspi-colortest

Raspbianの起動

Raspbianの起動画面をキャプチャしてみた。 SDカードにイメージを書き込んだままのデフォ

記事を読む

no image

Androidで一眼レフカメラのシャッターを制御する(MicroBridge接続)

以前書いた、Androidで一眼レフカメラのシャッターを制御するでは、AndroidとArduino

記事を読む

no image

米粒AVR(ATtiny10)

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

記事を読む

Raspberry Pi ロゴマーク

Raspberry Piのリビジョン

リビジョンの種類 現在、Rapsberry Piにはリビジョン1とリビジョン2と呼ばれる2つの

記事を読む

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

ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduinoでも比較的簡単にSDカードを

記事を読む

raspi-config

Raspbianの最初の設定

  Raspbianのインストール後にraspi-configを使って行う最初の設定

記事を読む

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

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

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

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

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

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

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

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

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

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

PAGE TOP ↑