nRF52840 DKで遊ぼう④~Zephyr Bluetooth Mesh Sample~

はじめに

nRF5 SDK for MeshのExampleをいくつか試してきましたが、ZephyrのBluetooth Mesh Sampleも試してみます。

Mesh OnOff Model

単純なGenericOnOffを試します。

|> zephyr/samples/boards/nrf52/mesh/onoff-app

docs.zephyrproject.org

あっさりビルドできてしまいます。

mkdir build && cd $_
cmake -GNinja -DBOARD=nrf52840_pca10056 ..
ninja

ninja flashで開発キットへの書き込みができます。 開発キットを複数接続している場合に、個別に書き込む方法がわかりません。 1つずつ接続して、ninja flashすると書き込みできます。

ninja flashを使うと、Meshがunprovisionedのbroadcastを開始しません。nrfjprogで書き込み、resetをするのが安定策のようです。

もしくは、nrfjprog-sオプションを使って、シリアル番号を入力すると、個別に書き込み可能です。 シリアル番号は、nrfjprog -iで確認できます。

2つの開発キットに同じfirmwareを書き込みます。 開発キットを起動したら、nRF Meshアプリを利用して、Provisioningと設定を行います。

ボタンとLEDのセットが1エレメントに対応しており、4つのエレメントが制御できるようになっています。

一方をclient、もう一方をserverとして設定していきます。 両方に同じapp keyを追加し、client側はpublishするアドレスにグループアドレス (例えば0xc000) かユニキャストアドレス (clientのエレメントアドレス) を設定します。

server側では、グループアドレスをsubscribeするために、Subscribeにclient側でpublishアドレスとして設定したグループアドレスを指定します。

これで、client側のボタンを押すと、server側のLEDが点灯するようになります。

わかりにくいのが、1度ボタンを押すとLEDが点灯します。LEDを消灯するときは、連打しすぎないように2回以上ボタンを押します。