Android Thingsとは
Googleの新しいIoTプラットフォームで、AndroidのAPIとGoogleのサービスを利用することでスマートデバイスを簡単に開発できる…!って代物です。Android Thingsは今のところデベロッパー・プレビューとして公開されていて、対応ハードウェアとしてIntel Edison、NXP Pico、Raspberry Pi 3をサポートしています。
Androidアプリの開発環境がそのまま使えるので、Android Studio、Android SDK、Google Playのサービスなど、これまでのAndroidアプリケーション開発で培った知識が役に立ち、Androidアプリケーション開発者でもスマートデバイスの開発を始めやすいと言えそうです。
用意するもの
デベロッパー・プレビューで公開されているAndroid ThingsプラットフォームをRaspberry Pi 3で試してみます。
まずは、Android Thingsで開発を始めるために必要なものを集めましょう。
- Raspberry Pi 3 Model B
- 電源用マイクロUSBケーブルとアダプター
- マイクロSDカード(8GB以上)
- マイクロSDカードリーダー・ライター
- HDMIが入力に使えるディスプレイとHDMIケーブル
- イーサネットケーブル
うーん、意外と用意するものが多いですね…。一つづつ見ていきたいと思います。
Raspberry Pi 3 Model B

Raspberry Pi 3 MODEL B 【RS正規流通品】
- 出版社/メーカー: Raspberry Pi
- 発売日: 2016/04/28
- メディア: Tools & Hardware
- この商品を含むブログを見る
Raspberry Piの3代目です。CPUが64bit対応、Wi-Fi、Bluetoothが内蔵されるなど、Raspberry Pi 2からいろいろ強化されました。
Raspberry Piには、RSコンポーネンツ製とElement14製がありますがどちらのものでも性能差はないはずです。
電源用マイクロUSBケーブルとアダプター

【公式】Raspberry Pi 3 model B 専用電源 ACアダプタ(ブラック) 5.1V/2.5A
- 出版社/メーカー: きばん本舗
- メディア: エレクトロニクス
- この商品を含むブログを見る
Raspberry Pi 3用の電源です。Raspberry Pi 3は5V/2.5A以上の電流容量が必要になります。
2.5A以上の電源容量を持ったAC-USBアダプターが都合よく手元にある人は少ないと思うので、用意が必要だと思います。
マイクロSDカード(8GB以上)

【Amazon.co.jp限定】Transcend microSDHCカード 8GB Class10 (無期限保証) TS8GUSDHC10E (FFP)
- 出版社/メーカー: トランセンド・ジャパン
- メディア: Personal Computers
- この商品を含むブログを見る
普通のマイクロSDカードです。このカードにAndroid Thingsのイメージを書き込みます。
カードの容量は8GB以上必要のようです。
マイクロSDカードリーダー・ライター

iBUFFALO カードリーダー/ライター microSD対応 超コンパクト ブラック 【PlayStation4,PS4 動作確認済】BSCRMSDCBK
- 出版社/メーカー: バッファロー
- 発売日: 2008/12/01
- メディア: Personal Computers
- 購入: 12人 クリック: 162回
- この商品を含むブログ (25件) を見る
Android Thingsのイメージを書き込む際に利用します。PCにSDカードリーダーがついてる場合は、それを利用します。
SDカード-マイクロSDカードのアダプターも状況に合わせて。
HDMIが入力に使えるディスプレイとHDMIケーブル

Amazonベーシック ハイスピードHDMIケーブル - 1.8m (タイプAオス - タイプAオス/イーサネット/3D/4K/オーディオリターン/PS3/PS4/Xbox360対応)
- 出版社/メーカー: AmazonBasics
- メディア: エレクトロニクス
- この商品を含むブログを見る
起動確認と初期セットアップ時に使います。ディスプレイ表示が必要なアプリケーションの場合も必要です。
イーサネットケーブル

