Android ThingsをRaspberry Piにセットアップする

はじめに

Raspberry Piを使用したAndroid Thingsアプリ開発の為の環境構築部分についてのまとめです。 基本的にhttps://developer.android.com/things/hardware/raspberrypiの記載内容に従って行います。

実行環境

  • 確認日:2018/09/30
  • Android Thingsのバージョン:1.0.4(Android 8.1.0)
  • Android Studioのバージョン:3.2
  • Android Things Setup Utilityのバージョン: 1.0.21
  • 環境はMacbook Proを使用しました(MacOS 10.13.6)
  • 初回の接続はEthernetケーブル接続で行います
    ※ USB to TTL Serial Cableを使用した方法については前述のリンク先に記載がありますので、そちらをご覧ください

機材の準備

買い物リストです。

  • Raspberry Pi 3 Model B
    ※ 2018/09時点の最新モデルはModel B+となりますが、現時点ではAndroid Thingsは前モデルのModel Bにのみ対応しています。
  • 8GB以上のmicroSD CardおよびSDカードアダプタ
  • Micro-USBケーブル(5V2.5Aの給電が可能なUSBポートから給電してください)
  • (MacにSDカードスロットがない場合は)SDカードライタ
  • HDMI接続可能なディスプレイ&HDMIケーブル
  • Ethernetケーブル
    ※ 使用するMacと有線接続によるLANを構築する必要があります、無線接続環境しか無い場合は別途thunderbolt to Ethernetアダプタなどを購入してください。

micro SDにAndroid Thingsのイメージを書き込む

$ sudo ~/Downloads/android-things-setup-utility/android-things-setup-utility-macos
  • 次の画面が表示されるので「1」を選択します。
What do you want to do?
1 - Install Android Things and optionally set up Wi-Fi
2 - Set up Wi-Fi on an existing Android Things device
  • 次の画面が表示されるので「1」を選択します。
What do you want to do?
What hardware are you using?
1 - Raspberry Pi 3
2 - NXP Pico i.MX7D
  • Platform Toolsのダウンロードが行われ、問題なければ次の画面が表示されるので「1」を選択します。
Do you want to use the default image or a custom image?
1 - Default image: Used for development purposes. No access to the Android
Things Console features such as metrics, crash reports, and OTA updates.
2 - Custom image: Upload your custom image for full device development and
management with all Android Things Console features.
  • 書き込むAndroid Thingsイメージのダウンロードが行われます。成功した場合以下のメッセージが表示されますので、MacのSDカードスロットもしくは、接続したSDカードライタにmicro SDカードをセットしたSDカードアダプタをセットしてEnterキーを押してください。 ※ 当然現在micro SDカードに入っているデータは消えますので、必要なデータは事前にコピーなどしておいてください
Plug the SD card into your computer. Press [Enter] when ready
  • 書き込みに成功した場合以下のメッセージが表示されます。
If you have successfully installed Android Things on your SD card, you can now
put the SD card into the Raspberry Pi and power it up. Otherwise you can abort
and run the tool again.
  • このあと次のメッセージが表示されますが、ここでは一旦「n」を選択し、Android Things Setup Utilityを終了します。
Would you like to set up Wi-Fi on this device? (y/n)

書き込んだAndroid Thingsの起動確認を行う

micro SDを取り外し、Raspberry Piにセットした後でRaspberry Piに通電します。接続したディスプレイの画面に「Android Things」と表示された画面が表示されれば成功です。

正方形のレインボー画面(伝わるかな?)が表示されたままの場合はAndroid Thingsイメージの書き込みが正しく行えていない場合があるので、上記の手順を再度確認してください。

また、Raspberry Pi 3 Model B+を購入した場合もそうなりますので、Amazonなどで再度Raspberry Pi 3 Model Bを購入してください(僕はそうしました)

Raspberry Piのネットワーク接続(有線LAN)

Raspberry Pi 3 Model BにはWiFiモジュールが搭載されてるため、WiFiを用いてAndroid Studioとの接続が可能ですが、最初にWiFiSSIDおよびパスワードを設定する必要があるため、一度有線接続する必要があります。

ご利用のルーターEthernetのポートがあれば、そちらに接続すれば良いですが、存在しない場合や物理的に届かないなどの場合は、Macと直接Ethernet接続を行い、「インターネット共有」等を機能を用いてRaspberry PiIPアドレスの割当を行ってください。
MacEthernetポートが存在しないモデルの場合、別途thunderbolt to Ethernetアダプタなどを購入してください。

参考:Macで「インターネット共有」を行う方法
https://support.apple.com/ja-jp/HT203819

