平成 24 年度

電気工学科

電気・電子工学実験Ⅳ

Android ADK と Arduino に関する実験

提出日：平成 24 年 12 月 18 日（火）

実験者
土井研究室
4 番 池田 貴一 － 「Arduino の自作に関する実験」
13 番 木﨑 聡志 － 「Android とそのプログラミングについて」
34 番 森川 雄介 － 「ADK に関する実験」
36 番

藪 優佑 － 「AndroidADK アプリのプログラミング」

１．ADK に関する実験
実験者：電気工学科 5 年 34 番 森川 雄介
1.1 ADK（Accessory Development Kit）の概要
1.1.1 ADK の特徴①接続が簡単である。
②お互いを制御できる。
③すべてオープンで手に入る。

図 1-1 ADK の接続図
1.1.2 ADK の導入①ADK に必要なファイル(a)Arduino 開発環境：『arduino-1.0-windows』
http://arduino.cc/en/Main/Software(b)ADK ライブラリ：『ADK Package』
https://dl-ssl.google.com/android/adk/adk_release_0512.zip②導入方法
・(a)の ADK_release_0512¥firmware¥arduino_libs 内の『AndroidAccessory』 フォルダと『USB_Host_Shield』フォルダを、(b)の arduino¥libraries フォルダ直下にコピー・デバイスマネージャーから①の arduino-1.0¥drivers 内のドライバをインストール

1図 1-2 ファイルの移動
1.1.3 ADK ボード
Arduino ボードに Android 接続用の USB ホストシールドを搭載したものが ADK ボードとなる。

図 1-3 ADK ボードの構成
1.2 Arduino
1.2.1 Arduino の概要『マイコンボード（Arduino ボード）』AVR マイコンを中心に入出力ポートを備えた基板で構成される。

2

図 1-4 Arduino ボード『開発環境（Arduino IDE）』
C 言語に似た Arduino 言語を用いて記述される（Arduino のプログラムはスケッチと呼ばれる）。

図 1-5 Arduino IDE
1.2.2 Arduino のハードウェア例
AVR マイクロコントローラを中心にデジタル IO ピン、アナログ IN ピン、電源ピン、USB、AC アダプターなどを備える。電源ピンからは 5V、3.3V の基準電位が出力される。
USB からは PC に接続しプログラミングを書くなどのやり取りができる、また、PC に接続していないときは AC アダプターからの電源供給が必要である。図 1-6 に標準的な Arduino
である Arduino UNO について示す。

3

図 1-6 Arduino ボード例（UNO）
1.2.3 ファームウェア書き換え手順①arduino IDE を起動する②Tools > Board > ボード名を選択③Tools > Serial Port > /COM○○（名称は環境依存）を選択（ドライバ導入後、デバイスマネージャ>ポート(COM と LPT)>ボード名(COM○○)よりポートを確認）

図 1-7 デバイスマネージャ

4

1.2.4 Arduino のプログラム例①実験回路

図 1-8 実験回路

図 1-9 実際に制作した回路②プログラムの流れ
Ⅰ．可変抵抗器で 5V を分圧
Ⅱ．分圧後の電圧地に応じた値を変数に格納
Ⅲ．変数の値に応じた値を PWM 波として出力
Ⅳ．可変抵抗の値を変更することで LED の明るさを変更

5

③スケッチ
以下に制作したスケッチを示す。

図 1-10 プログラム
1.2.5 各種関数①『analogRead』
指定したアナログピンを 0～1023 の値で読み取る ことができる関数。
analogRead（pin）
pin:読みたいピンの番号
読み取り精度は基準電圧を 1024 個に分解した値からなる。

図 1-11 読み取り精度

6

②『analogWrite』
指定したピンから PWM 波としてアナログ値を出力する 関数。
analogWrite（pin,value）
pin:出力に使うピンの番号
value：デューティー比（0 から 255）

図 1-12 PWM 波③『SerialprintIn』
人が読むことのできる形式でデータをシリアルポートへ出力する関数。
Serial.println(data, format)
data: すべての整数型と String 型
format: data を変換する方法を指定

図 1-13 シリアルモニタ
7２．Android とそのプログラミングについて
実験者： 電気工学科 5 年 13 番 木﨑 聡志
2.1 目的
近年流行している携帯端末の OS、Android を利用しつつ、そのプログラミングを組むための Java 言語に対する知識を深めることを目的とする。
2.2 概要Android とは、OHA(Open Handset Alliance)が開発した携帯端末用の OS である。
Android は多様なセンサを備えたスマートフォンやタブレット型端末向けなので、様々なアプリケーションを開発することが可能である。

