この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 最新リビジョン 両方とも次のリビジョン | ||
kb:mbed-ble [2014/06/18 23:15] t-matsuoka [デバイス名を設定するには?] |
kb:mbed-ble [2014/07/17 21:57] t-matsuoka [注意事項] |
||
---|---|---|---|
ライン 2: | ライン 2: | ||
{{projects:20140618e.jpg?400}} | {{projects:20140618e.jpg?400}} | ||
+ | ひょんなことから、発売前にmbed HRM1017を先行利用する機会に。 | ||
+ | mbedほぼ初めて。(mbed LPC1114でLチカしたくらい。) | ||
+ | Bluetooth初めて。もちろん、Bluetooth LEも初めてからの挑戦です~。 | ||
+ | (MLN松岡) | ||
- | ===== 小ネタ ===== | + | [[kb:mbed-ble:memo|日々のメモ]] |
- | ==== ペアリングできるようにするには? ==== | + | ===== 注意事項 ===== |
+ | *Nordic mkit向けのプログラムを流用するときは、クロックの設定を変更する必要があります。[[https://mbed.org/teams/Switch-Science/wiki/mbed-HRM1017をはじめよう#low-frequency-clock|参照]] | ||
+ | *Nordic mkit用ライブラリは大きく2種類あります。 | ||
+ | *{BLE_API_Native} | ||
+ | *{BLE_API+nRF51822} <- こちらが最新 | ||
+ | *mbed HRM1017用ライブラリに修正されたものはこちらです。 | ||
+ | *{BLE_API_Native}->{BLE_API_Native_IRC} | ||
+ | *{BLE_API+nRF51822}->なし(左記ライブラリがそのままmbed HRM1017で動くようになる予定) | ||
+ | *{BLE_API_Native}と{BLE_API+nRF51822}はAPI互換ではないため、ライブラリを切り替えた場合はプログラムの修正が必要です。 | ||
- | AdvertiseのDiscoverableを有効にします。 | + | ===== BLE_Health_Thermometer_IRC ===== |
- | <code cpp> | + | *{BLE_API_Native_IRC}を使った、Health Thermometerのプログラムです。 |
- | advData.addFlags((GapAdvertisingData::Flags)(GapAdvertisingData::LE_GENERAL_DISCOVERABLE | GapAdvertisingData::BREDR_NOT_SUPPORTED)); | + | |
- | </code> | + | |
==== デバイス名を設定するには? ==== | ==== デバイス名を設定するには? ==== | ||
- | AdvertiseにSHORTENED_LOCAL_NAMEを追加します。文字コードはUTF-8です。 | + | ペアリング前に表示されるデバイス名は、AdvertiseにSHORTENED_LOCAL_NAMEを追加します。文字コードはUTF-8です。 |
<code cpp> | <code cpp> | ||
const char* deviceName = "\xe3\x81\xa4\xe3\x81\xbcmbedHRM1017"; | const char* deviceName = "\xe3\x81\xa4\xe3\x81\xbcmbedHRM1017"; | ||
- | advData.addData(GapAdvertisingData::SHORTENED_LOCAL_NAME, (uint8_t*)deviceName, strlen(deviceName) + 1); | + | advData.addData(GapAdvertisingData::SHORTENED_LOCAL_NAME, (uint8_t*)deviceName, strlen(deviceName)); |
</code> | </code> | ||
{{wiki:20140618f.png?200}} | {{wiki:20140618f.png?200}} | ||
- | > 問題有り。ペアリング前はAdvertiseに含まれる名前を表示するが、ペアリング後は別の情報みたい。 | + | ペアリング後に表示されるデバイス名は、nrf.init()後にsd_ble_gap_device_name_set()を追加します。 |
- | > GATTのDevice Information Serviceが必要か? | + | <code> |
+ | nrf.init(); | ||
- | ===== Windows関連 ===== | + | const char* deviceName = "\xe3\x81\xa4\xe3\x81\xbcmbedHRM1017"; |
+ | ble_gap_conn_sec_mode_t sec_mode; | ||
+ | BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode); | ||
+ | sd_ble_gap_device_name_set(&sec_mode, (const uint8_t*)deviceName, strlen(deviceName)); | ||
+ | </code> | ||
+ | {{kb:20140624a.png?200}} | ||
+ | |||
+ | ==== Windowsとペアリングできるようにするには? ==== | ||
+ | |||
+ | AdvertiseのDiscoverableを有効にします。 | ||
+ | <code cpp> | ||
+ | advData.addFlags((GapAdvertisingData::Flags)(GapAdvertisingData::LE_GENERAL_DISCOVERABLE | GapAdvertisingData::BREDR_NOT_SUPPORTED)); | ||
+ | </code> | ||
+ | |||
+ | ===== Windowsアプリ ===== | ||
+ | *Windowsは8以降でBluetooth LEに対応しています。 | ||
+ | *Windows 8以降で、Bluetooth LE用のNative APIがあります。 | ||
+ | *Windows 8.1以降で、Bluetooth LE用のWinRT APIがあります。 | ||
+ | *[[https://github.com/matsujirushi/mjwinble|mjwinble]]では、開発利便性と知識継続の観点から、WindowsデスクトップアプリからWinRT APIを呼び出す方法を選択しています。 | ||
==== Windows8と接続するには? ==== | ==== Windows8と接続するには? ==== | ||
ライン 43: | ライン 72: | ||
3.Bluetooth SMART Devicesに表示されているデバイスを選択します。\\ | 3.Bluetooth SMART Devicesに表示されているデバイスを選択します。\\ | ||
- | ===== メモ ===== | ||
- | |||
- | ==== 6/14メモ ==== | ||
- | *下調べ。 | ||
- | *開発チームはココ。[[https://mbed.org/teams/Bluetooth-Low-Energy/wiki/Homepage|mbed BLE API homepage]] | ||
- | *使っているハードウェアは、nRF51822 Evaluation Kit。 | ||
- | *GAPとGATTに対応。 | ||
- | *GATTのサンプルコードは、[[http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_HeartRate/|BLE_HeartRate]]。 | ||
- | *BLEDevice,GattService,GattCharacteristicクラス。 | ||
- | *静的変数を用意しておき、Characteristicクラスに紐づけておくことで、BLEのCharacteristicと同期される模様。 | ||
- | |||
- | ==== 6/15メモ ==== | ||
- | *ハードウェアが手元に届いた。[[https://www.facebook.com/photo.php?fbid=512309988896759|mbed HRM1017]] | ||
- | *mbedオンラインコンパイラのPlatformは、Nordic nRF51822を選択する。 | ||
- | *内蔵オシレーター32KHzなので注意。(nRF51822-mKITは、外部32KHz。) | ||
- | *コンパイル結果のHEXファイルをmbedドライブへコピーすれば書き込める。ブラウザから直書きはダメ。一旦、ローカル保存を経由する。 | ||
- | *SurfacePro2のペアリングには何も表示されない。 | ||
- | *[[http://apps.microsoft.com/windows/app/eg-bluetooth-smart-gatt-profile/87207696-068a-410c-bfdd-a96f44d43b3f|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 | ||
- | *恐ろしい[[http://sviluppomobile.blogspot.jp/2014/02/ble-for-windows-81-part-i.html|記述]]を発見。「Windows 8.1 supports only GATT client mode.」 | ||
- | |||
- | ==== 6/17メモ ==== | ||
- | *mbed HRM1017(BLE_Health_Thermometer_IRC改) + SurfacePro2(BluetoothSmartDeviceGATTProfileChecker)で、接続に成功。 | ||