Raspberry PiIPアドレスが割り当てられた場合、次のようにadbコマンドを用いて接続することが可能です。

$ adb connect <インターネット共有などのDHCP機能で割り当てられたIPアドレス>

この時使用するIPアドレスについては以前はAndroid Thingsの起動画面に表示されていたようなのですが、ちょっと見当たらなかったので…なんとか…頑張っていただくしか… また、MDNSをサーポートする環境では以下のコマンドで接続することが可能なようですので、とりあえずこちらで試してみてください。

$ adb connect Android.local 

無事、接続が成功すれば有線接続はOKです。

Raspberry PiWiFiを有効にする

次にRaspberry Piに使用するWiFiSSIDおよびパスワードを入力してWiFi経由で接続できるようにします。

こちらもAndroid Things Setup Utilityを使用して設定を行います。

  • Android Things Setup Utility実行後の次の画面で今度は「2」を選択します。
What do you want to do?
1 - Install Android Things and optionally set up Wi-Fi
2 - Set up Wi-Fi on an existing Android Things device
  • 次の画面では「1」を選択します
What hardware are you using?
1 - Raspberry Pi 3
2 - NXP Pico i.MX7D
  • Platform Toolsのダウンロードが行われ次の画面が表示されたら、Enterを選択します。
    ※この時有線Ethernet接続されている必要があります。
Please plug your Raspberry Pi to your router with an Ethernet cable, then press [Enter].
  • この際にMDNSに対応した環境であれば、自動で接続されますが、そうでない場合は以下のメッセージが表示されますので、先程調べたIPアドレスを入力してください。
Once you are ready, enter the IP of your Raspberry Pi: 
  • 問題無く接続できたら、次はSSIDの入力を求められますので、入力してください。 なお、Raspberry Pi 3 Model Bでは2.4GHzのWiFiのみ対応しているようです
Enter the Wi-Fi network name:
  • 次にWiFiのパスワードを入力します。
Enter the Wi-Fi network password (leave empty if no password): 
  • 最後に次のメッセージが表示されればWiFi設定は完了です。
Successfully connected to Wifi
Stopping adb server...
Stopped adb server...

Now that you’re set up, try sample projects in Android Studio or in the sample
repository here: https://developer.android.com/things/sdk/samples.html

To learn more about features like over-the-air updates, visit the Android Things
Console: https://partner.android.com/things/console

Press [Enter] to quit.

Wifi経由でAndroid Thingsに接続する

Raspberry PiWiFi設定を行ったので、WiFi経由でのadb接続を行います。

adb connect <WiFiルーターなどで割り当てられたIPアドレス>

この時使用するIPアドレスWiFiルーターの管理画面などで確認するか、有線接続した状態で以下のコマンドを実行し、Raspberry Pi側で確認することも可能です。

$ adb connect Android.local
$ adb shell
rpi3:/ $ ifconfig

この時表示されるwlan0のinet addr:192.168.0.153の部分が無線LAN側に割り当てられたIPアドレスとなります。

wlan0     Link encap:Ethernet  HWaddr b8:27:eb:8a:88:51  Driver brcmfmac_sdio
          inet addr:192.168.0.153  Bcast:192.168.0.255  Mask:255.255.255.0 
          inet6 addr: fe80::7ede:1d55:c0cc:f34b/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19078 errors:0 dropped:35 overruns:0 frame:0 
          TX packets:8859 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:2709805 TX bytes:2565208 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0 
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:27 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:27 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1 
          RX bytes:3258 TX bytes:3258 

eth0      Link encap:Ethernet  HWaddr b8:27:eb:df:37:65  Driver smsc95xx
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:0 TX bytes:0 

Android Studioでプロジェクトを作成する

最後にAndroid Studioを起動し、実際にアプリを実行できるか確認します。

  1. File > New > New Project から新規アプリウィザードを起動します。
  2. 「Target Android Device」の画面にて、「Android Things」にチェックを入れます。 *※プロジェクトを簡単にする為、デフォルトでチェックが入っている「Phone and Tablet」のチェックは外します
  3. 「Add Activity to Things」の画面で「Android Things Empty Activity」を選択します。
  4. 最後にお好みのActivity名を入力してプロジェクトを作成します。

上記の手順でプロジェクトを作成した後は通常のAndroidプロジェクトと同等にRun > Run 'app'などから先程adb connectしたRaspberry Pi上でビルドしたアプリを転送する事が可能です。

デフォルトのHello Worldメッセージが表示されるかと思いますので、ご確認ください。