2014-05-28 ワイヤレスジャパン 講演資料

38
BLEを使って スマホアクセサリ作ろう! 日本Androidの会 秋葉原支部 アクセサリ部 江口 和幸

Upload: egupyon

Post on 22-Jun-2015

708 views

Category:

Technology


3 download

DESCRIPTION

ワイヤレスジャパン2014で講演した『BLEを使ってスマホアクセサリを作ろう!』の資料です。

TRANSCRIPT

Page 1: 2014-05-28 ワイヤレスジャパン 講演資料

BLEを使って スマホアクセサリ作ろう!

日本Androidの会 秋葉原支部 アクセサリ部 江口 和幸

Page 2: 2014-05-28 ワイヤレスジャパン 講演資料

自己紹介 ■名前 江口 和幸(えぐち かずゆき) ■年齢 37歳   ■職業 ものづくりを大事にするシステムエンジニアです! ■趣味  ドライブ=旅行、 電子工作 、マラソン、スキューバーダイビング ■主に活動している場 ・日本Androidの会 秋葉原支部 アクセサリ部 ・日本Androidの会 秋葉原支部 コスプレ理系女子普及部 ・さくらボードユーザー会 ■Twitter

@KazuyukiEguchi

Page 3: 2014-05-28 ワイヤレスジャパン 講演資料

突然!質問です

� Twitter , Facebookなどのソーシャルサービスを利用している人?は挙手してください。

Page 4: 2014-05-28 ワイヤレスジャパン 講演資料

近い将来

� ソーシャルサービスで、会話している相手は、人間だけではなく、マシンとも会話しているかもしれない。

Page 5: 2014-05-28 ワイヤレスジャパン 講演資料

バッテリ残量をつぶやいています

Page 6: 2014-05-28 ワイヤレスジャパン 講演資料

歩数や距離をつぶやいていたり

Page 7: 2014-05-28 ワイヤレスジャパン 講演資料

既にマシン(スマホ)が 情報を発信し始めています

Page 8: 2014-05-28 ワイヤレスジャパン 講演資料

アクセサリを自作して もっとつぶやかせましょう!

Page 9: 2014-05-28 ワイヤレスジャパン 講演資料

今、何故BLEなのか?

Page 10: 2014-05-28 ワイヤレスジャパン 講演資料

やっと!

国内のキャリアから発売される

夏モデルのAndroid端末の バージョンが4.4で、

BLE搭載機種が出てきたから!

Page 11: 2014-05-28 ワイヤレスジャパン 講演資料

BLE(Bluetooth Low Energy) �  近距離無線通信技術Bluetoothの拡張の1つで、極低電

力で通信可能なもの。2010年7月に発表されたBluetooth 4.0規格の一部として策定された。

�  免許なく使える2.4GHz(ISMバンド)の電波を使い、最大1Mbpsの通信が可能。対応チップは従来の1/3程度の電力で動作することができ、ボタン電池1つで数年稼働することができるとされている。各種センサーや体に身につける小型の装置などでの利用が見込まれている。

引用:e-Words http://e-words.jp/w/BLE.html

Page 12: 2014-05-28 ワイヤレスジャパン 講演資料

よく使われるBLEモジュール

Laird Technologies Wireless M2M

BL600

Bluegiga Technologies BLE112-A

Page 13: 2014-05-28 ワイヤレスジャパン 講演資料

人気な理由

・技適マークを取得済み ・入手しやすい(通販で買える) ・価格も安い(1個1500円程度) ・UART以外にも、I2C、SPIなどもI/Oがある ・マイコンを内蔵していて、BASIC言語で開発できる

Page 14: 2014-05-28 ワイヤレスジャパン 講演資料

FRISKケースに入る BL600搭載基板

ランニングエレクトロニクス製 REBL600FR

4096円(税込み)

Page 15: 2014-05-28 ワイヤレスジャパン 講演資料

REBL600FRのいいところ!

BASICのプログラム書き換えは、 汎用FTDIのアダプタでできる!

※ファームウェアを書き換えるには、専用のツールが必要

Page 16: 2014-05-28 ワイヤレスジャパン 講演資料

開発環境

プログラムは Notepad++

を使って記述します。

コンパイル転送は UwTerminal で行います。

Page 17: 2014-05-28 ワイヤレスジャパン 講演資料

開発にあると便利なアプリ

iOS用 LightBlue Android用 B-BLE

Page 18: 2014-05-28 ワイヤレスジャパン 講演資料

BLEデバイス開発の 大まかな流れ

◯アドバタイズの設定   (デバイス名などをつぶやく) ◯サービスとキャラクタリステックの設定   (Generic Attribute Profile) ◯書き込みされた際の動作   (センサー類への出力動作) ◯読み出された際の動作   (センサー類からの入力動作)

