この記事は何?
Android ThingsのOSのインストールとLチカに関しての記事です。
基本的にはここに従って動作させた筋道を記録します。2017年5月19日現在のトライの記録です。
Android Thingsとは
スマホ向けのOSのAndroidではなく、IoT機器向けのOS。
どこで買えるの?
Android Things自体はこちらから無償でダウンロードできます。
2017年5月現在では以下の機器用のOSがイメージとして提供されています。
- Intel Edison
- Intel Joule
- NXP Pico i.IMX6UL
- NXP Argon i.IMX6UL
- NXP Pico i.MX7D
- Raspberry Pi
それぞれの機器の対比表はこちらです。
Raspberry Piにインストール
購入した機器はこれらです。(米国amazonですみません><)
- CanaKit Raspberry Pi 3 with 2.5A Micro USB Power Supply (UL Listed)
- OSOYOO 3.5” HDMI Touch Screen LCD Display Monitor 1920x1080 Audio Output with Stylus for Raspberry Pi 3 2 Model B
- SanDisk Extreme 32GB MicroSDHC UHS-I Card
- CAT7 RJ45 Ethernet LAN Networking Cable(3m)
早速インストール
ここに従ってインストールしたら1時間くらいで完了しました。
使ったコンピュータはMacです。
- 先程の一覧ページから Raspberry Pi のイメージをダウンロード。
- ダウンロードしたファイルを解凍して、以下を実行してMacに接続したSDカードに書き込む。
$ sudo dd bs=1m if=(解凍したファイルへのパス&ファイル名).img of=/dev/rdiskn;
コマンドの最後の「
rdiskn
」のn
は実際は数字が入ります。「Disk Utility」で表示されます。
ddでSDに書き込むのが最も時間がかかりました。
- 書込完了後にRaspberry Pi(ここではPi 3)のSDカードをスロットに接続する
- 電源を入れて、起動したら完了。
自作アプリのインストール
自作アプリインストールはコンピュータ(ここではMac)からインストールを行います。
ここからAndroid Studio、Android SDKがコンピュータにインストールされていることを想定して書いています。
それぞれのインストール方法はこちら
有線でRaspberry Piに接続
Macなので、Terminalを開きます。
Terminalからコマンドを打ってネットワークを経由して接続します。まずはEthenetケーブルで物理的にRaspberry Pi 3をネットワークに接続をします。次にIPアドレスを調べて、
$ adb connect <ip-address>;
で接続完了です。
接続解除は以下です。
$ adb disconnect <ip-address>;
接続を確認するには、
$ adb devices;
をすると接続されている機器のリストが表示され
$ adb logcat -d;
を実行するとログが表示されます。(Androidのエミュレータは停止、実機は接続していない状況を想定)
Wi-FiでRaspberry Piに接続
一度有線で接続してから、以下のコマンドを入力。
$ adb shell am startservice \
-n com.google.wifisetup/.WifiSetupService \
-a WifiSetupService.Connect \
-e ssid <Network_SSID> \
-e passphrase <Network_Passcode>
パスワードがない場合は省力することで接続できるとのこと。
SSID/Passphraseは記録されますので、
$ adb connect <ip-address>;
を使いWi-Fiに一度接続をしてしまえば、これで電源を切っても、電源の再投入後は自動的にWi-Fiに接続されますので、Ethenetケーブルは切断することが可能になります。
ちなみに、Wi-FiのSSID/Passphraseの削除は以下です。
$ adb shell am startservice \
-n com.google.wifisetup/.WifiSetupService \
-a WifiSetupService.Reset
アプリのインストール
$ adb connect <ip-address>;
が成功していれば、Android Studioにてコンパイルする際にターゲットのデバイスとしてリストされるはずです。リストされていなければ、 有線でRaspberry Piに接続 からやり直してみてください。
Lチカ
以下がコードです。
Android Studioで、新規にUIなしの空のアクティビティを作って、以下を書いて実行しています。
public class MainActivity extends Activity {
private static final int INTERVAL_BETWEEN_BLINKS_MS = 300;
private static final String LED = "BCM4";
private Handler mHandler = new Handler();
private Gpio mLedGpio;
private String TAG="ANDROIDTHINGS";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PeripheralManagerService service = new PeripheralManagerService();
try {
mLedGpio = service.openGpio(LED);
mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
Log.i(TAG, "Start blinking LED GPIO pin");
while(true) {
// Toggle the GPIO state
mLedGpio.setValue(!mLedGpio.getValue());
Log.d(TAG, "State set to " + mLedGpio.getValue());
SystemClock.sleep(INTERVAL_BETWEEN_BLINKS_MS);
}
} catch (IOException e) {
Log.e(TAG, "Error on PeripheralIO API", e);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "Closing LED GPIO pin");
try {
mLedGpio.close();
} catch (IOException e) {
Log.e(TAG, "Error on PeripheralIO API", e);
} finally {
mLedGpio = null;
}
}
}
(このブログを参考にしています)
その他
「さて、その先を何する?」
となりそうですが、このビデオではLEDを光らせたり、温度センサからの値の取得をどう書くかが紹介されています。(別途Pimoroni Rainbow HATが必要)