Amazonベーシック LANケーブル 0.9m RJ45 CAT6準拠 HL-001763
- 出版社/メーカー: AmazonBasics
- メディア: Personal Computers
- この商品を含むブログを見る
Raspberry PiはWi-Fiアダプタを搭載していますが、Android ThingsでWi-Fiの設定をするまでは使えないので、有線LAN経由で最初の設定をします。 Wi-Fiの設定後は必要なければ外せます。
Android Things のシステムイメージを書き込む
Android Thingsのシステムイメージをダウンロードし、SDカードに書き込みます。
今回はMacでやってみます。
イメージをダウンロード
System Image DownloadsのページからRaspberry Pi用のイメージをダウンロードします。
ファイル形式はzipですが、Mac標準のアーカイブユーティリティでは展開に失敗するので、The Unarchiverを使います。インストールしていない場合は、Mac App Storeからでも入手できます。
展開すると、 iot_rpi3.img
が作成されます。
SDカードをフォーマットする
まずはSDカードをフォーマットします。ディスクユーティリティを使えばGUIでフォーマットすることができます。
ディスクユーティリティの左側のリストから挿入したSDカードを選んで、「消去」します。フォーマットはMS-DOS(FAT)を選びます。
これでフォーマットされました。「マウント解除」を押して、マウントを解除します。
SDカードにイメージを書き込む
ディスクユーティリティの「情報」を押して、SDカードのデバイス位置を調べます。
「情報」を押して表示されるウィンドウのBSD装置ノードのところに表示されているdisk5という文字列をメモっておきます。
( disk
に続く数字は環境によって違います )
ターミナルを起動します。
さきほど展開したThingsイメージのディレクトリまで移動します。
以下のコマンドで、 iot_rpi3.img
を書き込みます。
$ sudo dd bs=1m if=iot_rpi3.img of=/dev/rdisk5
/dev/rdisk5
のdisk5の部分は、さきほどメモった文字列と合わせます。( /dev/rdisk5
の r
はタイポではありません。)
書き込み完了まで、15分くらいかかりますが上のように xxxx bytes transferred in yyyy
と表示されれば、書き込み完了です。
書き込みが終わった後に、このようなダイアログが出た場合は、「取り出す」で、SDカードを取り出します。
起動する
Android Thingsのシステムイメージを書き込んだマイクロSDカードをRaspberry Piのカードスロットに挿入します。
イーサネットケーブル、HDMIディスプレイ、電源を繋いで起動します。
Android Thingsが起動しました。画面下部に有線LANのIPアドレスが表示されています。
PCから接続するためにここに表示されたIPアドレスをメモっておきます。今回の場合は、 192.168.11.39
ですね。
起動の様子。
adbで接続する
adb(Android Debug Bridge)とはAndroid SDK platform-toolsに含まれるツールです。Androidデバイスを列挙したり、リモートからAndroidのシェルコマンドを実行できたりします。
adbの細かい説明はこちらのドキュメントが参考になります。
Mac上でAndroid Studio、Android SDK、platform-toolsをセットアップしている場合は、 ~/Library/Android/sdk/platform-tools/
にあります。
では、さっそく起動したデバイスに接続してみましょう。
$ ./adb connect 192.168.11.39 * daemon not running. starting it now on port 5037 * * daemon started successfully * connected to 192.168.11.39:5555
画面で確認したIPアドレスを指定して、 adb connect
で接続しました。
$ ./adb disconnect 192.168.11.39 disconnected 192.168.11.39
adb disconnect
で接続解除できます。
また、Raspberry Piを使っていて、ホスト側がマルチキャストDNS(Bonjour)をサポートしている場合 Android.local
でも接続できます。
$ ./adb connect Android.local connected to Android.local:5555
Wi-Fiに接続する
<SSID>
<PASS>
の部分を接続したいWi-Fiの接続情報に読み替えます。
$ ./adb shell am startservice \ > -n com.google.wifisetup/.WifiSetupService \ > -a WifiSetupService.Connect \ > -e ssid <SSID> \ > -e passphrase <PASS> Starting service: Intent { act=WifiSetupService.Connect cmp=com.google.wifisetup/.WifiSetupService (has extras) }
成功すると、画面下部に表示されていたIPアドレスの部分が変化しているはずです。
“nanoha” というSSIDのWi-Fiに接続しました。
$ ./adb logcat -d | grep Wifi ... 02-15 13:17:14.197 1491 1491 V WifiWatcher: Network state changed to CONNECTED 02-15 13:17:14.198 1491 1491 V WifiWatcher: SSID changed: "nanoha" 02-15 13:17:14.209 1491 1506 I WifiConfigurator: Successfully connected to nanoha
adb logcat
を使ってログを表示させ、上記のようなログがあることを確認することでも、接続されたかわかります。
外部に接続できるかテストする
Wi-Fiに接続できたら、外部のホストに接続できるか試してみます。
IPアドレス 8.8.8.8
に ping
して応答があるか調べます。
$ ./adb shell ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=14.5 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=16.3 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=3.98 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=3.43 ms 64 bytes from 8.8.8.8: icmp_seq=5 ttl=57 time=3.68 ms 64 bytes from 8.8.8.8: icmp_seq=6 ttl=57 time=7.29 ms 64 bytes from 8.8.8.8: icmp_seq=7 ttl=57 time=11.7 ms
8.8.8.8
に到達できていることが確認できました!
まとめ
Android Thingsを始めよう!準備編ということで、システムイメージをSDカードに書き込んで、Raspberry Piで起動。 adbでデバイスに接続して、Wi-Fiの設定を行いました。
Raspberry Piを使ったことがある方は、すんなりいけるかもしれませんが、初めての場合は意外と準備するものが多くて少し大変だったかもしれません。
次回は、実際にAndroid Thingsで動くプログラムを書いて、Raspberry PiのGPIOを制御して、LEDをチカチカ点滅させるやつをやってみます!