android thingsやってみた

28
Android Things @kikuchy

Upload: hiroshi-kikuchi

Post on 13-Apr-2017

665 views

Category:

Technology


0 download

TRANSCRIPT

Android Thingsやってみた

@kikuchy

Who?

@kikuchy

菊池 紘

株式会社Diverse (ミクシィグループ)

最近はiOSも書いてます

スペック(人間の)

Android開発歴2年弱

アナログ回路は高校と大学でやった気がするけれどほとんど忘れた

ハンダ付けとかはしたことある

 E = I * R  とかは知ってる

キルヒホッフの電流則/電圧則は忘れた

LC共振回路ってなんだっけ

Android Things とは

Raspberry Pi や Intel Edison などIoT系マイコンボードで動作する

IoTプラットフォームOS

組み込み系の事前知識なしでマスマーケット向け製品を作ることが

できる、信頼できるプラットフォーム(公式より)

通常のAndroidアプリとほぼ同じコードがマイコン上で動作する

準備から起動まで

用意したもの

Raspberry Pi 3 Model B

2.4A供給できるUSB電源Raspberry Pi 3が安定動作するには2.5Aくらいの電流が必要

micro SDカード (8GB以上)

有線LAN環境無線LAN設定するまで必要

電子工作の部品

その辺のスターターキットみたいなのに入ってるやつ

意外と用意するものが多い (´・ω・`)

インストール

公式のマニュアルの通りにインストールするだけ、非常に簡単

https://developer.android.com/things/hardware/raspberrypi.html

Qiitaの記事も参考にhttp://qiita.com/aoinakanishi/items/fae26dc1ad0f16b58558

注意することとTipsOSのイメージをmacOSのアーカイブユーティリティで解凍す

るべからず

破損したイメージができてしまう

adbで実機とつなぐ際IPアドレスの代わりに  Android.local で接続できる

起動

電源のUSBケーブルを繋ぐだけ

しばらく(1分くらい)待つとadbで繋がるようになる

アプリ作成

新規作成

minSdkVersion 24+

普通のAndroidアプリで良い

GPIOの操作などにThings Support Libraryが必要

Things Support Library

周辺機器入出力と自作ドライバを扱うために必要

Support Libraryなので、後から導入するだけでよい

 build.gradle  の  dependencies  に追加

 AndroidManifest.xml  の  <application>  内に追加

<uses‐library android:name="com.google.android.things"/>

provided 'com.google.android.things:androidthings:0.1‐devpreview'

アプリ作成

普通にアプリ書けば良い

GPIOの操作方法はサンプル見ればだいたいわかるピンごとに 入力/出力 を設定し、値をセットする/コールバック

を仕掛ける などすればよい

公式のサンプル https://github.com/androidthings/sample‑simplepio

周辺機器入出力

原文では  Peripheral I/O 

Raspberry Piの場合はGPIOピンの制御などができる(らしい)

PeripheralManagerService (1)

とりあえずGPIOいじってみる

// マネージャー作成PeripheralManagerService manager         = new PeripheralManagerService();        // 使用可能ポートの一覧を得るList<String> portList = manager.getGpioList();

// GPIOピンを開くGpio gpio = manager.openGpio(/* String */GPIO_NAME);// 使い終わったら閉じることgpio.close();

PeripheralManagerService (2)

// ピンを入力受付モードにするgpio.setDirection(Gpio.DIRECTION_IN);// 電圧の High / Low のどちらを true とするか決める// 今回は Highgpio.setActiveType(Gpio.ACTIVE_HIGH);// 現在の入力値を得るbool now = gpio.getValue();

// 電圧の High / Low が切り替わったイベントをとることもできる

// High / Low どちらに切り替わったときもイベントをもらうようにするgpio.setEdgeTriggerType(Gpio.EDGE_BOTH);// イベントのコールバックを登録 // (GpioCallback インターフェースを実装したオブジェクト)// onStartなどのタイミングで登録するgpio.registerGpioCallback(gpioCallback);// 必要なくなったら登録解除// onStopなどのタイミングで行うgpio.unregisterGpioCallback(gpioCallback);

PeripheralManagerService (3)

// ピンを出力モードにする// 今回は初期状態を High で初期化gpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH);// 電圧の High / Low のどちらを true とするか決める// 今回は Lowgpio.setActiveType(Gpio.ACTIVE_LOW);//出力を Low に切り替えるgpio.setValue(true);

デモ(できれば)

スマホアプリエンジニアがIoT業界でこの先生きのこるには

雑感(1)

アナログ回路の知識が必要

プルアップ抵抗? なにそれおいしいの?

ショートさせたり高電流高電圧かけて火が出ないか不安

いろいろやろうと思うと材料がたくさん必要

ソフトウェアばかりやってきた身としては慣れない感覚

プログラムは無ければ自分で書けば良いが、ハードはそうも行

かない

雑感(2)

まだ何ができるかよく分からない分野

知識がないから発想が狭いのかもしれない?

IoT自体、キラーコンテンツがまだない

チャンスはありそう

少なくともAndroidは作り慣れている

慣れた環境に+αするだけで回路制御ができる

「物理的インタラクションができるAndroidアプリ」を一番作

れる位置にいる

本職の組み込み系の人と

まともにやりあえるかどうかはわからない

でも

「物理的インタラクションができるAndroidアプリ」

はきっと面白い ✧\\ ٩( 'ω' )و //✧

やっていきましょう

✧\\ ٩( 'ω' )و //✧

一緒にやっていってくれる方を募集中です

Diverseでは Android エンジニアを募集しています

https://diverse‑inc.co.jp/