2015年11月6日金曜日

nRF51822 + nRF51 DK を使って BLE デバイスの開発環境を構築

概要

nRF51822 とは NordicSemiconductor 社が提供する BLE モジュールです
nRF51822 には専用の開発用のボード (nRF51 DK) がありこれを使うことで BLE デバイスの開発を行うことができます
今回は開発環境の構築方法を紹介します

環境

  • Windows7 64bit
  • nRF51822
  • nRF51 DK
  • MicroUSB x 1

各種インストール

各種インストールの作業は Windows 上で行っていきます

アプリ焼きこみ用のツール nRFgo Studio のインストール

開発したアプリをモジュールに焼きこむためのツールです

  • https://www.nordicsemi.com/chi/node_176/2.4GHz-RF/nRFgo-Studio にアクセス
  • 「DOWNLOADS」タブを選択
  • nRFgo Studio-Win64 を選択しダウンロード
  • ダウンロードした nrfgostudio_win-64_1.21.0_installer.msi を実行しインストール
  • インストール中の Choose Setup Type は Typical を選択
  • ドライバをインストールする確認ダイアログが続けて表示されるのですべて OK にする
  • 続けて nRF Tools をインストールする旨が表示されるので続けてインストール
  • J-Link のドライバをインストール

で nRFgo Studio がインストールできます
同時に J-Link のドライバもインストールするのを忘れないようにしてください
2015/11/05 時点での最新版は 1.21.0 でした

開発用の IDE Keil のインストール

Keil という組み込み開発で使用する IDE をインストールします

  • https://www.keil.com/download/ にアクセス
  • 「Download」タブを選択
  • 「Product Downloads」を選択
  • 「MDK-ARM」を選択
  • ダウンロードするために個人情報を入力 (keil だけダウンロードに必要)
  • ダウンロードのページに遷移したら MDK517.EXE を選択しダウンロード
  • ダウンロードした MDK517.EXE を実行しインストール

で Keil の μVision という IDE がインストールできます
デフォルトの設定だと C ドライブ直下に C:\Keil_v5 というディレクトリ名でインストールされます
IDE を起動する場合は C:\Keil_v5\UV4\UV4.exe を実行してください
2015/11/05 時点での最新版は 5.17.0 でした

nRF51 SDK のインストール

開発に必要な SDK をインストールします

ダウンロードが完了したら解凍して適当な場所に配置すれば OK です
nRFgo Studio から参照します
zip をダウンロードする際に他の最新版があればそちらをダウンロードしても OK です
2015/11/05 時点での最新版は 9.0.0 でした

この作業は nRF Studio のインストール時に完了しています
最新版をインストールしたい場合にだけ実施してください

  • https://www.segger.com/jlink-software.html にアクセス
  • Software and documentation pack for Windows の最新版を Download
  • ダウンロードが完了したら zip を解凍し Setup_JLink_V502i.exe を実行しインストール
  • インストール中の「Install USB Driver for J-Link」にチェック

でドライバがインストールされるはずです
2015/11/05 時点での最新版は 502i でした

配線

開発ボードと Windows を接続していきます
開発ボードへの電源の供給は PC から行います

配線は非常に簡単で開発ボード側の MicroUSB と PC の USB ポートを接続すれば OK です
基本はこれだけで開発できます

他にはデバッグ用のシリアル通信や nRF51822 モジュールへの書き込みを行うための配線がありますが、とりあえず BLE デバイスを開発するだけであれば上記で十分です

配線が完了したら開発ボードの電源を ON にしましょう

サンプルの焼きこみ

では開発ボードにサンプルアプリを焼きこんでみましょう
今回は簡単な Peripheral アプリを焼きこんで、ちゃんとアドバタイズされるか確認してみます

配線を完了し開発ボードの電源が入っている状態で nRFgo Studio を起動します
起動したら左ペインの「Device Mangaer」に nRF51 development boards があり、その中に Segger … で始まるデバイスが認識されていることを確認してください
これが表示されない場合は開発ボードがうまく Windows 側に認識されていないので、ドライバのインストールを再度実施してください

SoftDevice の焼きこみ

Segger を選択した状態で右ペインに移動します
まずは SoftDevice を焼きこんでいきます
SoftDevice とは簡単にいうとミドルウェアのようなもので、開発するアプリはこの SoftDevice 上で動作します

右ペインの「Program SoftDevice」タグを選択します
そして「File to program」に SoftDevice を指定します
指定する SoftDevice はダウンロードした SDK に含まれています
例えば C ドライブ直下に SDK を配置したのであれば

C:\nRF51_SDK_9.0.0_2e23562\components\softdevice\s110\hex\s110_softdevice.hex

にあります
選択したら「Program」ボタンを押して焼きこみを開始します
ダイアログが表示され最終的に successfully になれば OK です

サンプルアプリのビルド

ここがちょっとだけ面倒です
サンプルアプリ用の .hex ファイルが SDK 内に同梱されておらずソースファイルから自分でビルドして作成する必要があります
まず Keil を開きましょう
開いたら SDK に同梱されているサンプルプロジェクトを開きます

Project -> Open Project

で以下を指定して開きます

C:\nRF51_SDK_9.0.0_2e23562\examples\ble_peripheral\ble_app_hrs\pca10028\s110\arm5_no_packs\ble_app_hrs_s110_pca10028.uvprojx

するとプロジェクトが開きます
今回は特にソースを修正する必要はないので開いたらいきなりビルドします

Project -> Build target

でビルドが始まります
プロジェクト内に存在する C のソールコードがコンパイルされ最終的に .hex が作成されれば OK です
.hex ファイルはarm5_no_packs\_build\nrf51422_xxac_s110.hex に作成されます

サンプルアプリの焼き込み

作成できたアプリを焼きこんでいきましょう
再度 nRFgo Studio に戻ります

今度は右ペインの「Program Application」タグを選択します
そして、FIle to program に先ほど作成した .hex ファイルを指定します

C:\nRF51_SDK_9.0.0_2e23562\examples\ble_peripheral\ble_app_hrs\pca10028\s110\arm5_no_packs\_build\nrf51422_xxac_s110.hex

選択したら「Program」を選択します
SoftDevice の書き込み同様ダイアログが表示され最終的に successfully になれば書き込み完了です

動作確認

今回は iPhone で確認してみます
スマホアプリに BLE を検知できるアプリがいくつかあるのでそれを使います

開発ボードの電源が入っている状態でアプリを立ち上げてみましょう
すると開発ボードに焼きこまれたアプリがBLEデバイスとして検知できると思います
今回の場合「Nordic_HRM」というデバイス名でアプリを書き込んでいるのでその名前で見つかると思います

最後に

紹介は以上です
今回 nRF51822 モジュールに直接書き込みはしませんでした
モジュールに書き込みを行いたい場合は Debug out という 10pin の I/F が開発ボードにあるので、ジャンパを使って nRF58122 が乗った別のボードと接続した状態で nRF Studio で Program すれば焼きこむことができると思います

あとは main.c なりソースの修正をしてビルドして再度 .hex ファイルを作成して焼き込めば開発できると思います
ただ、これだと print 文などをデバッグできないので作業効率が悪いです
やはり開発ボードとシリアル通信して print 文をデバッグした方がいいです
次回にでもシリアル通信の記事を紹介できればと思います

Tips

アプリを修正して Program してうまく動作しない場合は一旦「Erase all」してから再度 SoftDevice -> アプリの順番で書き込みを行ってみてください

0 件のコメント:

コメントを投稿