Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android ThingsとFirebaseでIoT入門

Android ThingsとFirebaseでIoT入門

DevFest Ishinomaki 2018 にて発表

3c7020b33ae8880dd9514b6469a28ae0?s=128

Yuta Tomiyama

October 28, 2018
Tweet

Transcript

  1. Android ThingsとFirebaseで IoT入門

  2. 自己紹介 氏名:富山 雄太 所属:会津大学 学部1年(26期) 好きな言語:Kotlin GitHub:https://github.com/yt8492 趣味でAndroidアプリ開発やってます Facebookのすがた Twitterのすがた

    ID:yt8492
  3. 今回のゴール ・Android Thingsの導入と基本的な使い方がわかる ・Firebaseの導入とFirestoreの基本的な使い方がわかる ・遠隔で画面とGPIOの更新ができる

  4. Android Thingsとは? ・Googleが「IoT向けのプラットフォーム」として発表したOSなどを含むソフトウェア群(ら しい) ・ここでは主にIoT機器向けOSとして扱います

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

  6. Android Thingsのはじめかた Android Things Console(https://partner.android.com/things/console/)へ移動

  7. プロダクトを追加 ・Product name プロダクト名 ・SOM type 今回はRaspberry Pi 3を選択 ・Product

    description プロダクトの説明を記入(省略可)
  8. microSDカードに書き込むイメージをビルド ・Modelsからモデル(ここではqa3dgk)を選択 ・CREATE A BUILD CONFIGURATIONを選択

  9. ビルドの設定 ・ビルド名を入力 ・Android Thingsのバージョンを選択 その他は初期設定で大丈夫です

  10. ビルドしたイメージのダウンロード ・ActionsからDevelopmentを選択しダウンロード ・Zipファイルを解凍しimgファイルをmicroSDカードへ書き込み

  11. Android Thingsを起動

  12. Android Thingsアプリの実装 通常のアプリ開発とほぼ同じ

  13. Target Android Devicesの設定 Android Thingsにチェックをつけ る

  14. Activityを選択 今回はAndroid Things Empty Activityを選択

  15. Activityの設定をして完了 Launch activity automatically on boot にチェックを入れるとデ バイス起動時に自動的にアプリ が起動する

  16. Android ThingsでのGPIOの使い方 AndroidManifest.xmlに <uses-permission android:name="com.google.android.things.permission.USE_PERIPHERAL_IO" /> を追加 PeripheralManager.getInstance() でPeripheralManagerのインスタンスを取得 manager.openGpio("GPIO名")

    でGPIOを取得していろいろする
  17. Android ThingsでのRaspberry Pi 3のGPIO一覧 公式より引用 https://developer.android.com/things/hardware/raspberrypi

  18. Lチカさせてみる val manager = PeripheralManager.getInstance() val gpio = manager.openGpio("BCM4") gpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW)

    (1..10).forEach { gpio.value = !gpio.value Thread.sleep(1000) }
  19. Firebaseとは ・Googleが運営しているBaaS ・データーベースをはじめ様々な機能がある(時間が足りずあまり調べることができませ んでした) ・様々なプラットフォーム / 言語に対応(Android, iOS, Web, Unity

    など) ・バックエンドに詳しくなくてもクラウドを利用したアプリを開発できるのでAndroidエンジ ニアにもうれしい
  20. Firebaseのはじめかた Firebase console(https://console.firebase.google.com/)へ移動

  21. プロジェクトを追加 ・プロジェクト名 ・プロジェクトID ・アナリティクスの地域 ・Cloud Firestoreのロケーション

  22. プロジェクト作成完了

  23. 実際にアプリを作ってみよう 今回作るもの ・ラズパイでLチカと画面にテキスト表示 ・テキストとLEDの状態はスマホから遠隔でセットできるようにする

  24. Firebaseにアプリを追加する Android Studioであらかじめラズパイ用と スマホ用にそれぞれプロジェクトを作成し ておく パッケージ名以外は省略可

  25. 設定ファイルをダウンロード(重要) ・google-services.jsonをダウンロード ・ダウンロードしたファイルをアプリモジュー ルのルートディレクトリに追加

  26. アプリのbuild.gradleファイルを修正 プロジェクト レベルの build.gradle dependencies { classpath 'com.google.gms:google-services:4.0.1' //追加 }

    アプリレベルのbuild.gradle dependencies { implementation 'com.google.firebase:firebase-core:16.0.1' //追加 } apply plugin: 'com.google.gms.google-services' //追加
  27. Firebaseがアプリに正常に追加されたかチェック

  28. データーベースの追加

  29. セキュリティルールの作成 今回はテストモードで開始 実際のプロダクト開発ではロックモードで 開始し適切にセキュリティルールを作成し てください

  30. データーベース作成完了

  31. コレクションの追加 ・「コレクションを追加」をクリック ・コレクションIDを入力

  32. 最初のドキュメントを追加 ・ドキュメントID 省略した場合自動的に設定される ・フィールド フィールド名の設定、タイプの設定(string, number, boolean, map, array, null,

    timestamp, geopoint, referenceから選択)
  33. データーベースに値の登録が完了

  34. アプリのbuild.gradleの編集 dependencies { implementation 'com.google.firebase:firebase-firestore:15.0.0' //追加 }

  35. ラズパイ側アプリの実装

  36. スマホ側アプリの実装

  37. 実行してみよう!

  38. None
  39. None
  40. まとめ ・Android Thingsを利用することによりAndroidアプリ開発者は比較的楽にIoTデバイス を開発することができる ・Firebaseを利用することによりバックエンドの知識があまりなくてもクラウドを利用した アプリを開発することができる

  41. まとめ Android ThingsとFirebaseが合わさり最強に見える

  42. ご静聴ありがとうございました!