【BLEブランクモジュール】太陽誘電EYSHCNZWZ評価キットの使い方
こんにちは。ムセンコネクト三浦です。
今日はBLEモジュールについてのお話です。
以前上記の記事でブランクモジュールを取り上げましたが、一口にBLEモジュールと言っても、製品に組み込んですぐにBLE通信を実現できるものだけではありません。
『ブランクモジュール』というファームウェアが書かれていないBLEモジュールもあるので、選定するときには自分の利用方法に合っているか注意が必要です。『ブランクモジュール』でBLE通信を実現するためには自分でファームウェアを作って、書き込むことが必要になります。
『ブランクモジュール』の対になる言葉として、製品に組み込んで簡単なコマンド制御でBLE通信を実現できるBLEモジュールを『コンプリートモジュール』と呼びます。
コンプリートモジュール LINBLE-Z1
LINBLE-Z1ではEYSHCNZWZをコアモジュールとして利用しています。
EYSHCNZWZはブランクモジュールとして売られている太陽誘電製のBLEモジュールです。このEYSHCNZWZにムセンコネクト独自のファームウェアを書き込み、コンプリートモジュールに仕上げたのがLINBLE-Z1なのです。
簡単に書くと、下記の図のような構成になっています。EYSHCNZWZはコアチップにNordic Semiconductor社のnRF52832を採用しています。
LINBLE-Z1はBLE通信を簡単に実現できるようにしたコンプリートモジュールですが、もしLINBLE-Z1を利用しないでBLE通信を実現しようとした場合は、BLE通信を適切に実現するファームウェアを自作してEYSHCNZWZに書き込む必要があります。
EYSHCNZWの評価キットを試してみる
EYSHCNZWZの評価キットであるEKSHCNZWZを使ってみました。
EKSHCNZWZはDigi-key等の部品サイトから購入できます。
EKSHCNZWZの箱の中には評価ボードのEBSHCNZWZ、JTAG Lite、接続ケーブルが入っています。
記述ドキュメントのダウンロードURLが書かれた紙も同梱されています。
ドキュメントに従い、
・nRFGo Studio
・nRF52 SDK
・SoftDevice
をダウンロード、インストールします。
今回は統合開発環境としてKeilではなくSES(segger embedded studio)を利用するようにします。
・nRFGo StudioはコアチップであるnRF52832の内部メモリを読み書きすることができるツールです。
・nRF52 SDKはnRF52シリーズ向けのソフトウェアを開発するときに利用するドライバ層や、サンプルソフトウェアを含んだソフトウェアパッケージです。
・SoftDeviceはnRF51/nRF52シリーズで利用するBLE通信のプロトコルスタックです。
・SESはnRF51/nRF52シリーズを利用する場合は無償で利用することができる統合開発環境です。Nordic Semiconductor社も利用を推奨しています。
技術ドキュメントに記載されているようにble_app_uartのサンプルを利用して、UART通信をBLE通信に変換して送信するプログラムを動かしてみます。
nRF5_SDK_14.2.0_17b948a\nRF5_SDK_14.2.0_17b948a\examples\ble_peripheral\
ble_app_uart\pca10040\s132\ses\ ble_app_uart_pca10040_s132.emProject
を開きます。
とりあえずサンプルそのままで動かしてみます。
Build -> Build Solution でプロジェクトをビルドします。
その後
Target -> Download ble_uart_app を選択し、EBSHCNZWZにファームウェアを書き込みます。
これでEBSHCNZWZの準備は出来上がりました。JTAGを外して、USBケーブルでパソコンに接続します。USBの仮想COMで動作しますので、Tera Termを動かして準備をします。
対向機としてiPhoneを利用します。nRF Toolboxのアプリをインストールし、アプリを起動します。UARTを選択します。
EBSHCNZWZは「Nordic UART」のデバイスネームでアドバタイズしているので、スキャンをすると一覧の中に表示されます。「Nordic_UART」をタップすると接続通信を開始します。
nRF Toolboxで、EBSHCNZWZに送信する文字列を設定して、送信を実行します。ここでは「123456」を送信しました。
iPhoneからEBSHCNZWZにBLE通信で送信され、Tera Termに「123456」が表示されました。
このように、太陽誘電の評価キットのEKSHCNZWZを使うと、技術ドキュメントの手順に従って操作するだけで比較的簡単にBLE通信を試すことができます。
技術ドキュメントやサンプルソースコードがあるのでここまでは簡単なのですが、この後、実際に製品に載せこもうとしたときに、トラブルがないようにBLE通信処理を作り込んでいくのはとても苦労します。
省電力処理や、タイミング制御など、BLE通信に関する技術ノウハウが必要になりますし、期待していたパフォーマンスが出ないこともしばしば。
BLE通信初心者の方が慣れないBLE通信に関するプログラミングをして製品開発をしたり技術検証をするには少なく見積もっても半年はかかるのではないでしょうか?
意外と苦労するポイントの例をいくつか挙げておきます。
- せっかくBLE通信を採用しているので、省電力な動作にしたくなりますが、ソフトウェアの作りが悪いと十分な省電力が実現できません。マイクロアンペアレベルで消費電力を削減していくにはトライアンドエラーでソフトウェアを変更しては電流測定器とにらめっこをする地道な作業が必要です。
- BLE通信のパフォーマンスについて、Web上にある情報を鵜呑みにしてしまうと思わぬ落とし穴がある場合があります。例えばBluetooth5.0ではここまで通信スピードが出るはずだと考えて製品仕様を決めていても、実際にソフトウェアを作ってみるとそこまでスピードが出せない場合があります。パフォーマンスを追求するには、更に深くBLE通信について学習し、ソフトウェアを作り込む必要があります。
- 対向機との通信で、例えばiPhoneとのBLE通信はうまくいっていたのに、AndroidスマートフォンとBLE通信させようとしたらうまくいかなくなることもあります。無線通信は何が起きているか解析がしづらいので、試行錯誤に時間をかけたり、高価なBLEのプロトコルアナライザが必要になる場合があります。
ブランクモジュールを使いたい、だけどファームウェア開発は難しそうと感じた方は?
ムセンコネクトではブランクモジュール用のファームウェア開発もお手伝いしております。ファームウェア全体の開発はもちろん、ファームウェアの一部分やアドバイス(コンサルティング)なども承っております。
また、ブランクモジュール用のファームウェア開発はどうしても時間がかかってしまいますので、すぐにBLE通信を試してみたい方は独自ファームウェアが搭載済みのコンプリートモジュールLINBLE-Z1もご用意しております。