9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Pi 3でAndroid Things入門

Last updated at Posted at 2018-12-22

#はじめに
この記事は Aizu Advent Calendar 2018 23日目の記事になっています。22日目の記事はmt_coffさんのVue.jsでゆるくAtomic Designをやるです。24日目の記事は追加されたらリンクを貼ります。

Android Thingsの入門記事が少なく感じたのでメモ兼ねて書いてみました。
間違い等あったら遠慮なくコメントでご指摘ください。

#用意するもの
Raspberry Pi 3一式
ブレッドボード、LED、抵抗などLチカするのに必要なもの

#今回のゴール
Android Thingsの導入からLチカまでができる

#Android Thingsとは
Googleが「IoT向けのプラットフォーム」として発表したOSなどを含むソフトウェア群…らしいです。正直この辺が調べてもなんとなくしかわからなかったので詳しい人教えて下さい。
この記事ではIoT機器向けのOSを指すことにします。

###(個人的に思う)Androidアプリ開発者にとってのAndroid Thingsのメリット

  • Androidアプリ開発のノウハウをIoTデバイスの開発に活かすことができる
  • 使い慣れたIDE(Android Studio)で開発ができる
  • Java/Kotlinが使える
  • GPIOの制御が比較的簡単にできる
  • 画面をAndroidアプリのように設計できる

僕はKotlinが好きなので、開発にKotlinを使えるというのが個人的に嬉しいです。

#Android Thingsのはじめかた

##Raspberry Pi側の準備

###プロダクトの追加
Android Things Consoleへ移動
スクリーンショット 2018-12-22 18.08.59.png
ADD A PRODUCTをクリックし、プロダクトを追加します。
スクリーンショット 2018-12-22 18.25.58.png

  • Product name
    プロダクト名
  • SOM type
    今回はRaspberry Pi 3 を選択
  • Product description
    プロダクトの説明(省略可)

###microSDカードに書き込むイメージをビルド
Modelsからモデルをクリック(この画面では2ju8p7)
スクリーンショット 2018-12-22 18.34.25.png

CREATE A BUILD CONFIGURATIONをクリックしビルドの設定をします。
スクリーンショット 2018-12-22 18.48.41.png

  • ビルド名を入力
  • Android Thingsのバージョンを選択

今回はその他は初期設定で大丈夫です。

スクリーンショット 2018-12-22 19.13.01.png

###ビルドしたイメージのダウンロード

  • ActionsからDevelopmentを選択しダウンロード
  • ダウンロードされたzipファイルを解凍し、imgファイルをmicroSDカードへ書き込み
スクリーンショット 2018-12-22 21.25.58.png

imgファイルを焼いたmicroSDをRaspberry Pi 3に挿入し起動して、次のような画面になれば成功です。(直撮りすみません)

DSC_0626.JPG

##Android Thingsアプリの実装
通常のAndroidアプリ開発と同様、Android Studioを使います。開発の流れもほぼ同じです。

###プロジェクトの準備

プロジェクトを作成し、
スクリーンショット 2018-12-22 21.48.41.png

Target Android DevicesでAndroid Thingsにチェックを入れます。
スクリーンショット 2018-12-22 22.10.06.png

Activityを選択します。今回はAndroid Things Empty Activityを選択しました。
スクリーンショット 2018-12-22 22.13.35.png

Activityの設定をして準備完了です。
スクリーンショット 2018-12-22 22.16.08.png

###実際にLチカしてみる

プロジェクトの準備はできたのであとはコードを書いていくだけです。
Android ThingsでGPIOを制御する流れとしては

  • AndroidManifestにUSE_PERIPHERAL_IOのパーミッションを追加
  • PeripheralManager.getInstance() でPeripheralManagerのインスタンスを取得
  • インスタンス.openGpio("GPIO名") でGPIOを取得していろいろする

こんな感じです。
Android ThingsでのRaspberry Pi 3のGPIO一覧はこちらを確認してください。

それではLチカまでの流れを実際にコードを載せて解説します。

####パーミッションの設定

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.yt8492.ledblink">

    <!-- ↓追加 -->
    <uses-permission android:name="com.google.android.things.permission.USE_PERIPHERAL_IO" />
    <!-- ↑追加 -->
    <application android:label="@string/app_name">
        <uses-library android:name="com.google.android.things"/>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

####Lチカ部分のコード

MainActivity.kt
class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val manager = PeripheralManager.getInstance()
        val led = manager.openGpio("BCM17")
        led.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW)
        led.setActiveType(Gpio.ACTIVE_HIGH)
        repeat(10) {
            led.value = true
            Thread.sleep(1000)
            led.value = false
            Thread.sleep(1000)
        }
    }
}

led.setDirectionでモードを入力か出力か設定します。
DIRECTION_INで入力、DIRECTION_OUT_INITIALLY_LOWで初期電圧がLOWの出力、DIRECTION_OUT_INITIALLY_HIGHで初期電圧がHIGHの出力になります。

led.setActiveTypeでHIGHとLOWどちらがtrueか設定します。

あとは1秒ごとにLEDの点滅を10回繰り返しています。

Raspberry Piをネットワークに接続している場合は、adb connect <ラズパイのIPアドレス>で接続してAndroid Studioから実行できます。

お疲れ様でした。

#参考

https://developer.android.com/things/get-started/
https://developer.android.com/things/sdk/pio/gpio
https://developer.android.com/things/hardware/raspberrypi

9
4
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
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?