Armadillo-640 + BT/THオプションモジュール上でpc-ble-driverを使用し、スキャンを行うサンプルを作成しました。
本サンプルは開発中にペリフェラルがアドバタイジングパケットを出しているか等確認するために、使用することができます。
本howtoではその概要と使い方についてまとめます。
使用したもの
- Armadillo-640 + BT/THオプションモジュール
- LE Coded PHYでアドバタイジングパケットを送信できるBTデバイス
準備
本手順ではArmadillo-640をセントラルとしてスキャンができることを確認します。
Armadillo-640とBT/THオプションモジュールのセットアップ
使用するArmadillo-640のソフトウェア構成は以下のとおりです。
ソフトウェア | ダウンロード |
---|---|
Linuxカーネル | v4.14-at35 |
DTB | v4.14-at35 |
ブートローダー | v2018.03-at9(UART3) |
ユーザーランド | v20210224(buster) |
Armadillo-640とBT/THオプションモジュールのセットアップは「Armadillo-640 + BT/THオプションモジュールでLE Coded PHY(Long-range モード)」と同様の手順で行います。 セットアップを行うことで、Armadillo-640上でサンプルを実行することができます。
サンプルプログラムの取得
サンプルプログラム(scan_sample)を取得する方法は以下のように2通りあります。
プログラムをビルドする
本howtoで使用するサンプルプログラムのソースコードはこちらからダウンロードできます。
サンプルプログラム(scan_sample)は「Armadillo-640 + BT/THオプションモジュールでLE Coded PHY(Long-range モード)」でpc-ble-driverのビルド環境を整えた上で、以下のコマンドを実行することで生成されます。
[ATDE]$ cd path/to/pc-ble-driver/at_build/
[ATDE]$ make dist-clean && make CROSS_COMPILE=arm-linux-gnueabihf-
[ATDE]$ ls scan_sample
scan_sample
ビルド済みバイナリをダウンロードする
ビルド済みバイナリを使用するには以下のコマンドをArmadillo上で実行します。
[amradillo ~]# wget https://github.com/atmark-techno/pc-ble-driver/releases/download/howto-v1.3.0/bin_scan_sample.tar.gz
[amradillo ~]# ls bin_scan_sample.tar.gz
bin_scan_sample.tar.gz
[amradillo ~]# tar xf bin_scan_sample.tar.gz
[amradillo ~]# ls bin_scan_sample/scan_sample
scan_sample
使用方法
-
-h
ヘルプを表示します。 -
-a
アクティブスキャンを行います。
デフォルトはパッシブスキャンです。 -
-e
extended advertising packetを受信します。
スキャンに使用するPHYをCoded PHYにした場合自動で有効になります。 -
-p
スキャンに使用するPHYを1M PHYかCoded PHYどちらか選択します。
デフォルトはCoded PHYです。
以下に1M・Coded PHYを指定する方法を示します。
1M PHYを使用する場合:1m
Coded PHYを使用する場合:coded -
-s
シリアルポートを指定します。
デフォルトは/dev/ttyACM0です。
実行例
以下に実行例を示します。
ここではCoded PHYを使用してパッシブスキャンでextended advertising packetを受信します。
スキャンしたデバイスのデバイスアドレス、RSSI値、デバイス名を表示します。
[armadillo]$ ./scan_sample -p coded -s /dev/ttyACM0
phy: CODED_PHY
Accept Extended Advertising packet
Serial port used: /dev/ttyACM0
Baud rate used: 1000000
Info: Successfully opened /dev/ttyACM0. Baud rate: 1000000. Flow control: none. Parity: none.
device address: 0x0123456789AB, RSSI: -39 device name: armadillo
device address: 0x0123456789AB, RSSI: -38 device name: armadillo
device address: 0x0123456789AB, RSSI: -38 device name: armadillo
: (以下略)