図 2-1 Android 端末
Android のプログラミングをするためには統合開発環境が必要であり、今回は Google が推奨している eclipse を用いる。eclipse は Java をはじめとした幾つかの言語に対応しており、今回は Java を用いた。これより Java の基本的な説明を行う。
Activity クラス
Android 開発は一画面が基本単位であり、Activity はアプリの一画面に対応する。一画面には java ファイルと xml ファイルがセットとなっており、java ファイルは動作を司り xmlファイルは画面レイアウトを司る。
図 2-2 に Activity の開始から破棄までの流れを示す。

8

図 2-2 Activity の開始から破棄までの流れ
・onCreate
Activity が最初に起動する際に呼び出される。インターフェイスの作成や、一度しか行わない初期化処理を主に書く。
・onStart
Activity が表示される直前に呼び出される。
・onResume
Activity がユーザの入力を受け取れる状態。Activity がユーザとやり取りを開始することができるようになる直前に呼ばれる。

9

・onPause
画面が隠れる(一時停止する)と呼ばれる。この時アプリ自体はバックグランドで動き続ける。
・onStop
アプリが停止されると呼ばれる。この状態にある Activity はメモリ不足時にプロセスが破棄される場合がある。
・onDestroy
削除要請されると呼ばれる。

Listener クラス
プログラム全体の内のイベントの動作部分を書くためのクラス。クラスを生成するメソッド(コンストラクタ)と eclipse の自動補完機能を使えば簡単に作成することが可能である。

2.3 実験内容
以下のようなプログラムを作成する。
①「こんにちは」と書かれたボタンを画面上に表示する。
②ボタンをクリックすると「クリック!!」とボタンに表示する。
③ポーズ(中断)すると「こんばんは」とボタンに表示する。

図 2-3 に eclipse の編集画面の一部を示す。主に使用するファイルの説明を以下に示す。

10

図 2-3 eclipse 編集画面
HelloandroidActivity.java
プログラム本体。Activity クラスの子クラスで、起動時最初に呼び出される。
HelloButtonListener.java
ウィジェットの操作やイベント駆動など、動作にかかわるプログラムを書きこむ。
Main.xml
画面上に表示するウィジェットの配置を定義する。

11

プログラミングの流れ
１．main.xml を編集して画面レイアウトを構成する。
図 2-4 にレイアウト画面を示す。この画面でウィジェットの配置を決定する。

図 2-4 main.xml の編集画面

12

２．プログラム本体の形成
図 2-5 にプログラム本体を示す。図のように Activity の継承、画面レイアウトの表示、Listener クラスの作成などを行う。

図 2-5 プログラム本体

13

３．Listener クラスの作成
図 2-6 に Listener クラスを示す。ここでイベント発生時の処理を決定する。この場合ボタンを押すと「クリック！！」と表示するように設定している。

図 2-6 Listener クラス
2.4 実験結果
プログラム起動結果を以下の図 2-7, 2-8, 2-9 にそれぞれ示す。
・起動時

図 2-7 プログラム起動画面

14

・ボタンを押した場合

図 2-8 クリック時

・一時停止時

図 2-9 ポーズ時
図 2-7, 2-8, 2-9 のように表示できることを確認することができた。
2.5 まとめ
この実験を通して Android プログラムを作成し Java に対する知識を深めることができた。

15

３．AndroidADK アプリのプログラミング
実験者： 電気工学科 5 年 36 番 藪 優佑
3.1 実験目的
本実験は統合開発環境 eclipse による Java プログラミング、また参考としたソースコードの読解をすることで Java 言語および Android ADK の扱い方を習得することを目的とする。
3.2 実験方法
Arduino 基盤に繋げた LED の点滅を Android 端末上で制御する環境を構築する。このために必要となるのは eclipse を用いた Java 言語によるプログラミング（Android 端末側）
及び統合開発環境 arduino を用いた Arduino 言語プログラミング（Arduino 基板側）であるが、本章では Java プログラミングについてのみ報告する。
3.3 ソースコードの概要
ソースコードの本体は後に示す。ソースコードは大まかに「アクセサリ（Arduino）の接続を司る部分」、「アクセサリとの通信を司る部分」の２つに分類される。それぞれの流れを図 3-1, 3-2 に示す。

