25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Nordic社製BLEの開発環境構築と動作確認

Last updated at Posted at 2020-03-02

追記(2024年7月1日)

nRF53、nRF91、nRF70、そして2024年に発売されるnRF54は、nRF Connect SDK にしか対応していません。
本記事で紹介されているnRF5 SDKの開発環境は、何らかの理由でnRF51やnRF52の古い開発環境を使う必要がある場合以外は使用しないことをお勧めします。

日本市場におけるBLEの開発環境プラットフォームは、現在もnRF5 SDKが広く使われています。

ただ、ThreadやZigbeeなどの無線通信規格はnRF5ベースの別SDKが使われていますし、Bluetooth meshも同様です。今後、無線通信規格として新機能が増えてきたときにそれぞれのSDKを用意していては開発が間に合わず、非効率となります。またOSレスでの制御にも限界が出てくることが予想されます。
そこで NordicはCellularやWi-Fi製品も含めたすべてにZepher OS※と呼ばれる通信機能を備えた組込みRTOSを採用し、1つの開発環境に集約しました。こうやって「新機能にいち早く対応できるようになった」のがnRF Connect SDKになります。

nRF Connect SDKの開発環境構築方法について記事を作成したので、よろしければご参照ください。

追記(2020年4月21日)

以下の記事では開発環境にKeilを使用していますが、コード生成サイズに制限がないSEGGER Embedded Studioというものがあります。

Segger Embedded Studioは、Nordicセミコンダクター製のチップについては無償で使用できる統合開発環境です。
Windows、Mac、Linuxのいずれにも対応しています。

インストール方法はNoridicのチュートリアルビデオ通りに行ってください。
ライセンスの申請が、ほんの少しだけ分かりにくいかもしれません。

SDKのサンプルのSESフォルダの中に、SEGGER Embedded Studio対応のプロジェクトファイルがあります。

また、インストール方法については、以下の記事もご参照ください。

追記(2022年4月28日)

ライセンス認証の方法が分からないという意見をいただいたので、少し詳しく手順を説明します。

ライセンス未認証でSEGGER Embedded Studioを立ち上げると、以下の画面が表示されます。

ライセンス1.png

「Obtain a License」をクリックすると以下のサイトに飛ぶので、「5. Free Commercial Use License」を選びます。

ライセンス2.png

nRF51、nRF52、nRF53については無料でライセンスを取得できます。
https://license.segger.com/Nordic.cgi をクリックします。

ライセンス3.png

以下の画面に飛ぶので、名前、企業名、メールアドレス、MACアドレスを入力してください

ライセンス4.png

MACアドレスが自動入力されていない場合は、SEGGER Embedded StudioのtoolsからLicense Managerを選び、Diagnose Problemをクリックすると確認できます。

ライセンス5.png

ライセンス6.png

ライセンス7.png

これらを入力して「Request License」をクリックすると、ライセンスキーが発行されます。
メールに届いているのを直接入力する場合は、SEGGER Embedded StudioのtoolsからLicense Managerを選び「Activate SEGGER Embedded Studio」をクリックして、Activation Keyを入力してください。
もしくは「Enter Activation Key」をクリックすると自動で入力してくれます。

ライセンス8.png

Activation Keyを入力したら、Install Licenseをクリックしてライセンス取得します。

ライセンス9.png

以上でライセンス取得が完了し、ROMサイズの制限なくビルドできるようになります。

記事の概要

Nordic社製BLEの開発環境を構築します。以前にも環境構築方法を解説していますが、その時からリンクが変わり、種類が増え、各種ツールの更新があったので改めて解説したく思います。

またサンプルプログラムをビルドして、動作確認も行います。

BLEモジュール

本記事は市販されている太陽誘電のBLEモジュールに搭載されているnRF52840を例に解説します。
https://www.yuden.co.jp/jp/product/category/module/lineup/eyskbnzwb/
IMG_1859.JPG

サンプルプログラムの選択と動作確認において、各種設定を皆さんの使用するBLEの型番に合わせて変更してください。

SDKとソフトデバイス

対応する製品のSDKとソフトデバイスをダウンロードしてください。
nRF51系のBLEのSDKはversion 12.3.0までしか対応していません。
ソフトデバイスは使用目的に合わせて選択してください。サイズはそれほど大きくないので、あらかじめ全てダウンロードしても問題ないと思います。

2020年3月1日時点では以下の組み合わせになります。
間もなく最新のnRF53系が発売される予定です。

上記一覧のURLに飛んで、SDKとソフトデバイスを選択してください。

SDKダウンロード1.png

SDKダウンロード2.png

選択項目をzip形式でダウンロードできます。

SDKダウンロード3.png

SDKの詳細については以下を参照してください。
nRF5 SDK v16.0.0

