Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

はじめてのAndroid Things

2.190 Aufrufe

Veröffentlicht am

ABC 2017 Autunmの講演資料

Veröffentlicht in: Technologie
  • Loggen Sie sich ein, um Kommentare anzuzeigen.

はじめてのAndroid Things

  1. 1. はじめてのAndroid Things GClue, Inc. Akira Sasaki ABC 2017 Autumn
  2. 2. 特徴 Peripheral I/O APIが追加。 PWM, I2C, SPI, UART, I2S対応のハードウェアと通信するためのAPI群が提供。ハード ウェアのデバイスドライバ等を、標準的なAndroid APIをたたく事で、開発可能に。 User Driver APIが追加 ユーザードライバは、開発者が開発したデバイスドライバを既存のAndroidフレームワ ークサービスに追加する事が可能になります。その事により、他のアプリケーション から、標準のAndroid APIをたたく事で、ハードウェアの操作やイベントの取得が可能 になります。 BSPをGoogleが管理 Board Support Package(BSP)をGoogleが管理。Googleから標準的なアップデート が提供されます。 Android Things Console OTAによるシステムやアプリの大規模更新を標準でサポートされます。
  3. 3. User Driver 種類 概要 GPS GPS HID Human Interface Devices (HID), Touch pads, keyboards, and game controllers Sensors Sensors measure and report the conditions of the physical environment. Audio audio drivers
  4. 4. Peripheral I/O • I2C • PWM • I2S • GPIO • SPI へのアクセスをAPIレベルでサポート
  5. 5. FaBo接続の拡張時
  6. 6. Version Version DP Version Release Date 0.51 DP5.1 August 2017 0.50 DP5.0 August 2017 0.41 DP4.1 June 2017 0.40 DP4.0 May 2017 現在、Versionは、DP(Developer Preview)。 正式版のリリースの発表は未定。 DP5.1では、OS Versionは8.0 Oreoが内包。
  7. 7. AIY Project
  8. 8. AIY Project I2S Mic I2S Speaker GPIO
  9. 9. 対応ボード Board Support Package(BSP)をGoogleが提供するボード NXP Pico i.MX7D Raspberry Pi 3 NXP SprIoT i.MX6UL NXP Argon i.MX6UL NXP Pico i.MX6UL Edison JOULE Edison, JOULEは、Intelが2017年12月16日出荷分で終了。 Discontinued.
  10. 10. DevBoard NXP i.MX7D NXP i.MX6UL Raspi3 Display DSI No HDMI + DSI Camera CSI-2 NO CSI-2 USB 1x USB 2.0 Host 1x USB 2.0 OTG 1x USB 2.0 Host 1x USB 2.0 OTG 4x USB 2.0 Host ADB USB経由でアプリ転送可能 USB経由でアプリ転送可能 Wifi経由でアプリ転送可能 $79 $69 ¥5,500
  11. 11. PIN Header NXP i.MX7D NXP i.MX6UL Raspi3
  12. 12. PICO-PI-IMX7-STARTKIT $169
  13. 13. ADB
  14. 14. RaspPi3 HDMI 5 インチ Display ¥4,000 RaspPi3 ¥5,500
  15. 15. Android Things Console OTA(Over To Air)によるSystem Imageの更新やアプリケーションの更新が可能
  16. 16. 各社動向 • QualcommのLTE統合Snapdragon 210がGoogleのIoT OS 、Android Thingsをサポート • 台湾MediaTek社は、Google AssistantとAndroid Thingsの 双方に対応したSoCとして「MT8516」を発表 • Googleが、Android ThingsをサポートしたCLOUD IOT COREをPublic Betaで公開
  17. 17. PICO-PI-IMX7-STARTKITにFaBo装着
  18. 18. RaspPi3にFaBo装着
  19. 19. アプリ開発 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.gclue.thingsApp"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <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.IOT_LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> AndroidManifest.xml com.google.android.thingsのライ ブラリ使用を宣言
  20. 20. Gradle apply plugin: 'com.android.application' android { compileSdkVersion 26 buildToolsVersion "26.0.2" defaultConfig { applicationId “com.gclue.thingsApp" minSdkVersion 21 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8' testCompile 'junit:junit:4.12' provided 'com.google.android.things:androidthings:0.5.1-devpreview' } dependenciesに、 “com.google.android.things.androidthings:0. 5.1-devpreview” を追加
  21. 21. GPIO
  22. 22. GPIO(Lチカ) PeripheralManagerService service = new PeripheralManagerService(); try { mLedGpio = service.openGpio(PIN_NAME); mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); mHandler.post(mBlinkRunnable); } catch (IOException e) { Log.e(TAG, "Error on PeripheralIO API", e); } private Gpio mLedGpio; private String PIN_NAME = "BCM4"; private Handler mHandler = new Handler(); private static final int INTERVAL_BETWEEN_BLINKS_MS = 1000;
  23. 23. private Runnable mBlinkRunnable = new Runnable() { @Override public void run() { if (mLedGpio == null) { return; } try { trigger = !trigger; mLedGpio.setValue(!mLedGpio.getValue()); mHandler.postDelayed(mBlinkRunnable, INTERVAL_BETWEEN_BLINKS_MS); } catch (IOException e) { Log.e(TAG, "Error on PeripheralIO API", e); } } }; GPIO(Lチカ)
  24. 24. GPIO private Gpio mButtonGpio; private String PIN_NAME = "BCM4"; PeripheralManagerService service = new PeripheralManagerService(); try { mButtonGpio = service.openGpio(PIN_NAME); mButtonGpio.setDirection(Gpio.DIRECTION_IN); mButtonGpio.setEdgeTriggerType(Gpio.EDGE_BOTH); mButtonGpio.registerGpioCallback(mCallback); } catch (IOException e) { Log.e(TAG, "Error on PeripheralIO API", e); } 定数 GPIO Gpio.DIRECTION_IN 入力 Gpio.DIRECTION_OUT_INITIALLY_HIGH 出力(初期値 HIGH) Gpio.DIRECTION_OUT_INITIALLY_LOW 出力(初期値 LOW) private GpioCallback mCallback = new GpioCallback() { @Override public boolean onGpioEdge(Gpio gpio) { Log.i(TAG, gpio.getName() + "が" + gpio.getValue()); return true; } }; 定数 GPIO Gpio.EDGE_BOTH どちらにも反応 Gpio.EDGE_FALLING HighからLowの変化に反応 Gpio.EDGE_RISING LowからHighの変化に反応 Gpio.EDHE_NONE 割り込みイベントに反応しない
  25. 25. I2C
  26. 26. I2C Si7053 SCL SDA VCC GND 4つの配線でAndroid Thingsとつなぐ SDA, SCL, VCC, GND
  27. 27. I2C /** I2C Device Name */ private static final String I2C_DEVICE_NAME = "I2C1"; /** I2C Slave Address */ private static final int I2C_ADDRESS = 0x53; PeripheralManagerService manager = new PeripheralManagerService(); mDevice = manager.openI2cDevice(I2C_DEVICE_NAME, I2C_ADDRESS); mDevice.writeRegByte(ADDRESS, data); 書き込み 読み込み mDevice.writeRegBuffer(ADDRESS, data, data.length); mDevice.readRegByte(ADDRESS, data); mDevice.readRegBuffer(ADDRESS, data, data.length); デバイスのオープン 宣言
  28. 28. MEMS Micro Electro Mechanical Systemsの略 MEMS(メムス、Micro Electro Mechanical Systems)は、機械要素部品、センサ、アクチュエータ、 電子回路を一つのシリコン基板、ガラス基板、有機材料などの上に集積化したデバイスを指す。プロセ ス上の制約や材料の違いなどにより、機械構造と電子回路が別なチップになる場合があるが、このよう なハイブリッドの場合もMEMSという。 (Wikiより) https://ja.wikipedia.org/wiki/MEMS I2Cにアクセスできれば、MEMSセンサーとの連携が可能になる
  29. 29. 最近のMEMS(I2C対応)ニュース mCubeが世界最小となる1mmx1mmの加速度センサ ー(MC3571)を発表 http://www.mcubemems.com/news-events/press-releases/mcube-mc3571-pr/ InvenSenseが世界初となる3コア搭載のモーションセン サーを発表 http://ir.invensense.com/phoenix.zhtml?c=237953&p=irol-newsArticle&ID=2003597 maxim integratedが、脈と酸素飽和度が計測可能な MAX30100を発表 https://www.maximintegrated.com/jp/products/analog/sensors-and-sensor- interface/MAX30100.html Boschがガス、湿度、温度、大気圧の計測が可能な環境 センサーBME680を発表 http://prtimes.jp/main/html/rd/p/000000139.000005028.html
  30. 30. その他 • SPI Display, Sensor等 • I2S マイク、スピーカー等
  31. 31. 宇都宮大学でのThingsの講座 2017年度の試み http://docs.fabo.io/things/ テキスト(現在作成中) 既存のAndroid + ハードウェアの授業を Android Thingsに置き換え

×