2014年5月27日火曜日

BluetoothSMARTデバイスをmbed で開発する(2)


はじめに

前回のブログで弊社の取り組みについて紹介させていただきましたが、今回は第二回目として実際にmbedを使った開発について紹介させて頂きます。



関連記事
BluetoothSMARTデバイスをmbed で開発する(1)

BluetoothSMARTデバイスをmbed で開発する(3)
BluetoothSMARTデバイスをmbed で開発する(4)
BluetoothSMARTデバイスをmbed で開発する(5)
BluetoothSMARTデバイスをmbed で開発する(6)
BluetoothSMARTデバイスをmbed で開発する(7)
BluetoothSMARTデバイスをmbed で開発する(8)


ARMは、ARM Limited(またはその子会社)のEUまたはその他の国における登録商標です。mbedは、ARM Limited(またはその子会社)のEUまたはその他の国における商標です。All rights reserved.

実はまだまだ発展途上のプラットフォーム


弊社のデバイス開発の記事を見つけて、すぐにでもBluetoothSMARTが利用できるように感じられた方も多いかと思います。実はmbed版のプラットフォームはまだBLE関連APIの拡張の途中であり、現時点で使える機能はちょっとだけです。でも現在も着々と API拡張が進んでいて次々と機能が使えるようになりつつあります。新しいコードがコミットされるたびにとどんどん機能が増えていくのを見ていると期待感が膨らんできます。

つまり、今 mbed で一番熱いのが nRF51822なのです!!

ぜひ、ご期待下さい。

mbedプログラミング事始め

既にmbed 環境をお使いの方は熟知されているかと思いますが、おさらいとしてmbedを使いnRF51822向けのバイナリをコンパイルする方法について記載いたします。

この製品でも開発できます

もし展示会等でこの開発キットを購入されていた方はこれを使って開発することもできます。


開発キットに付属するNordic-SDKを使ってフル機能で開発もできますし、本ブログの記事に従ってプログラムをコンパイルすれば mbedとしても利用することができます。基板に載っているLEDはnRF51822-mKITと互換となっており、それ以外の端子もGPIO番号を参考にすれば利用できるはずです。著者もDIP化基板が完成するまでこのキットを使って実験を行っていました。

mbedの下準備

あらかじめInterfaceボードにnRF51822専用のファームウェアを書き込んでおきます。
ボードとPCをUSB接続するとMBEDという名称のドライブが現れます。
※専用ファームウェアについては次回公開を予定しております




そのドライブ内にあるmbed.htmファイルを開くと自動的にnRF51822-mKITプラットフォームが追加されます。まだmbedを使ったことのない方はユーザー登録画面が出ますので登録してから再度mbed.htm.を開いてください。
もし mbed interfaceを使わずSEGGER+nRFgoStudioを使用される場合は手動でnRF51822-mKITプラットフォームを追加すれば同様に使用できるようになります。





最初にmbed Compilerを開くとサンプルコードの選択画面が表示されます。
今回は動作テストとしてBLE_HertRateを選択します。このサンプルはBluetoothの標準プロファイル"Heart Rate"機能を模したものとなっています。ただし対象となる基板には HeartRate(心拍)の値を取得するためのセンサーは搭載されていないことから疑似値が出力されます。


Compileボタンを押すとコンパイルが始まり、コンパイルが完了すると自動的にバイナリがダウンロードされます。既存のmbedプラットフォームではbinファイルが生成されますが、このプラットフォームに限りhexファイルが生成されますので、モジュールに書き込むときはファイルを間違わないよう注意してください。



さきほどコンパイルしたバイナリをMBEDドライブにコピーすると、ブランクモジュールに書き込みが行われます。既存のmbedに比べてファイルサイズが特大なため書き込みに時間が掛かりますがファイルコピーのプログレスバーが動いていれば問題ありません。
もしMBEDドライブ内にエラーファイルが出来ている場合は接続を見直してください。
mbed Interfaceを使わずSEGGERで書き込まれる場合は Nordic-SDKに付属する nRFgoStudioを起動し"nrf51822 Programming"の項目から "EraseALL" と "Programming Application"を実行します。


正常に書き込みが終われば LED1,LED2に接続されたLED点滅しBluetooth接続待ち状態になります。またAndoid SDKのサンプルコードを使えばGATTアトリビュート等の動作確認もすることができます。



Tips: mbed 版の構造とSDK版との互換性について

