追記(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対応のプロジェクトファイルがあります。
また、インストール方法については、以下の記事もご参照ください。
- Nordic Nrf528xxを使ってみよう nrf52840 nrf52832 Segger Embedded Studio準備編
- 【Mac】Nordic nRF52の開発環境を構築する(SEGGER Embedded Studio)
追記(2022年4月28日)
ライセンス認証の方法が分からないという意見をいただいたので、少し詳しく手順を説明します。
ライセンス未認証でSEGGER Embedded Studioを立ち上げると、以下の画面が表示されます。
「Obtain a License」をクリックすると以下のサイトに飛ぶので、「5. Free Commercial Use License」を選びます。
nRF51、nRF52、nRF53については無料でライセンスを取得できます。
https://license.segger.com/Nordic.cgi をクリックします。
以下の画面に飛ぶので、名前、企業名、メールアドレス、MACアドレスを入力してください
MACアドレスが自動入力されていない場合は、SEGGER Embedded StudioのtoolsからLicense Managerを選び、Diagnose Problemをクリックすると確認できます。
これらを入力して「Request License」をクリックすると、ライセンスキーが発行されます。
メールに届いているのを直接入力する場合は、SEGGER Embedded StudioのtoolsからLicense Managerを選び「Activate SEGGER Embedded Studio」をクリックして、Activation Keyを入力してください。
もしくは「Enter Activation Key」をクリックすると自動で入力してくれます。
Activation Keyを入力したら、Install Licenseをクリックしてライセンス取得します。
以上でライセンス取得が完了し、ROMサイズの制限なくビルドできるようになります。
記事の概要
Nordic社製BLEの開発環境を構築します。以前にも環境構築方法を解説していますが、その時からリンクが変わり、種類が増え、各種ツールの更新があったので改めて解説したく思います。
またサンプルプログラムをビルドして、動作確認も行います。
BLEモジュール
本記事は市販されている太陽誘電のBLEモジュールに搭載されているnRF52840を例に解説します。
https://www.yuden.co.jp/jp/product/category/module/lineup/eyskbnzwb/
サンプルプログラムの選択と動作確認において、各種設定を皆さんの使用するBLEの型番に合わせて変更してください。
SDKとソフトデバイス
対応する製品のSDKとソフトデバイスをダウンロードしてください。
nRF51系のBLEのSDKはversion 12.3.0までしか対応していません。
ソフトデバイスは使用目的に合わせて選択してください。サイズはそれほど大きくないので、あらかじめ全てダウンロードしても問題ないと思います。
2020年3月1日時点では以下の組み合わせになります。
間もなく最新のnRF53系が発売される予定です。
- nRF51822
- https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF51822/Download#infotabs
- SDK
- nRF5 SDK versoion 12.3.0
- ソフトデバイス
- S110 version 8.0.0
- BLE4.1 ペリフェラル用
- S120 version 2.1.0
- BLE4.1 セントラル用
- S130 version 2.0.1
- BLE4.2 ペリフェラル&セントラル用
- S110 version 8.0.0
- nRF51422
- https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF51422/Compatible-downloads#infotabs
- SDK
- nRF5 SDK versoion 10.0.0 (2020年3月1日時点)
- ソフトデバイス
- S110 version 8.0.0
- BLE4.1 ペリフェラル用
- S120 version 2.1.0
- BLE4.1 セントラル用
- S130 version 2.0.1
- BLE4.2 ペリフェラル&セントラル用
- S210 version 5.0.0
- ANT用
- S310 version 3.0.0
- BLE4.1 ペリフェラル&ANT
- S110 version 8.0.0
- nRF51824
- https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF51824/Download#infotabs
- SDK
- nRF5 SDK versoion 12.3.0
- ソフトデバイス
- S110 version 8.0.0
- BLE4.1 ペリフェラル用
- S120 version 2.1.0
- BLE4.1 セントラル用
- S130 version 2.0.1
- BLE4.2 ペリフェラル&セントラル用
- S110 version 8.0.0
- nRF52840
- https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52840/Compatible-downloads#infotabs
- SDK
- nRF5 SDK versoion 16.0.0
- ソフトデバイス
- S113 version 7.0.1
- small BLE5(ペリフェラル&セントラル用)
- S140 version 7.0.1
- BLE5(ペリフェラル&セントラル用)
- S340 version 6.1.1
- BLE5(ペリフェラル&セントラル用)&ANT
- S113 version 7.0.1
- nRF52832
- https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52832/Download#infotabs
- SDK
- nRF5 SDK versoion 16.0.0
- ソフトデバイス
- S112 version 7.0.1
- small BLE5(ペリフェラル&セントラル用)
- S113 version 7.0.1
- small BLE5(ペリフェラル&セントラル用)
- S132 version 7.0.1
- BLE5(ペリフェラル&セントラル用)
- S212 version 6.1.1
- ANT
- S332 version 6.1.1
- BLE5(ペリフェラル&セントラル用)&ANT
- S112 version 7.0.1
- nRF52833
- https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52833/Downloads#infotabs
- SDK
- nRF5 SDK versoion 16.0.0
- ソフトデバイス
- S113 version 7.0.1
- small BLE5(ペリフェラル&セントラル用)
- S140 version 7.0.1
- BLE5(ペリフェラル&セントラル用)
- S113 version 7.0.1
上記一覧のURLに飛んで、SDKとソフトデバイスを選択してください。
選択項目をzip形式でダウンロードできます。
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をダウンロードしてください。
インストール後、無償でNoridic製品限定のライセンス取得できます。
名前とメールアドレスを登録後に、メール通知されるライセンス番号を入力すると制限が解除できます。
nRF Connect for Desktopのインストール
nRF Connect for Desktopをインストールしてください。
以下はwindows版ですがMac版もあります。
必要なツールをinstallしてください。
本記事では「Bluetooth Low Energy」と「Programmer」を使用します。
ソフトデバイスの書込み
チップにソフトデバイスが書き込まれていない場合や使用したいものとは別のソフトデバイスが書き込まれている場合は、ソフトデバイスを書き込む必要があります。
開発ボードの場合はPCとUSB接続して書き込みができます。
それ以外のJ-Linkなどを用いてPCと接続してください。
nRF Connect for Desktopを起動してProgrammerをOpenします。
File memory layoutにダウンロードしたソフトデバイスをドロップします。
例えばnRF52840でs140を使用したい場合、s140_nrf52_7.0.1_softdevice.hexをドロップすると、以下のようにメモリのソフトデバイス領域が表示されます。
Erase&Writeもしくはwriteをクリックしてソフトデバイスを書き込みます。
書き込み後にReadをクリックして、nRF52840にFile memory layoutと同様に表示されているかを確認します。
サンプルプログラムのビルドと書込み
サンプルプログラムは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をクリックすると現在のメモリ状況が確認できます。
File memory layoutにビルドしたhexファイルをドロップしてください。(buildフォルダ内にhexファイルがあります。)
以下のようにメモリのアプリケーション領域が表示されます。
Writeで書き込みを行います。
書き込み後にReadをクリックして、nRF52840のアプリケーション領域に書き込まれているかを確認できます。
スマホによる動作確認(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します。
Select deviceからセントラル側のデバイスを選択します。
Start Scanをクリックして、アドバタイジングパケットを発信しているBLEスレーブのスキャンを開始します。
接続したいBLEスレーブ、今回の場合はNoridic_BlinkyのConnectをクリックします。
正常に接続すると、画面にスレーブデバイスが表示されます。
Notifyを確認する前にnotifyの矢印アイコンをクリックします。
セントラル側からのNotifyを受信すると、受信データが表示されます。
逆にスレーブからセントラルにデータ送信する場合は、writeにデータを入力してチェックマークをクリックします。
更に開発するには
以下に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が起動します。
左のDevice欄からNordic Semiconducterもしくは使用するBLEチップの型番号を選択してください。
すると、右のPack欄に対応するパッケージが表示されるので、必要なものをインストールします。
NordicSemiconducterから始まるパッケージのDrivers、BLE、Examples、Libraries、ソフトデバイスが必要になります。
また、GenericのARM::CMSIS、Keil::ARM_Compiler、Keil::ARM_Middlewareの最新版もインストールします。
例えば、私は以下をインストールしました。(Up to date表示もしくはUpdate表示になっているものがインストールした項目になります)
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
- Manage Run-Time Environmentを選択
以上の設定により正常にビルドできるようになります。
デバッグツールの設定
J-Link EDUやJ-Link LITEなどのデバッグツールを使用する場合が、以下のように設定します。
Projectウィンドウのデバイス名(nRF52840_xaaaなど)を右クリックして「Options fot Target...」を選択します。
DebugタブのSettingsを選びます。
SN(シリアルナンバー)が接続しているJ-Linkと同じかを確認し、違っていれば選択変更します。
PortがSWになっていることを確認します。
必須ではありませんが、「Auto Clk」をクリックして自動設定しておきます。
「Debug」の「Start/Stop Debug Session」をクリックすれば、プログラムの書き込みとデバッグが開始されます。
(書き込み開始されない場合は、BLEモジュールに電源が供給されているかをご確認ください。)