mbed HRM1017がやってきた! -3-

mbed HRM1017がやってきた! -3-

kinneko
kinneko (ID379) 2014/06/24
0

前回までの記事は、こちら。
・mbed HRM1017がやってきた! -1-
  https://media.dmm-make.com/item/1423/
・mbed HRM1017がやってきた! -2-
  https://media.dmm-make.com/item/1427/


今回は、mbed.orgへのユーザー登録を行い、開発環境を使ってiBeacon用のファームウエアをビルドして書き込んでみましょう。

mbed.orgにユーザー登録

mbedでは、ブラウザによるIDE開発と、オンラインコンパイラを使用しますので、mbed.orgへのユーザー登録が必要です。

mbed.orgにアクセスして、ユーザー登録を行います。

mbed.orgのページをひらいて、右上の緑色の「Login or Signup」ボタンを押します。

画面が移動しますので、右側のSignupの中にある青いSignupボタンを押します。

mbed.orgへの登録は、はじめてだと思いますので、右側の"No, I haven't created an account before"をクリックします。

ここだけ何故か日本語化されています。でも、日本語が少しおかしいですね。

Signupの項目を埋めていきます。

終わったら、青いSignupボタンを押します。

記入例を書いておきましたので、参考にしてください。

ボタンを押す前に、利用規約を開いて一読し、同意する場合はチェックをつけてください。

サインアップが終わると、自動的にもとの画面に戻ります。

新しく作ったアカウントでログインできています。

画面上では、"Welcome to mbed! To register a board, please plug the board in and click on MBED.HTM" と出ているのが違いです。

前回見たように、mbedボードにはmbed.htmというファイルがあって、これをクリックするとボードの所有情報がmbed.orgに簡単に登録できます。

今回は、まだ未発売のボードなので、ボードの登録は後でWebから行う方法を説明します。

ユーザー登録後、ログインされた画面になりますが、あとでメールで確認がありますので、メールに書かれたURLをクリックして最終的な認証を終えてください。

ターゲットデバイスの設定

mbed対応のボードには、いろいろな種類があり、mbedとしての基本的な機能は同じですが、拡張された部分でさまざまな違いがあります。サンプルコードやライブラリなど、ボードごとに違っていて、そのまま使うことができないものもあります。

そのため、開発時にはターゲットデバイスを決めておく必要があります。

mbed.orgにログインした状態のトップページから、左上のPlatformsをクリックして選択します。

mbedに対応した、ボードの一覧が出てきます。

ここでは、mbed HRM1017の元になった、Nordic nRF51822を選択します。

mbed HRM1017が発売されれば、ここに表示されるはずですので、その時には、それを選びましょう。

Nordic nRF51822のページを開くと、右側に"Add to your mbed Compiler"と書かれたボタンがありますので、クリックします。

その下の"Buy Now"ボタンから、ボードを購入することもできます。

「Platform 'Nordic nRF51822' is now added to your account!」と表示され、ターゲットデバイスが追加されました。

先ほどのボタンは、"Open mbed Compiler" に変わっています。

このボタンを押すと、開発環境の画面が別タブに起動し、そこに移動します。

iBeaconファームウエアのビルド

開発環境の画面は、IDEでプログラムをしたことのある方には見慣れた画面構成です。

mbedのプログラムは、C++で記述しますが、多くのテンプレートが用意さていて、若干の変更だけで動作を変えることができるので、プログラムの心得がなくても心配することはありません。

プラットホームはすでに、Nordic nRF51822を選んで起動していますので、詳細内容の選択ダイアログが開きます。

わたしの環境だけかもしれませんが、"Nordic nRF51822"の互換ボードとして、"Switch Science mbed HRM1017"が選択可能になっています。

ここでは、"Nordic nRF51822"のまま進めます。

最初にテンプレートを選択します。

このターゲットデバイスでは、4つのテンプレートが選択できます。

・BLE Beacon
・Blinky LED Hello World
・BLE HeartRate
・Empty Program

BLE Beaconは、iBeacon互換のサンプルコードです。

Blinky LED Hello Worldは、mbedでは基本的なプログラムでLEDを光らせるサンプルコードです。残念ながら、mbed HRM1017には制御可能なLEDは付いていないので、試すことができません。後ほど外付けLEDを付けて試すことにしましょう。

BLE HeartRateは、心拍計を付けた場合のサンプルコードです。これには、温度センサのサンプルも含まれています。こちらも、後ほど温度センサを外付けにして試してみましょう。

Empty Programは、このターゲットデバイスを動作させるのに必要なライブラリを組み込んだスケルトンコードが表示されます。

ここでは、特に外付けデバイスを必要としない、BLE Beaconを選んでみます。

OKボタンを押して先に進みます。

一番左のカラムに、My Programsフォルダがあって、自分の開発するプログラムは、この下に追加されていきます。

今回は、BLE_Beaconが追加されました。

BLE_Beaconには、mbedのライブラリ、ターゲットデバイスに必要なライブラリと、Beacon用のアプリケーションがコピーされています。

まずは、試しにテンプレートのままコンパイルしてみましょう。

メニューから、Compile -> Compile を選ぶとコンパイルが開始されます。

コンパイルが終わると、ブラウザでhexファイルがダウンロードされます。

hexファイルには、nRF51822用のBLEファームウエアのバイナリと、Beaconのプログラムが含まれています。

通常のmbedでは、BLEファームウエアが必要ないので、binファイルがダウンロードされます。

コンパイルからダウンロードへの流れがこれで確認できました。

しかし、このテンプレートをコンパイルしただけでは、mbed HRM1017では動作しません。

若干の修正が必要になります。

mbed HRM1017と、Nordic nRF51822-mKITを比較すると、大きな違いは、32.768kHzの外部水晶発振子が搭載されていないという点があります。

このため、nRF51822内蔵の発振回路を使うように設定を変更する必要があります。

具体的には、テンプレートの以下のソースコード内の、クロック指定部分を次の様に書き換えます。

BLE_Beacon -> nRF51822 -> btle -> btle.cpp

SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION, false);

変更が終わったら、コンパイルして、できたhexコードをmbed HRM1017にコピーします。

コピー後に、基板の中央にあるボタンを押してリセットすると、BLE_Beaconのコードがロードされて、以降はこのモードで動作することになります。

実際にやってみると、コピー中は、mbed HRM1017の赤色LEDが点灯し、コピー終了後に自動的に再起動されました。

mbed HRM1017の中には、コピーしたファイルは残っていませんでした。

一般的なmbedターゲットデバイスでは、ここにbinファイルが残っていて、最新のタイムスタンプのものがロードされて起動します。書き込み後は、再起動も自分でボタンで行う必要があります。

nRF51822は多少動作に違いがあるようです。

iBeaconとして動作しているかどうか、ようてんさん作の"iBeacon Detector"で確認してみます。
https://play.google.com/store/apps/details?id=youten.redo.ble.ibeacondetector

MACアドレスから、使っているmbed HRM1017に間違いないことがわかります。

mbed HRM1017のファームウエアを書き換えて、iBeaconとして動作していることが確認できました。


次回は、外部にLEDを接続して、mbedの基本である"Blinky LED Hello World"を試してみたいと思います。

参考にしてくれた記事

記事が登録されていません。
この記事を参考にして、新しく記事を投稿しよう!

違反について