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® Edison
- NXP Pico i.MX6UL
- Raspberry Pi 3
あと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
準備
必要なもの
一度環境を作った後は、ディスプレイは使わなければなくても大丈夫ですが、初期設定時は画面に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>
アプリを実行する
アプリのサンプルがいくつかあるので実行してみます。ここではボタンを押すと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