前回の記事でも簡単に説明させて頂きましたが、Nordicのmbed対応ボードであるnrf51822-mKITとNordioc純正SDK版を使うブランクモジュールは共通のプログラム構造になっています。

最初にこれに気づいたのはこの画面でした


この画面はSDK版に付属するファームウェア書き込みツールのスクリーンショットです

mbed で生成されたバイナリを書き込んだところ Softdeviceが書き込まれていないはずの Region 0 が "S110_nRF51822_6.0.0(0x0049)" と認識されていたのです。まさかと思って書き込んだファイルをエディタで開いたところ、ファイルの前半がSoftdeviceのデータで後半に mbedと思われるデータが入っていました。hexファイルなのでファイル比較してみたら Nordicがリリースしている6.0.0のSoftdeviceファイルと合致しました。

つまり mbedで生成されるバイナリには必ず Softdevice部分もセットで付いてきているのです。

本来書き換えない部分も一緒に書き換えるのは少し気持ち悪い感じもしますが、同じデータで上書きするだけなので製品的には問題ないはずです。後日Softdeviceがアップデートしたとしても開発者にそれを意思させないように出来ているところは合理的な考え方だと思います。

※注意事項
モジュールメーカによりますと Softdeviceを新バージョンに書き換えても製品の諸元が変わらないことから取得済みの技適が無効になることはないそうです、ご安心ください。
(スマートフォンのベースバンドFWを更新しても認証番号が変わらないのと同じですね)
ただし Bluetooth認証の方は各モジュールメーカがQDID申請したバージョンでしか適用されないのでSoftdeviceのバージョンによってはBT認証が通っていない場合があるとのこと。
試作で使う分には問題ありませんが、量産でBluetoothロゴを出したい場合はモジュールメーカーと協議されることをお勧めします。

ブランクモジュールの互換性について

今回ホシデン様のモジュール HRM1017での事例を紹介させて頂いておりますが、このモジュールはnRF518220-mKITと同じチップを使い、全ピン引き出しされていることから互換ボードとして使うことができました。しかしブランクモジュールを製造されているメーカーのうち WLCSPパッケージを搭載している極小サイズ製品に関してはモジュール製造の都合か全ピン引き出しがされておらず、そのまま nRF518220-mKIT互換として動作させるのが困難のようです。

ただしnRF51288自体は内部モジュールの端子が再配置可能なことから、新規 mbedプラットフォームとして作成/登録すれば解決できるかもしれません。

今後の課題

現在はNordic社とNXP社のmbed開発ボードを間借りしている形になっていることから、これらを独自のものに置き換えていく必要があります。また記事だけで誰も使えないという状況というのも申し訳ないことから何らかの形で一般配布することも検討したいと思っています。

次回予告


次回はmbedの要となるインターフェイス機能の実現方法について掲載する予定です。

関連記事
BluetoothSMARTデバイスをmbed で開発する(1)

BluetoothSMARTデバイスをmbed で開発する(3)
BluetoothSMARTデバイスをmbed で開発する(4)
BluetoothSMARTデバイスをmbed で開発する(5)
BluetoothSMARTデバイスをmbed で開発する(6)
BluetoothSMARTデバイスをmbed で開発する(7)
BluetoothSMARTデバイスをmbed で開発する(8)



140 180 Bluetooth , mbed , Nordic , nRF51822 , ツール作成 , 技適

記載されている会社名、および商品名等は、各社の商標または登録商標です。

2 コメント:

  1. 記事を読ませていただきました.
    大変貴重な記事,重宝させていただいております.
    さて,nRF51822のプラットフォームより吐き出したhexファイルをmbedに書き込もうとしましたところ,容量不足mbedの空き領域が300KB程度しかないのですが,これは何が原因でしょうか?全体でも312KBしかありません.
    LPC11U68を使用しております.
    LPC11549を使用されているとお見受けしますが,なぜ中村様のmbedは1MBも容量があるのでしょうか....

    また,この記事の大本(NXPより提供されている?)ドキュメントはどちらにございますでしょうか.
    ご教示いただきたく存じます.よろしくお願いいたします.

    返信削除
  2. お世話になっております.
    写真をよく拝見しまして容量につきましては自己解決いたしました.
    JP3にもショートプラグをつけいていることが原因でした.失礼しました.

    >また,この記事の大本(NXPより提供されている?)ドキュメントはどちらにございますでしょうか.
    Xpressoを利用した書き込み方法の大本のドキュメントについては引き続きご教示いただきたく存じます.
    よろしくお願いいたします.

    返信削除

Related Posts Plugin for WordPress, Blogger...