Segger Embedded Studioのインストール

Segger Embedded Studioは、Nordicセミコンダクター製のチップについては無償で使用できる統合開発環境です。
Windows、Mac、Linuxのいずれにも対応しています。

https://www.nordicsemi.com/Software-and-tools/Development-Tools/Segger-Embedded-Studio/Get-Started#infotabs
で紹介されているYouTubeのビデオの手順通りにインストールします。

以下のリンク先で自分の開発環境に対応するEmbedded Studio for ARMをダウンロードしてください。

EMS1.png

インストール後、無償でNoridic製品限定のライセンス取得できます。
名前とメールアドレスを登録後に、メール通知されるライセンス番号を入力すると制限が解除できます。

nRF Connect for Desktopのインストール

nRF Connect for Desktopをインストールしてください。
以下はwindows版ですがMac版もあります。

nRF Connect for Desktopのインストール0.png

必要なツールをinstallしてください。
本記事では「Bluetooth Low Energy」と「Programmer」を使用します。

nRF Connect for Desktopのインストール1.png

ソフトデバイスの書込み

チップにソフトデバイスが書き込まれていない場合や使用したいものとは別のソフトデバイスが書き込まれている場合は、ソフトデバイスを書き込む必要があります。

開発ボードの場合はPCとUSB接続して書き込みができます。
それ以外のJ-Linkなどを用いてPCと接続してください。

nRF Connect for Desktopを起動してProgrammerをOpenします。
write1.png

Select deviceから書き込み対象を選択します。
write2.png

File memory layoutにダウンロードしたソフトデバイスをドロップします。
例えばnRF52840でs140を使用したい場合、s140_nrf52_7.0.1_softdevice.hexをドロップすると、以下のようにメモリのソフトデバイス領域が表示されます。
write3.png

Erase&Writeもしくはwriteをクリックしてソフトデバイスを書き込みます。
書き込み後にReadをクリックして、nRF52840にFile memory layoutと同様に表示されているかを確認します。
write4.png

サンプルプログラムのビルドと書込み

サンプルプログラムはexamplesフォルダ内にあります。
本記事では動作確認として、BLEのペリフェラル機能を試してみます。ble_peripheralフォルダのble_app_blinkyフォルダを使います。

フォルダ内には評価ボードに対応したフォルダが用意されているので、使用するBLEチップと同じ物か同系統を使用している評価ボード名のフォルダを選択します。
例えば、nRF52840を使用する場合は、pca10056はnRF52840搭載ボードの型番なので、この設定がそのまま使用できます。

BLEチップに書き込んであるソフトデバイスと同じ名前のフォルダを開きます。
チップにソフトデバイスが書き込まれていない場合や使用したいものとは別のソフトデバイスが書き込まれている場合は、先述した方法でソフトデバイスを書き込んでください。

次に使用している開発環境と同じ名前のフォルダを開くと、それに対応したプロジェクトファイルがあります。
本記事ではkeil5を使用するのでarm5_no_packsフォルダを開きます。

以上をまとめると、以下を選択することになります。

~\nRF5SDK160098a08e2\examples\ble_peripheral\ble_app_blinky\pca10056\s140\arm5_no_packs\ble_app_blinky_pca10056_s140.uvprojx

サンプルプログラムの書き込み

ビルドしたhexファイルは、メモリのアプリケーション領域に書き込みます。
nRF Connect for Desktopを起動してProgrammerをOpenし、
Select deviceから書き込み対象を選択します。
Readをクリックすると現在のメモリ状況が確認できます。
write5.png

File memory layoutにビルドしたhexファイルをドロップしてください。(buildフォルダ内にhexファイルがあります。)
以下のようにメモリのアプリケーション領域が表示されます。
write6.png

Writeで書き込みを行います。
書き込み後にReadをクリックして、nRF52840のアプリケーション領域に書き込まれているかを確認できます。
write7.png

スマホによる動作確認(2022年6月10日追記)

以下ではスニッファーによる動作確認を紹介していますが、よく考えるとNoridicの販売するスニッファーnRF52840-Dongleは日本の技適を取得していなかったかもしれません。
(実際に未取得かは調べていないので分かりません。)

スニッファーのサンプルプログラムを別のBLEモジュールに書き込むのが無難ですが、書き込む手間や別のBLEモジュールを用意するコストがかかります。

私はここ数年間は、スニッファーは使用しておらず、iPhoneやAndroidのスマホアプリ版のnRF Connectを利用しています。

動作確認方法は以下のスニッファーによる動作確認と同じになります。
要望があれば、スマホでの詳しい説明を追加したいと思います。

スニッファーによる動作確認

サンプルプログラムが動作していることを確認します。

