LoginSignup
6
7

More than 5 years have passed since last update.

Android Things をインストールしてLチカさせてみた!

Last updated at Posted at 2017-05-20

この記事は何?

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ですみません><)

早速インストール

ここに従ってインストールしたら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チカ

せっかくなのでLチカさせてみました。
EAgpTAiprTu2KOlC0MMeLwkl76vEahfwgxdCIRJ0wAwegAAMYAKy0AOQwAdkIBy2AUGwZzx+AfXGsNtW7ww5cpdARA39jQ3dcEbgUMkEbpgCAgA7.gif

以下がコードです。
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が必要)

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7