内容へ移動
MakerLabNagoya Wiki
ユーザ用ツール
ログイン
サイト用ツール
ツール
ソースの表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
最近の変更
メディアマネージャー
サイトマップ
現在位置:
Maker Lab Nagoya Wiki
»
知識ベース
»
mbed HRM1017
»
日付別メモ
トレース:
•
日付別メモ
サイドバー
サイドバー
TOP ページ
Maker Lab Nagoya 工具リスト
卓上旋盤
レーザー加工機
知識ベース
mbed HRM1017
日付別メモ
タッピング盤
PlayGround
projects
立看板の製作
Quadcopterで遊ぶ(planning)
編み機hack(execution)
Welcome to your new DokuWiki
Formatting Syntax
DokuWiki
ワークショップ・勉強会
これから始める Arduino講座
第5回 2014年11月29日
第6回 2015年01月10日
第4回 2014年10月05日
第3回 2014年08月31日
第2回 2014年08月02日
第1回 2014年4月29日
帰ってきた Arduino講座!
第7回 2015年12月26日
サイドバー
FAQ
イベント
外部リンク
MakerLabNagoya Web
MakerLabNagoya FB
MakerLabNagoya Twitter
編集
kb:mbed-ble:memo
目次
日付別メモ
6/14メモ
6/15メモ
6/16メモ
6/17メモ(Win8.1StoreApp)
6/17メモ
6/18メモ
6/20メモ
6/24メモ
7/5メモ
7/7メモ
7/8メモ
7/10メモ
7/15メモ
7/16メモ
7/18メモ
7/22メモ
日付別メモ
6/14メモ
下調べ。
開発チームはココ。
mbed BLE API homepage
使っているハードウェアは、nRF51822 Evaluation Kit。
GAPとGATTに対応。
GATTのサンプルコードは、
BLE_HeartRate
。
BLEDevice,GattService,GattCharacteristicクラス。
静的変数を用意しておき、Characteristicクラスに紐づけておくことで、BLEのCharacteristicと同期される模様。
6/15メモ
ハードウェアが手元に届いた。
mbed HRM1017
mbedオンラインコンパイラのPlatformは、Nordic nRF51822を選択する。
内蔵オシレーター32KHzなので注意。(nRF51822-mKITは、外部32KHz。)
コンパイル結果のHEXファイルをmbedドライブへコピーすれば書き込める。ブラウザから直書きはダメ。一旦、ローカル保存を経由する。
SurfacePro2のペアリングには何も表示されない。
EG Bluetooth Smart Device GATT Profile Checker
でも認識されない。
6/16メモ
mbed HRM1017(BLE_Health_Thermometer_
IRC
) + iPhone(Nordic Toolbox)は、認識できた。
mbed HRM1017(BLE_Health_Thermometer_
IRC
) + Nexus7(Nordic Toolbox)は、認識できず。というか、手元のNexus7はBLE未対応みたい。
BLE喋れるデバイスが、SurfacePro2とTOSHIBA DynabookTabしかない。両方、Win8.1。
なんとかしてWin8.1でBLE喋らせるしか道が無さそう。
Win8.1から、WinストアアプリでBLEできる模様。
BluetoothSIG提供の、ApplicationAcceleratorが使えそう。
GATT違いでダメでした。BLE_Health_Thermometer_IRCは「UUID_HEALTH_THERMOMETER_SERVICE = 0x1809,」で、ApplicationAcceleratorは「HeartRateMeasurement 0x2A37」。
明日、ApplicationAcceleratorのコードを書き換えてみることにしよう。
6/17メモ(Win8.1StoreApp)
GattServiceUuids.HeartRate = “{0000180d-0000-1000-8000-00805f9b34fb}”
Uuidを“180d-0000-0000-…“に変更。→Guidで例外。
GattDeviceService.GetDeviceSelectorFromUuid()をGattDeviceService.GetDeviceSelectorFromShortId(0x180d)に変更。→Not found
恐ろしい
記述
を発見。「Windows 8.1 supports only GATT client mode.」
6/17メモ
mbed HRM1017(BLE_Health_Thermometer_IRC改) + SurfacePro2(BluetoothSmartDeviceGATTProfileChecker)で、接続に成功。
6/18メモ
SHORTENED_LOCAL_NAMEのpayloadが正しいか不安だったので、Bluetooth specificationを確認したところ、長さ情報が無かった。したがって、終端の'\0'が必要と思われる。strlen()に+1が必要。
文字コードがUTF-8だということが分かったので、日本語が表示できるか試してみた。(必要なのか?疑問ではあるが。)
6/20メモ
ペアリング後のデバイス名を指定する方法を模索。
Bluetooth LE的には、Generic Access Service)(0x1800)のDevice Name Characteristic(0x2A00)を表示している。
mbed HRM1017のconstに、Generic Access Serviceが定義されていない。orz
無理にSerivceを登録したものの、思うように動かず。(名前変わらず。Advertisingまでおかしくなった。Winアプリによって、Generic Access Serviceが表示されたりされなかったり。)
Generic Access Serviceを登録しなくても、Winアプリに表示されていた。値はnRF5x。
nRFのライブラリ内で設定しているのか???
行き止まり。Generic Access ServiceはSoftDeviceで提供されているため、変更不可らしい。(
元ネタ
)
Device Information ServiceのManufacturer Nameでもダメ。ダメになると、何故かAdvertisingの名前もダメになる。
6/24メモ
mbedコンパイラでの検索操作が間違ってた。orz
CFG_GAP_LOCAL_NAMEに”nRF5x”が定義されていた。
深堀りすると、nRF51822n::init()→btle_init()→btle_gap_init()→sd_ble_gap_device_name_set()で設定していることが分かった。
こちらに類似情報あり。
How to discover a custom Bluetooth LE device
偶然、
mbed+HRM1017
の情報を発見。「なお mbed版 nRF51822ではライブラリ側に“Generic Access”と“Generic Attribute”が組み込まれているため」という記述がある。←0x1800,0x1801
7/5メモ
6/18メモの「Bluetooth specificationを確認したところ、長さ情報が無かった。」は間違いっぽい。掘り下げ中。vol3,PartB,3 Data Representationあたり。
data element = header field + data field
header field = type descripter + size descripter
type descripterは5bits
size descripterは3bits
The size index is contained in the least significant (loworder) 3 bits of the first byte of the data element header.
というわけで、6/18メモの「Bluetooth specificationを確認したところ、長さ情報が無かった。」は間違い。
以前によくわからなかったUUID。ここに載っていた。vol3,Part F,3,3.2 Basic Concepts。
7/7メモ
WindowsのBluetoothLEアクセス方法を再考。
Bluetooth LEの対応は、Windows8以降。
Windows8以降は、APIがある。SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces,SetupDiGetDeviceInterfaceDetailでサービスを探して、CreateFileでオープン。BluetoothGATTGetServicesやBleGetGattCharacteristicでアクセス。
Windows8.1は、WinRTにクラスが追加されている。Windows.Devices.Bluetooth.GenericAttributeProfile名前空間。
DesktopAppでも、(csprojを編集して)TargetPlatformVersionを8.1にして、Windowsコア参照すれば、WinRTのクラスが使える。
7/8メモ
WinRTクラスを確認。いろいろ難あり。
1.deviceだけの一覧を取得できない。(deviceとserviceの直積が得られる。)
2.serviceからcharacteristicの一覧を取得できない。(Windows Phoneだけは可能?)
特に、2.ができないのは開発時にツラい。
7/10メモ
DeviceInformationを掘り下げた結果、deviceやserviceの一覧取得に成功。
ライブラリ化した。
mjwinble
7/15メモ
WindowsでUUIDを生成したいときは、uuidgen。
7/16メモ
{BLE_
API
_Native_
IRC
}が、128bit UUID Characteristicに対応していないことが判明。{BLE_
API
+nRF51822}で対応している。
がっ! {BLE_
API
+nRF51822}だと、Windowsとのペアリング時にドライバエラーが発生して接続できず。orz
nRF51822のRev.31→33で、ペアリングできなくなっている。
BOND_MANAGERとPSTORAGEが無効になったことが影響している。両方とも有効にしてみたところ、ペアリングできた!
7/18メモ
PSTORAGEだけ有効ではダメ。
BOND_MANAGERを有効にするには、PSTORAGEも有効にする必要がある。(コンパイルエラー)
したがって、両方を有効にすることで、Windows 8.1とペアリング可能に。
NEED_BOND_MANAGERならびにNEED_PSTORAGEをdefineすると有効化できるようにコーディングしてあるように見受けられるが、定義するファイルが不明…。
mbed.orgに、カタコト英語で質問をポスト!
7/22メモ
NEED_BOND_MANAGERとNEED_PSTORAGEの件、
回答
あり。当面はライブラリ書き換えで対応する。
キャッシュ無しreadが4秒周期。vol3, Part C, 12.3 Peripheral Preferred Connection Paramterが作用している模様。
GAPから取得した値はこちら。“9001200300009001” → 500msec, 1000msec, 0, 4000msec.
btle_gap.cppのbtle_gap_init()で初期設定している。値はprojectconfig.hから。
Connection Supervision timeout multiplier(CFG_GAP_CONNECTION_SUPERVISION_TIMEOUT_MS)が4秒。
projectconfig.hを書き換えても、connection parameter変わらない!?Characteristicを読み出して確認。
kb/mbed-ble/memo.txt
· 最終更新: 2014/07/22 21:28 by
t-matsuoka
ページ用ツール
ソースの表示
以前のリビジョン
バックリンク
文書の先頭へ