Page 19: 2014-05-28 ワイヤレスジャパン 講演資料

接続したセンサー類 その1

秋月電子通商 ML8511

DIPモジュールキット

これからの季節!紫外線(UV)が気になりますよね?

Page 20: 2014-05-28 ワイヤレスジャパン 講演資料

接続したセンサー類 その2

秋月電子通商 AE-AQM0802 I2C接続小型

LCDモジュールピッチ 変換キット

Adafruit Mini 8x8 LED Matrix

w/I2C Backpack

Page 21: 2014-05-28 ワイヤレスジャパン 講演資料

試作したアクセサリの仕様 �  サービスUUID

9EF2BB2C-9ADB-448D-A628-D456425CDB58

�  キャラクタリステックUUID 00003000-0000-1000-8000-00805F9B34FB Matrix LED(0x70) WRITE 00003001-0000-1000-8000-00805F9B34FB Matrix LED(0x71) WRITE 00003002-0000-1000-8000-00805F9B34FB Matrix LED(0x72) WRITE 00003003-0000-1000-8000-00805F9B34FB Matrix LED(0x73) WRITE 00003004-0000-1000-8000-00805F9B34FB UVセンサーの値 READ,NOTIFY

Page 22: 2014-05-28 ワイヤレスジャパン 講演資料

とりあえずつぶやかせる

DIM rc DIM addr$ : addr$="" rc = BleAdvertStart(0,addr$,800,0,0) WAITEVENT

Page 23: 2014-05-28 ワイヤレスジャパン 講演資料

アクセスしてみると

Page 24: 2014-05-28 ワイヤレスジャパン 講演資料

オリジナルデバイス名にする

#define MANF_NAME "eguchi Technologies" #define MODELSTR "EGUCHI 600" #define SERIALNUM "1234" #define HWREV "1.00" #define SWREV "1.00" DIM rc DIM addr$ : addr$="" DIM dvcNme$ : dvcNme$= MODELSTR DIM MinConnInt : MinConnInt = 500000 DIM MaxConnInt : MaxConnInt = 1000000 DIM ConnSupTO : ConnSupTO = 4000000 rc = BleGapSvcInit(dvcNme$,0,0,MinConnInt,MaxConnInt,ConnSupTO,0) rc = BleSvcRegDevInfo(MANF_NAME,MODELSTR,SERIALNUM,HWREV,SWREV,"","","") rc = BleAdvertStart(0,addr$,800,0,0) WAITEVENT

Page 25: 2014-05-28 ワイヤレスジャパン 講演資料

動作させると

Page 26: 2014-05-28 ワイヤレスジャパン 講演資料

一度接続すると デバイスが見えなくなるので!

FUNCTION HndlrBleMsg(BYVAL nMsgId AS INTEGER, BYVAL nCtx AS INTEGER)

SELECT nMsgId CASE 0 CASE 1 rc = BleAdvertStart(0,addr$,800,0,0) CASE ELSE ENDSELECT

ENDFUNC 1 ONEVENT EVBLEMSG CALL HndlrBleMsg rc = BleGapSvcInit(dvcNme$,0,0,MinConnInt,MaxConnInt,ConnSupTO,0) rc = BleSvcRegDevInfo(MANF_NAME,MODELSTR,SERIALNUM,HWREV,SWREV,"","","") rc = BleAdvertStart(0,addr$,800,0,0) WAITEVENT

Page 27: 2014-05-28 ワイヤレスジャパン 講演資料

オリジナルサービスを作る Sub OriginalSvc()   dim rc

dim uuid$ : uuid$ = "9EF2BB2C9ADB448DA628D456425CDB58”   uuid$ = StrDehexize$(uuid$)   dim svc_uuid : svc_uuid = BleHandleUuid128(uuid$)

  rc = BleSvcCommit(1,svc_uuid,hSvc) endsub ONEVENT EVBLEMSG CALL HndlrBleMsg rc = BleGapSvcInit(dvcNme$,0,0,MinConnInt,MaxConnInt,ConnSupTO,0) rc = BleSvcRegDevInfo(MANF_NAME,MODELSTR,SERIALNUM,HWREV,SWREV,"","","") OriginalSvc() rc = BleAdvertStart(0,addr$,800,0,0) WAITEVENT

Page 28: 2014-05-28 ワイヤレスジャパン 講演資料

オリジナルサービスが増えた!

Page 29: 2014-05-28 ワイヤレスジャパン 講演資料

キャラクタを作る Sub OriginalSvc()   dim rc

  〜略〜