図 3-1 アクセサリとの接続に関する流れ
16

図 3-2 アクセサリとの通信に関する流れ
3.4 実験結果
完成図と動作の様子を図 3-3 に示す。

図 3-3 完成図17

図 3-3 において Android 端末（右端）と Arduino 基盤（左端）は USB ケーブルによって繋がっている。図のように端末側には基盤との接続状況、LED の点灯状況および LEDの点灯ボタンが表示され、ボタンにタッチすることで LED が点灯することが確認できた。

3.5 まとめと感想今回作成したのは LED を点滅させるだけの単純なプログラムであったが、ソースコードが複雑でまだ理解しきれていない部分も多くある。
そのため今後の Android ADK 開発に向けて Java 言語に関する知識・理解を深めることでより応用範囲の広い技術を身に付けることを今後の目標としたい。
3.6 参考本実験では以下のサイトのソースコードを参考とさせていただいた。
“Y.A.M の 雑記帳: Android Hello ADK つくった！”
http://y-anz-m.blogspot.jp/2011/12/androidhello-adk.html

18

４．Arduino の自作に関する実験
実験者： 電気工学科 5 年 4 番

池田 貴一

4.1 目的
先ほどの Arduino を自作することを目的とした。自作することによってより Arduinoについて理解する。
4.2 概要Arduino を自作することによりそれに関するより深い理解を得ることを目的とする。
Arduino の自作することのメリットは安価であることが挙げられる。それはスタンドアローンの状態で使用するのであれば USB 接続部分など必要ないからである。
Arduino を自作することのデメリットは初期投資が掛かることやハードウェアが壊れる可能性があることである。
4.3 自作 Arduino の種類
USB 直結タイプ…マイコンと直接パソコンと通信させるタイプである。比較的安価であり、回路も簡単である。

図 4-1 USB ケーブル
USB ケーブルは市販の USB ケーブルの被服を剥がしたものである。

19

図 4-2 USB 直結タイプの基盤
Duemilanove タイプ…標準的な Arduino として扱われている。Arduino のホームペー
ジでも、初心者向けにこれを使って説明している。PC に USB 経由で接続でき、他のデバイスへもジャンパワイヤなどで簡単に接続できる。

図 4-3 Duemilanove タイプの Arduino 基盤
図 4-3 の右側は USB シリアル変換基板で PC と通信するための基盤。左側は Arduino の基盤。

20

ミニマルタイプ…先の Duemilanove タイプとほぼ同じであるが水晶発振器を用いず、マイコン内蔵の RC 発振回路をクロックとして用いる。

図 4-4 ミニマルタイプの基盤図
ミニマルタイプの基盤図でこれとは別に図 4-3 の右側と同じ USB シリアル変換部が必要となる。
4.4 実験
今回作る Arduino はミニマルタイプを作ることとした。水晶発振器を用いず、マイコン内蔵の RC 発振回路をクロックとして用いる。3.3V 程度の定電圧で利用する場合は 8MHz 程度で動かす必要がある。通常は５V で 16MHz の動作をさせる。定電圧であるので維持費が安く済む。

21

表 4-1 Arduino を作るために必要な素子
ハードウェア説明

AVRISPMKII

マイコンに書き込むための装置

ATMEGA168-20PU

マイコンチップ

AE-UM232R

USB シリアル変換モジュール

0.1μコンデンサ

210k 抵抗11k 抵抗3LED

1

ソフトウェア説明

AVR Studio

AVRISPMKII に書き込むためのソフト

ArduinoIDE

Arduino のソフト開発のためのソフト

図 4-5 ブートローダをプログラムする回路22

ブートローダのプログラムの仕方①AVR Studio と ATMEGA168 を接続する。
②Flash の欄のファイル選択メニューからブートローダを選ぶ③ArduinoIDE 配布ファイルにある
ATMEGABOOT_168_pro_8MHz.hex を書き込む④ハードウェア側の設定でヒューズビットとロックビットを書き換える。

図 4-6 実際に動作させるときの回路23図 4-7 完成した基盤図4.5 まとめ
自作 Arduino を作り動作させることができた。また LED を光らせることができた。
4.6 感想Arduino について理解を深めることができた。
4.7 参考サイト
http://robo.mydns.jp/Lecture/index.php?Arduino%2FArduino%20%A4%CE%BC%AB%B
A%EE%2FUSBTYPE

24