Android Things ことはじめ


GoogleのIoT platformとしてAndroid ThingsおよびWeaveが発表されたのでさっそく触ってみたよ。
https://android-developers.googleblog.com/2016/12/announcing-googles-new-internet-of-things-platform-with-weave-and-android-things.html

Android Things https://developer.android.com/things/index.html

サポートプラットフォーム

Android Thingsは現時点で以下のハードウェアプラットフォームをサポートしています。

あとIntel® Joule™ 570xとNXP Argon i.MX6ULがcomming soonとのこと。
ここではRaspberry Pi 3にAndroid Things環境を作ります。

Raspberry Pi 3での環境構築

https://developer.android.com/things/hardware/raspberrypi.html

準備

必要なもの

  • Raspbarry Pi 3
  • 8GB以上のSDカード
  • HDMIケーブル
  • HDMI対応ディスプレイ
  • Micro-USBケーブル (電源用)
  • LANケーブル
  • SDに書き込みできる環境

一度環境を作った後は、ディスプレイは使わなければなくても大丈夫ですが、初期設定時は画面にIP Addressが出てくるのでディスプレイが必要です。
また、Raspberry PiはUSBデバイス機能がないため、USBでのadb接続ができずtcpipで接続しますが、初期設定時には有線LANに接続するためLANケーブルが必要です。

システムイメージの書き込み

以下からシステムイメージをDLします。
https://developer.android.com/things/preview/download.html

androidthings_rpi3_devpreview_1.zip

展開した以下ファイルをSDカードに書き込みます。

iot_rpi3.img

書き込み方法はラズパイオフィシャルサイトの以下ページよりWRITING AN IMAGE TO THE SD CARDに従ってください。
https://www.raspberrypi.org/documentation/installation/installing-images/

初期設定

Raspberry Pi 3に

  • イメージを書き込んだSDカード
  • LANケーブル
  • HDMIディスプレイ
  • 電源

をそれぞれ接続、挿入します。

すると以下のような画面が表示されるのでIPアドレスを確認し、adb接続します。

$ adb connect <ip-address>
connected to <ip-address>:5555

以下adbコマンドでWiFiに接続します。

$ adb shell am startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Connect \
    -e ssid <Network_SSID> \
    -e passphrase <Network_Passcode>

一度Wifi接続をすれば、次回からは起動時に接続し、画面にIPアドレスが表示されます。

アプリを実行する

アプリのサンプルがいくつかあるので実行してみます。ここではボタンを押すとLEDを光らせるサンプルを実行してみます。

https://github.com/androidthings/sample-button

HW

回路図はReadmeにスクリーンショットが貼ってあるのでそれで十分わかりますが、Fritzingのファイルはルートディレクトリに置いてあります(rpi3_schematics.fzz)
抵抗はプルアップが10k、LEDに直列についているのが470Ωです。

アプリのビルドと実行

アプリは通常のAndroidアプリと同様にAndroid Studioで開いてビルドして実行します。
実行時にdeploy targetでiot_rpi3を選択します。

ボタンを押すとLEDが光ります。

これだけだと、スイッチとLED直結してるのと変わらないw
画面はsetContentView()すらしてないので真っ白です。

これだけだとAndroidなくてもいいのでUIを連動させてみましょう。

TextViewをレイアウトに配置し、LEDのon/offに合わせて色を変えます。

             setLedValue(true);
+            mText.setBackgroundColor(Color.RED);
             setLedValue(false);
+            mText.setBackgroundColor(Color.BLACK);

これでHW入力をUI上に表示できました。

ソースはgithubに置いておきます。
https://github.com/itog/sample-button/tree/support-ui

新規プロジェクトを作成する場合はテンプレートがあるのでそれを使うのが良さそう。
https://github.com/androidthings/new-project-template

SDKについて

組み込みに必要のない機能がオプショナルもしくはサブセットになっています。
また、ブート時に自動で起動するHome Activityが指定できます。

それ以外はごく普通のAndroidといった感じなので、お手軽なAndroid実行環境としても使えそうです。