Embedded Rustコードを書いて、micro:bitのBluetooth Low Energy (BLE) をスマートフォンに接続する
BLEスタックが何であるかを見て、基本的な概念を理解しました。次は、その知識を実際に使ってみる番です。スマートフォンとmicro:bitの間でデータを送受信できる、シンプルな(ナレーター: 著者は嘘をついていました)プロジェクトを書いていきます。
このプログラムには、BatteryService というBLEサービスを1つ含めます。接続されたデバイス(スマートフォンなど)は、現在のバッテリーレベルを読み取るか、バッテリーレベルが変化するたびに更新を受け取るために購読できます。
テンプレートからプロジェクトを作成する
今回もEmbassyを使いますが、今度はBSPは使いません。その代わりに、embassy-nrf HAL を直接扱います。
cargo generate --git https://github.com/ImplFerris/mb2-template.git --rev 3d07b56
-
プロジェクト名の入力を求められたら、"hell-ble" のような名前を入力します。
-
async を使用するか尋ねられたら、"true" を選択します。
-
"BSP" または "HAL" のどちらを使うか選ぶよう求められたら、"HAL" を選択します。
プロジェクト構成
この演習は、nrf-softdevice リポジトリにある ble_bas_peripheral_notify.rs の例をベースに、分かりやすさのために少し構成を変更したものです。さらに多くの例はこちらで確認できます。
以下は、これから作成する src フォルダーの構成です。Bluetooth関連の共通セットアップと設定を格納するための ble モジュールを作成し、バッテリーサービスのロジック用に別の service.rs ファイルを用意します。
.
├── ble
│ ├── adv.rs
│ ├── config.rs
│ └── mod.rs
├── main.rs
└── service.rs
1 directory, 5 files