android thingsやってみた
TRANSCRIPT
スペック(人間の)
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 で接続できる
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
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);
雑感(1)
アナログ回路の知識が必要
プルアップ抵抗? なにそれおいしいの?
ショートさせたり高電流高電圧かけて火が出ないか不安
いろいろやろうと思うと材料がたくさん必要
ソフトウェアばかりやってきた身としては慣れない感覚
プログラムは無ければ自分で書けば良いが、ハードはそうも行
かない
雑感(2)
まだ何ができるかよく分からない分野
知識がないから発想が狭いのかもしれない?
IoT自体、キラーコンテンツがまだない
チャンスはありそう
少なくともAndroidは作り慣れている
慣れた環境に+αするだけで回路制御ができる
「物理的インタラクションができるAndroidアプリ」を一番作
れる位置にいる