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
以上