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
あっさりビルドできてしまいます。
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回以上ボタンを押します。