dim uuid$ : uuid$ = "9EF2BB2C9ADB448DA628D456425CDB58”   uuid$ = StrDehexize$(uuid$)   dim svc_uuid : svc_uuid = BleHandleUuid128(uuid$)

  rc = BleSvcCommit(1,svc_uuid,hSvc)

  mdAttr = BleAttrMetadata(BLE_ATTR_ACCESS_NONE,BLE_ATTR_ACCESS_OPEN,8,0,rc)   mdCccd = BLE_CHAR_METADATA_ATTR_NOT_PRESENT   mdSccd = BLE_CHAR_METADATA_ATTR_NOT_PRESENT   chProp = BLE_CHAR_PROPERTIES_WRITE

  rc = BleCharNew(chProp, BleHandleUuid16(0x3000),mdAttr,mdCccd,mdSccd)   attr$="\00\00\00\00\00\00\00\00”   rc = BleCharCommit(hSvc,attr$,hChar1) endsub

Page 30: 2014-05-28 ワイヤレスジャパン 講演資料

キャラクタができた!

Page 31: 2014-05-28 ワイヤレスジャパン 講演資料

キャラクタに書き込まれた 値を取得する

function HandlerCharVal(BYVAL charHandle, BYVAL offset, BYVAL len) as integer

dim at$ dim rc

if charHandle == hChar1 then rc = BleCharValueRead(charHandle,at$) PRINT at$ endif

endfunc 1 ONEVENT EVCHARVAL CALL HandlerCharVal ONEVENT EVBLEMSG CALL HndlrBleMsg

Page 32: 2014-05-28 ワイヤレスジャパン 講演資料

入力した値が取得できた

Page 33: 2014-05-28 ワイヤレスジャパン 講演資料

Matrix LEDの制御 その1 function setMatrix(BYVAL nSlaveAddr,BYVAL data$ as string) as integer

dim rc dim handle dim stWrite$, stRead$, nReadLen stRead$ = "" nReadLen = 0 rc = I2cOpen(100000,0,handle) if rc!= 0 then print "\nFailed to open I2C interface with error code ";rc;"\n" exitfunc rc else endif

stWrite$ = "\21" rc = I2cWriteRead(nSlaveAddr,stWrite$,stRead$,nReadLen) stWrite$ = "\81" rc = I2cWriteRead(nSlaveAddr,stWrite$,stRead$,nReadLen) stWrite$ = "\e8" rc = I2cWriteRead(nSlaveAddr,stWrite$,stRead$,nReadLen) rc = I2cWriteRead(nSlaveAddr,data$,stRead$,nReadLen) I2cClose(handle)

endfunc rc

Page 34: 2014-05-28 ワイヤレスジャパン 講演資料

Matrix LEDの制御 その2 function HandlerCharVal(BYVAL charHandle, BYVAL offset, BYVAL len) as integer

dim at$ dim rc dim value$

if charHandle == hChar1 then value$ = "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" rc = BleCharValueRead(charHandle,at$)

rc = strsetblock(value$,STRGETCHR(at$,0),1,1) rc = strsetblock(value$,STRGETCHR(at$,1),3,1) rc = strsetblock(value$,STRGETCHR(at$,2),5,1) rc = strsetblock(value$,STRGETCHR(at$,3),7,1) rc = strsetblock(value$,STRGETCHR(at$,4),9,1) rc = strsetblock(value$,STRGETCHR(at$,5),11,1) rc = strsetblock(value$,STRGETCHR(at$,6),13,1) rc = strsetblock(value$,STRGETCHR(at$,7),15,1) rc = setMatrix(0x70,value$) endif

endfunc 1

Page 35: 2014-05-28 ワイヤレスジャパン 講演資料

デモ 1

使用しているAndroid端末は、Galaxy S5

Page 36: 2014-05-28 ワイヤレスジャパン 講演資料

デモ 2

使用しているAndroid端末は、Galaxy S5

Page 37: 2014-05-28 ワイヤレスジャパン 講演資料

まとめ

Android 4.4搭載の端末が、国内キャリアから多数発売される。 BLEデバイスを作れば、Androidだけではなく、iOSも対応できる。 BLEデバイスはマイコンを搭載しているので、センサーなどを付けて、BASIC言語で、オリジナルBLEデバイスを開発できます。

Page 38: 2014-05-28 ワイヤレスジャパン 講演資料

告知 日本Androidの会 秋葉原支部

第20回 アクセサリ部の定例会を開催します

�  日時:2014年6月21日(土) 15:00−17:00 この後、懇親会あり

�  場所:若松通商 6F(アキバNET館)

�  詳細は

http://goo.gl/ibF2Hw いますぐアクセス!