このライブラリは現在保守されておらず、このライブラリの後継となる予定はありません。既存の nRF5 SDK ユーザーは引き続きアクセスできますが、それ以上のアップデートやサポートは受けられません。利用可能なファームウェア (.hex ファイル) は古い SoftDevice バイナリを使用しているため、このライブラリを使用して新しいプロジェクトを開始しないことをお勧めします。
pc-ble-driver
Bluetooth Low Energy nRF5 SoftDevice シリアル化用の C/C++ ライブラリを提供します。
pc-ble-driver
SoftDevice および接続ソフトウェアを実行する nRF5 接続チップとのシリアル ポート通信を介してアプリケーションに SoftDevice 機能を提供する静的ライブラリと共有ライブラリのセットで構成されており、ここでは単一の .hex ファイルとして含まれています。 SoftDevice のシリアル化の詳細については、「シリアル化」を参照してください。
C/C++ ライブラリは直接インターフェイスできますが、制御の低下を犠牲にして開発を容易にする上位レベルのバインディングとしても提供されます (ほとんどの場合許容可能)。
ここで「アプリケーション チップ」は単なる一般的なハードウェア (つまり、Windows、Linux、または macOS デバイス) ですが、たとえば Arduino や Raspberry Pi などの場合もあります。
pc-ble-driver を使用するには、開発キットに正しいファームウェアが必要です。必要なファームウェアはhex/sd_api_v
フォルダーにあり、 pc-ble-driver
との通信に必要な SoftDevice および接続ファームウェアが含まれています。
生成されたライブラリは、次の SoftDevice API バージョンおよび nRF5x IC と互換性があります。
connectivity__1m_with_s130_2.xx
(nRF51 および nRF52 シリーズ IC)connectivity__<1m|*usb>_with_s132_3.xx
(nRF52 シリーズ IC のみ)connectivity__<1m|*usb>_with_s132_5.xx
(nRF52 シリーズ IC のみ)connectivity__<1m|*usb>_with_s132_6.xx
(nRF52 シリーズ IC のみ)connectivity__<1m|*usb>_with_s140_6.xx
(nRF52 シリーズ IC のみ)*usb) USBD ペリフェラルを備えた nRF52 シリーズ IC のみ
PCA | 正式名称 | 品番 | 注意事項 |
---|---|---|---|
PCA10028 | nRF51開発キット | nRF6824 | |
PCA10031 | nRF51ドングル | nRF6825 | |
PCA10040 | nRF52開発キット | nRF6827 | |
PCA10056 | nRF52840 { 開発キット } | nRF6828 | *) |
PCA10059 | nRF52840 { ドングル } | nRF6829 | Nordic USB CDC シリアル ポートをサポートする接続ファームウェアのみを使用できます |
*) Nordic USB CDC シリアルポート版と SEGGER J-Link-OB (VCOM) 版の両方を使用できます。 PCA10056 で Nordic USB CDC シリアル ポート バージョンを使用するには、ピン P0.18 と P0.24 を接続する必要があります。 QSPI チップへのピンも配置する必要があります (デフォルトで配置されています)。 PCA10056 か PCA10059 かを検出するアルゴリズムは、QSPI チップと通信できるかどうかを確認することです。 PCA10059 には QSPI チップがありません。この検出は、DFU モードとアプリケーション モードの間で変更するときにデバイスのリセットにどのピンを使用するかを決定するために、nRF Connect DFU トリガーによって使用されます。
この通信ライブラリは、あらゆる種類のシリアル ポート (UART) 上で動作しますが、最もよく使用されるのは Segger J-Link USB CDC UART 上です。必要な J-Link ドライバーをセットアップするには、オペレーティング システムに一致するバージョンをダウンロードしてインストールするだけです。
必要なドライバーをインストールし、J-Link 対応ボード (Nordic 開発キットなど) を接続すると、ポートが使用可能になります。
さらに、 pc-ble-driver
使用してデバイスと通信するには、 Mass Storage Device
を無効にする必要があります。 data corruption or drops issue
を参照してください。
シリアル ポートはCOMxx
として表示されます。デバイスマネージャーの「ポート (COM および LPT)」セクションを確認してください。
シリアル ポートは/dev/ttyACMx
として表示されます。
デフォルトでは、すべてのユーザーがポートにアクセスできるわけではありません。以下のコマンドを入力してユーザーをdialout
グループに追加し、シリアル ポートへのアクセスを許可します。これを有効にするには再ログインが必要であることに注意してください。
$ sudo usermod -a -G dialout < username >
modemmanager サービスが CDC ACM シリアル ポートに接続しようとするのを防ぐには、次の手順を実行します。
$ systemctl stop ModemManager.service
$ systemctl disable ModemManager.service
シリアル ポートは/dev/tty.usbmodemXXXX
として表示されます。
既知の問題があります。問題が発生した場合は、ここで確認してください。
接続ファームウェアをプログラムするには、nRF5x コマンドライン ツールにバンドルされているnrfjprog
が必要です。これは次からダウンロードできます。
Linux および macOS のPATH
にnrfjprog
とmergehex
追加します。
あるいは、 nRF Connect Programmer
使用すると、UI サポートを備えた接続ファームウェアをプログラムできます。
nRF Connect Desktop をダウンロードし、そこにnRF Connect Programmer
インストールします。
pc-ble-driver
コンパイルするには、次のツールが必要です。
pc-ble-driver
をコンパイルするconnectivity
HEX ファイルをコンパイルするには、追加のツールが必要です。
connectivity
HEX ファイルのコンパイルに移動します特定のプラットフォームに依存関係をインストールするには、次の手順に従います。
Visual Studio 15
以降のバージョンをダウンロードしてインストールします。
Chocolateyをインストールします。 cmd.exe
でインストール (管理者として実行)
# Copy everything below
@ " %SystemRoot%System32WindowsPowerShellv1.0powershell.exe " -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command " iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) " && SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
Chocolatey
が上記のようにすでにインストールされているが、PATH に追加されていない場合は、次を実行します。
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
Git
をインストールします。
$ choco install -y git
CMake
をインストールします。
$ choco install -y cmake
vcpkgをインストールします。
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ . b ootstrap-vcpkg.bat
次に、vcpkg の場所をPATH
に追加し、それをVCPKG_ROOT
環境変数として設定します。
次の手順は、独自のconnectivity
HEX ファイルをコンパイルする場合にのみ必要です。
ninja
をインストールします。
$ choco install -y ninja
GNU Embedded Toolchain for Arm
ダウンロードしてインストールします
この場所からダウンロードします。
インストール手順に従ってください。
インストール パスを環境変数にGNUARMEMB_TOOLCHAIN_PATH
として設定します。例えば:
$ set GNUARMEMB_TOOLCHAIN_PATH=c: g ccarmemb
Python
とpip
インストールしてから、 nrfutil
をインストールします
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
build-essential
をインストールします。
$ sudo apt-get -y install build-essential
Git
をインストールする
$ sudo apt-get -y install git
インストールされているGit
のバージョンが必要なバージョンより低い場合は、次のようになります。
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt update
$ sudo apt install git
CMake
をインストールします。
$ sudo apt-get -y install cmake
バージョンが必要なバージョンより低い場合は、ソースからCMake
インストールします。
vcpkgをインストールします。
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ ./bootstrap-vcpkg.sh
次に、vcpkg の場所をPATH
およびVCPKG_ROOT
環境変数に追加します。
Ninja
をインストールします。
$ sudo apt-get install ninja-build
次の手順は、独自のconnectivity
HEX ファイルをコンパイルする場合にのみ必要です。
GNU Embedded Toolchain for Arm
をインストールします。
GNUARMEMB_TOOLCHAIN_PATH
として設定します。 Python
とpip
インストールしてから、 nrfutil
をインストールします。
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
# If errors persist, try updating pip itself.
Xcode (>=10.1)
をインストールします。
HomeBrew を使用してgcc6
インストールします。
$ brew install gcc6
HomeBrew を使用してCMake
インストールします。
$ brew install cmake
$ brew upgrade cmake
バージョンが必要なバージョンより低い場合は、ソースからCMake
インストールします。
vcpkgをインストールします。
$ git clone https://github.com/Microsoft/vcpkg/
$ cd vcpkg
$ git checkout tags/2020.04
$ ./bootstrap-vcpkg.sh
次に、vcpkg の場所をPATH
およびVCPKG_ROOT
環境変数に追加します。
次の手順は、独自のconnectivity
HEX ファイルをコンパイルする場合にのみ必要です。
GNU Embedded Toolchain for Arm
をインストールします。
GNUARMEMB_TOOLCHAIN_PATH
として設定します。 Python
とpip
インストールしてから、 nrfutil
をインストールします
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
vcpkg の依存関係をインストールします。
# cd
# Make sure %VCPKG_ROOT% is set and added to %PATH%
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
CMake この記事に従って使用する Visual Studio コンパイラを選択します: コマンド ラインで C/C++ コードをビルドする
$ cmake -G Ninja ..
コンパイル
$ cmake --build .
必要に応じて、 --config
オプションを使用してビルド構成を選択します。通常、 Debug
、 Release
、 MinSizeRel
、およびRelWithDebInfo
が使用可能です。例えば:
$ cmake --build . --config Debug
vcpkg の依存関係をインストールします。
# cd
# Make sure $VCPKG_ROOT is set and added to $PATH
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
CMake
$ cmake
-G Ninja
..
必要に応じて、 -DCMAKE_BUILD_TYPE
オプションを使用してビルド構成を選択します。通常、 Debug
、 Release
、 MinSizeRel
、およびRelWithDebInfo
が使用可能です。
必要に応じて、 -DARCH
オプションを使用してターゲット アーキテクチャ (32 ビットまたは 64 ビット) を選択します。値はx86_32
、 x86_64
、 x86_32,x86_64
です。例えば:
$ cmake
-G Ninja
-DCMAKE_BUILD_TYPE=Debug
-DARCH=x86_32,x86_64
..
コンパイル
$ cmake --build .
pc-ble-driver
をコンパイルします。次の環境変数が設定されていることを確認してください。
VCPKG_ROOT
GNUARMEMB_TOOLCHAIN_PATH
次のパスが PATH に追加されていることを確認してください。
VCPKG_ROOT
mergehex
特定のプラットフォームに依存関係をインストールするには、次の手順に従います。
環境を設定する
# cd
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
# Make sure environment variables have been set
# as described at beginning of this section
CMake
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
を 1 に設定すると、接続ファームウェアのコンパイルが有効になります。
CONNECTIVITY_VERSION
コンパイルされた接続ファームウェアのバージョンを定義します。
Windows での pc-ble-driver のコンパイル時にその他のオプションを確認してください
コンパイル
$ cmake --build . --target compile_connectivity
HEX ファイルは、コンパイル後にhex/sd_api_v
フォルダーで使用できます。これらには、SoftDevice と接続アプリケーションが含まれます。
環境を設定する
# cd
$ export TMP=/tmp
# Make sure environment variables have been set
# as described at beginning of this section
CMake
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ cmake
-G Ninja
-DCOMPILE_CONNECTIVITY=1
-DCONNECTIVITY_VERSION=1.0.0
..
COMPILE_CONNECTIVITY
を 1 に設定すると、接続ファームウェアのコンパイルが有効になります。
CONNECTIVITY_VERSION
コンパイルされた接続ファームウェアのバージョンを定義します。
Ubuntu Linux または macOS での pc-ble-driver のコンパイル時にその他のオプションを確認してください
コンパイル
$ cmake --build . --target compile_connectivity
HEX ファイルは、コンパイル後にhex/sd_api_v
フォルダーで使用できます。これらには、SoftDevice と接続アプリケーションが含まれます。
nRF5x コマンドライン ツールがまだインストールされていない場合は、ツールのインストールに進みます。
このライブラリを使用するには、nRF5x IC 上の接続ファームウェアをプログラムする必要があります。
nRF5x コマンドライン ツールを使用して IC を消去およびプログラムします。
$ nrfjprog -f NRF5 -e
$ nrfjprog -f NRF5 --program hex/sd_api_v/connectivity___with_s_...hex
あるいは、nRF Connect Programmer を使用して IC を消去およびプログラムします。
pca10059 nRF52 ドングルなどの一部のキットにはオンボード デバッガがないため、シリアル DFU 経由でプログラムする必要があります。 Windows では、オペレーティング システムによってキットが正しく検出されるようにデバイス ドライバーが必要です。必要なドライバーをインストールするには、最新の nRF Connect for Desktop がインストールされていることを確認してください。
シリアル DFU 経由の接続ファームウェアのプログラミングは、コマンド ラインまたは nRF Connect for Desktop から実行できます。
nrfutil を使用したデバイス ファームウェアのアップグレードは、通常 2 つの手順で行われます。1: DFU zip パッケージの生成、2: DFU 手順の実行です。 DFU zip パッケージが事前に作成されており、このリポジトリに含まれています。事前に作成された DFU パッケージを使用して nrfutil を使用して DFU プロシージャを実行するには、次の手順を実行します。
nrfutil dfu usb-serial -pkg connectivity_x.x.x_usb_with_s_.._dfu_pkg.zip -p
この例は、 pc-ble-driver
を使用した開発の優れた出発点として機能します。例には心拍数モニター (BLE ペリフェラル) と心拍数コレクター (BLE マスター) が含まれており、 pc-ble-driver
上に構築されたアプリケーションの基本構造を示しています。
サンプルをすぐに起動して実行するには、examples/README.md を参照してください。
pc-ble-driver のインストール中に問題が発生した場合は、Issues.md を参照してください。
プル リクエストを作成して、お気軽に変更を提案してください。
重要な変更を加える予定がある場合は、あまり多くの労力を費やす前に、小さなことから始めて合意を得るように依頼してください。現在の製品ロードマップに適合しない場合、プル リクエストは拒否されることがあります。
プル リクエストを受け入れるには、コントリビューター ライセンス契約 (CLA) に署名する必要があります。最初のプル リクエストを送信した後、これを行う手順が表示されます。
バグを見つけた場合、または一般的に質問やその他のフィードバックがある場合は、Nordic DevZone ポータルに投稿してください。バグレポートには、バグを再現する方法を十分に詳細に説明する必要があることに注意してください。
詳細については、ライセンス ファイルを参照してください。