ブログ

Armadillo-X1/IoT(G3): Beaconパケットを送信してみる

at_takuya.sasaki
2017年1月7日 13時09分

Armadillo-X1/G3には、WLAN/BTコンボモジュールが搭載されています。 通常Armadilloは、Bluetoothのセントラル(親機)になることが多いかと思いますが、今回はペリフェラル(子機)として、 Beaconパケットを送信してみようと思います。

1. bluez-beaconを使って見る

今回は、MITライセンスで公開されている bluez-ibeacon [*1] というソフトウェアを利用してみたいと思います。

[*1] https://github.com/carsonmcdonald/bluez-ibeacon

2. bluezの開発用パッケージを追加インストール

Armadillo-X1上でbluez-ibeaconをビルドするために、bluezの開発用パッケージを追加インストールします。 apt-getを使ってパッケージをインストールするので、Armadillo-X1はインターネットに接続できる状態にしてください。

root@armadillo:~# apt-get install libbluetooth-dev

3. gitパッケージを追加インストール

bluez-ibeaconはgithubに公開されているので、gitパッケージを追加インストールします。

root@armadillo:~# apt-get install git

4. bluez-ibeaconをclone

bluez-ibeaconをgithubからcloneします。

root@armadillo:~# git clone https://github.com/carsonmcdonald/bluez-ibeacon.git
Cloning into 'bluez-ibeacon'...
remote: Counting objects: 77, done.
remote: Total 77 (delta 0), reused 0 (delta 0), pack-reused 77
Unpacking objects: 100% (77/77), done.
Checking connectivity... done.

5. bluez-ibeaconをビルドする

bluez-ibeaconをビルドします。

root@armadillo:~# cd bluez-ibeacon/bluez-beacon/
root@armadillo:~/bluez-ibeacon/bluez-beacon# make
cc -g -o ibeacon ibeacon.c -lbluetooth

6. Bluetoothのアドレスなどを調べる

以下のコマンドでArmadillo-X1のBluetoothアドレスなどを調べてみます。

root@armadillo:~/bluez-ibeacon/bluez-beacon# hciconfig
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 44:C3:06:30:C3:30  ACL MTU: 1022:8  SCO MTU: 183:5
        UP RUNNING PSCAN
        RX bytes:1320 acl:0 sco:0 events:90 errors:0
        TX bytes:2184 acl:0 sco:0 commands:90 errors:0

7. Beaconパケットを送信してみる

利用方法はREADME[*2]を参照します。 パラメータの説明は、ibeaconをパラメータ無しでたたけば出力されます。

[*2] https://github.com/carsonmcdonald/bluez-ibeacon/blob/master/README.md

root@armadillo:~/bluez-ibeacon/bluez-beacon# ./ibeacon
Usage: ./ibeacon <advertisement time in ms> <UUID> <major number> <minor number> <RSSI calibration amount>

今回は、サンプルのパラメータから送信間隔を2秒おきに変更してみます。

root@armadillo:~/bluez-ibeacon/bluez-beacon# ./ibeacon 2000 e2c56db5dffb48d2b060d0f5a71096e0 1 1 -29
Hit ctrl-c to stop advertising

8. G3でBeaconパケットを受信してみる

Beaconパケットを受信するセントラルとして、Armadillo-G3を用意してみました。 以下のコマンドでスキャンすると、2秒おきにBeaconパケットが送信されていることがわかります。
(アドレスは 6章で調べたアドレスと同じはずです)

root@armadillo:~# hcitool lescan --duplicates
LE Scan ...
44:C3:06:30:C3:30 (unknown)
44:C3:06:30:C3:30 armadillo
~(2秒経過)~
44:C3:06:30:C3:30 (unknown)
44:C3:06:30:C3:30 armadillo

以上