質問: ### 前提・実現したいこと 私は今、BLENano2と呼ばれるBLEモジュールを用いて開発を行っています。 そこでIPhone8とのBLE通信を行おうと考えています。 開発環境として"Nordic SDK 15.0.0"を用いて、keilというIDEで開発を行います。 また、IPhoneでは"nRFconnect"というアプリでスキャンします。 セントラル:IPhone8 ペリフェラル:BLENano2 ### 発生している問題・エラーメッセージ ``` SDKでBLEの関数を使用するにはソフトデバイス(s132)をBLENano2に書き込まないといけません。 ソフトデバイスの書き込み方法が分からないため、ほかの方法を試そうとArduinoとMbedのサンプルプログラムで試しましたが、両方ともBLE通信を行うことができませんでした。 nRFconnectでスキャンしてもデバイスを見つけることができませんでした。 ``` ### 試したこと まず、BLENano2にファームウェア(v1.0)を書き込みました。 ArduinoもMbedも初めにBLENano2についているLED(D13)でのLチカプログラム(Blinkyみたいな名前のもの)で動作確認を行ったので、設定ミスではないと思われます。 Arduinoのセットアップはこちらを参考にしました。 Mbedはこちらを参考にしました。 またIPhone8側の操作としては、「設定」→「Bluetooth」でのペアリングしてあるものを事前に外しました。その後、BluetoothをOnにしてnRFconnectを起動してScanを開始します。 ### MbedはBLEのライブラリが全く動かないということを書いてある記事があったのでしょうがないかとは思いますが、ArduinoでBLE接続ができないのは何か原因があるのでしょうか? ### 追記 [SDK] BLENano2のソフトデバイス書き込み方法は、本当に正しいのかはわからないのですが、ドラッグアンドドロップすればよいだけとのことでした。 しかしそれでもBLE通信が開始されることはありませんでした。 [Arduino] "BLE_beacon"のプログラムでシリアルモニタで動作状況を確認しました。 おそらく"ble.startAdvertising();"でセントラル側へアドバタイズするのですが、その後の行やloopの中でSerial.plintlnで動作状況を確認しても、シリアルモニタに表示されるので、プログラムは正常に動いていると考えられます。 しかし、セントラル側でスキャンしようとしてもBLE通信可能デバイスとして検出されません。 iPhoneだけではなく、Android(Android4.4 API19)でも試してみました。Androidでも結果は変わらず、検出されませんでした。 Androidは自作のアプリで試しました。ほかのBLE通信デバイスとの接続確認済みなのでプログラムが原因ではなさそうです。
回答: 46psmさん、 Nordic SDK のサンプルコードのフォルダの、`nRF5_SDK_15.3.0_59ac345/examples/ble_peripheral/ble_app_hrs/hex/`フォルダ内にある、`ble_app_hrs_pca10040_s132.hex` をドラッグアンドドロップして、BLENano2に焼いて、**nRF Connect**アプリで、`Nordic_HRM` というのが見え、接続(Connect)もできました。 とりあえず、無線の動作は、↑のHEXファイルで、確認できると思います。 * 更新(2019-0327) こんな感じに、Nordic_HRMというデバイスが見えます。(BLENano2は、ラップトップPCに挿しっぱなし) !イメージ