動作確認方法は色々ありますが、本記事ではスニッファーを利用します。
この確認にはBLEのセントラル側のデバイスも必要になります。
サンプルプログラムのセントラルを別のBLEモジュールに書き込んで、J-Linkなどを用いてPCと接続してください。
もしくはnRF52840-Dongleをご利用ください。

nRF Connect for Desktopを起動してBluetooth Low EnergyをOpenします。
BLE1.png

Select deviceからセントラル側のデバイスを選択します。
BLE2.png

正常に認識されると、画面にデバイスが表示されます。
BLE3.png

Start Scanをクリックして、アドバタイジングパケットを発信しているBLEスレーブのスキャンを開始します。
BLE4.png

接続したいBLEスレーブ、今回の場合はNoridic_BlinkyのConnectをクリックします。
正常に接続すると、画面にスレーブデバイスが表示されます。
Notifyを確認する前にnotifyの矢印アイコンをクリックします。
BLE5.png

セントラル側からのNotifyを受信すると、受信データが表示されます。
BLE6.png

逆にスレーブからセントラルにデータ送信する場合は、writeにデータを入力してチェックマークをクリックします。
BLE7.png

更に開発するには

以下にBLEの各種設定方法を解説した記事を作成しました。
記事内容を精査しておらず、間違いがあるかもしれないので、実際に以下の記事の通りにやって上手くいかない時はお気軽にお問い合わせください。

(補足)Keil 5.0のインストール

参考までにARMマイコン開発環境であるKeilのインストール方法を以下に示します。

統合開発環境Keilの無償版は、生成できるプログラム・サイズに32KBのコード制限があります。
NordicのSDKを使っていると、すぐにこの制限を超えてしまいます。

Nordicのチップを使用しており、有償のKeilライセンスを持っていないのならば「Segger Embedded Studio」の使用をお勧めします。

Which version of Eclipse need to use for nRF52 project?

Keilを使用する場合は、以下のサイトからダウンロードしてください。
MDK-ARM

パッケージインストール

Keilのインストール後は、nRF51やnRF52に関するパッケージをインストールします。
Keilの初回起動時、もしくは以下の赤丸部分をクリックするとPack Installerが起動します。

ヘッダー1.png

左のDevice欄からNordic Semiconducterもしくは使用するBLEチップの型番号を選択してください。
パッケージインストール1.png

すると、右のPack欄に対応するパッケージが表示されるので、必要なものをインストールします。

NordicSemiconducterから始まるパッケージのDrivers、BLE、Examples、Libraries、ソフトデバイスが必要になります。
また、GenericのARM::CMSIS、Keil::ARM_Compiler、Keil::ARM_Middlewareの最新版もインストールします。

例えば、私は以下をインストールしました。(Up to date表示もしくはUpdate表示になっているものがインストールした項目になります)
パッケージインストール2.png

パッケージインストール3.png

パッケージインストール4.png

nRF5 SDK versoion 16.0.0 を使用する際の注意

nRF52系のサンプルプログラムをビルドする際に、nRF_DeviceFamilyPack version 8.28.0以降を使用するとsystem_nrf52840.cのnrf_erratas.hが見つからずにエラーになります。

2020年3月時点では、SDKのサンプルプログラムをビルドするには以下の手順が必要です。

  • サンプルプログラムを開く
    サンプルプログラム初回起動時に最新のパッケージをインストールするか聞いてきますが、キャンセルしてください。

  • nRF_DeviceFamilyPack version 8.28.0より新しいものを全てRemove

  • nRF_DeviceFamilyPackのPreviousを展開し、version 8.27.1をinstall
    パッケージ手続き5.png

  • Select Software Packsを選択してversion変更
    ヘッダー2.png

パッケージ手続き1.png

パッケージ手続き2.png

  • Manage Run-Time Environmentを選択

ヘッダー3.png

パッケージ手続き3.png

パッケージ手続き4.png

以上の設定により正常にビルドできるようになります。

デバッグツールの設定

J-Link EDUやJ-Link LITEなどのデバッグツールを使用する場合が、以下のように設定します。

Projectウィンドウのデバイス名(nRF52840_xaaaなど)を右クリックして「Options fot Target...」を選択します。

デバッグ設定.png

DebugタブのSettingsを選びます。

デバッグ設定2.png

SN(シリアルナンバー)が接続しているJ-Linkと同じかを確認し、違っていれば選択変更します。
PortがSWになっていることを確認します。
必須ではありませんが、「Auto Clk」をクリックして自動設定しておきます。

デバッグ設定3.png

「Debug」の「Start/Stop Debug Session」をクリックすれば、プログラムの書き込みとデバッグが開始されます。
(書き込み開始されない場合は、BLEモジュールに電源が供給されているかをご確認ください。)

デバッグ設定4.png

25
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?