Download - 2014-05-28 ワイヤレスジャパン 講演資料
![Page 1: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/1.jpg)
BLEを使って スマホアクセサリ作ろう!
日本Androidの会 秋葉原支部 アクセサリ部 江口 和幸
![Page 2: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/2.jpg)
自己紹介 ■名前 江口 和幸(えぐち かずゆき) ■年齢 37歳 ■職業 ものづくりを大事にするシステムエンジニアです! ■趣味 ドライブ=旅行、 電子工作 、マラソン、スキューバーダイビング ■主に活動している場 ・日本Androidの会 秋葉原支部 アクセサリ部 ・日本Androidの会 秋葉原支部 コスプレ理系女子普及部 ・さくらボードユーザー会 ■Twitter
@KazuyukiEguchi
![Page 3: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/3.jpg)
突然!質問です
� Twitter , Facebookなどのソーシャルサービスを利用している人?は挙手してください。
![Page 4: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/4.jpg)
近い将来
� ソーシャルサービスで、会話している相手は、人間だけではなく、マシンとも会話しているかもしれない。
![Page 5: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/5.jpg)
バッテリ残量をつぶやいています
![Page 6: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/6.jpg)
歩数や距離をつぶやいていたり
![Page 7: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/7.jpg)
既にマシン(スマホ)が 情報を発信し始めています
![Page 8: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/8.jpg)
アクセサリを自作して もっとつぶやかせましょう!
![Page 9: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/9.jpg)
今、何故BLEなのか?
![Page 10: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/10.jpg)
やっと!
国内のキャリアから発売される
夏モデルのAndroid端末の バージョンが4.4で、
BLE搭載機種が出てきたから!
![Page 11: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/11.jpg)
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 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/12.jpg)
よく使われるBLEモジュール
Laird Technologies Wireless M2M
BL600
Bluegiga Technologies BLE112-A
![Page 13: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/13.jpg)
人気な理由
・技適マークを取得済み ・入手しやすい(通販で買える) ・価格も安い(1個1500円程度) ・UART以外にも、I2C、SPIなどもI/Oがある ・マイコンを内蔵していて、BASIC言語で開発できる
![Page 14: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/14.jpg)
FRISKケースに入る BL600搭載基板
ランニングエレクトロニクス製 REBL600FR
4096円(税込み)
![Page 15: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/15.jpg)
REBL600FRのいいところ!
BASICのプログラム書き換えは、 汎用FTDIのアダプタでできる!
※ファームウェアを書き換えるには、専用のツールが必要
![Page 16: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/16.jpg)
開発環境
プログラムは Notepad++
を使って記述します。
コンパイル転送は UwTerminal で行います。
![Page 17: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/17.jpg)
開発にあると便利なアプリ
iOS用 LightBlue Android用 B-BLE
![Page 18: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/18.jpg)
BLEデバイス開発の 大まかな流れ
◯アドバタイズの設定 (デバイス名などをつぶやく) ◯サービスとキャラクタリステックの設定 (Generic Attribute Profile) ◯書き込みされた際の動作 (センサー類への出力動作) ◯読み出された際の動作 (センサー類からの入力動作)
![Page 19: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/19.jpg)
接続したセンサー類 その1
秋月電子通商 ML8511
DIPモジュールキット
これからの季節!紫外線(UV)が気になりますよね?
![Page 20: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/20.jpg)
接続したセンサー類 その2
秋月電子通商 AE-AQM0802 I2C接続小型
LCDモジュールピッチ 変換キット
Adafruit Mini 8x8 LED Matrix
w/I2C Backpack
![Page 21: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/21.jpg)
試作したアクセサリの仕様 � サービス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 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/22.jpg)
とりあえずつぶやかせる
DIM rc DIM addr$ : addr$="" rc = BleAdvertStart(0,addr$,800,0,0) WAITEVENT
![Page 23: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/23.jpg)
アクセスしてみると
![Page 24: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/24.jpg)
オリジナルデバイス名にする
#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 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/25.jpg)
動作させると
![Page 26: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/26.jpg)
一度接続すると デバイスが見えなくなるので!
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 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/27.jpg)
オリジナルサービスを作る 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 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/28.jpg)
オリジナルサービスが増えた!
![Page 29: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/29.jpg)
キャラクタを作る 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 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/30.jpg)
キャラクタができた!
![Page 31: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/31.jpg)
キャラクタに書き込まれた 値を取得する
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 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/32.jpg)
入力した値が取得できた
![Page 33: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/33.jpg)
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 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/34.jpg)
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 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/35.jpg)
デモ 1
使用しているAndroid端末は、Galaxy S5
![Page 36: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/36.jpg)
デモ 2
使用しているAndroid端末は、Galaxy S5
![Page 37: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/37.jpg)
まとめ
Android 4.4搭載の端末が、国内キャリアから多数発売される。 BLEデバイスを作れば、Androidだけではなく、iOSも対応できる。 BLEデバイスはマイコンを搭載しているので、センサーなどを付けて、BASIC言語で、オリジナルBLEデバイスを開発できます。
![Page 38: 2014-05-28 ワイヤレスジャパン 講演資料](https://reader034.vdocuments.pub/reader034/viewer/2022050723/5587836ed8b42a9d7d8b460c/html5/thumbnails/38.jpg)
告知 日本Androidの会 秋葉原支部
第20回 アクセサリ部の定例会を開催します
� 日時:2014年6月21日(土) 15:00−17:00 この後、懇親会あり
� 場所:若松通商 6F(アキバNET館)
� 詳細は
http://goo.gl/ibF2Hw いますぐアクセス!