Nordic

HCIインターフェースを使用したnRF52とBlueZの接続

2023.10.16

こんにちは。
加賀デバイスのNordic Teamです。

以前コラムで“LTE/Bluetooth LE Gatewayのご紹介”という記事を投稿しましたが、今回はBluetoothのHCIインターフェースに特化した内容を紹介します。

Nordicの開発環境であるnRF Connect SDKの中には、Nordicが提供する”HCI low power UART“や、Zephyrが提供する“HCI UART”“HCI USB”などがあります。
これらサンプルプロジェクトを使用する事で簡単にHCI接続が可能なBluetooth low Enenrgy製品が作れます。

今回はZephyrベースの”HCI UART”を使用して実際に動かしてみたいと思います。

◢◤接続環境

①Bluetooth Low Energyデバイスは加賀FEI製:EB2840AA2(nRF52840)を使用。
②EB2840AA2とLinux PCとの接続はUART⇔USB変換ケーブルを使用。
③Linux PCのOSはubuntu 20.04.6 LTSで、BlueZのバージョンは5.53を使用。

◢◤動作確認

サンプルプロジェクトそのままではBluetoothアドレスは初期設定の00:00:00:00:00:00となっているため、Bluetoothアドレス設定を追加しました。
BluetoothアドレスはnRF52840のFICRレジスタに保存されているDEVICE ADDRESSの値を使用します。。
 *FICRレジスタに保存されているDEVICE ADDRESSはユニークIDが格納されているため、基本的には同じアドレスになることはほとんどありません。

Linux PCとの接続結果は下記となります。
*仕様しているコマンドはこちらを参考にしています。

まずEB2840AA2をBluetoothのHCI(UART)デバイスとして認識させます。

続いてLinux PC側が正しく認識しているか確認します。
hciconfigコマンドで確認すると、BluetoothアドレスがF8:DC:A8:FC:74:64のHCI(UART)デバイスとして認識されている事が分かります。

bluetoothctlコマンドで確認すると、デバイス名がkgdev #2となっていて、Bluetoothアドレスはhciconfigコマンドで確認した値と同じF8:DC:A8:FC:74:64として確認が出来ました。

SCAN動作の確認です。

周囲のBluetoothデバイスを見つける事が出来ています。

AdvertiseびConnection動作の確認です。

上がLinux PCのコマンド画面で、下がCentralとして使用したNordicのnRF Connect for DesktopのBluetooth Low Energyのアプリ画面です。
①bluetoothctlの”advertise on””コマンドでAdvertiseを開始すると、②Central側でF8:DC:A8:FC:74:64のデバイスを見つける事が出来ました。(この時点ではNameはUnKnown nameと表示されました)。
③次にCentral側で”Connect”をすると、④kdgev #2という名前で認識されました。⑤Linux PC側でもCetnralデバイス(CD:51:BB:BB:BD:C5)とConnectionをしたログが出力されています。

HCIコマンドでも試してみます。

Bluetoothアドレスの変更と、Bluetoothアドレスの読み出しを試しましたが、両方とも正しく動作しているようです。

このようにNordicが提供しているサンプルプロジェクトそのまま使用して頂く事で簡単にHCIインターフェースを試す事が出来ます。

Nordicの製品にご興味頂けましたら詳細の説明及びデモも可能ですのでお問い合わせ頂ければと思います。

今後もNordicの紹介及びコラムにて色々な情報を公開致しますので是非ご確認ください。

また、Facebookでも随時情報を公開しておりますので合わせてご確認ください。

Nordic コラム一覧

nRF91シリーズ新ラインナップ nRF9151 を発表

関連記事