0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rasberry Pi 4 で iBeacon

Posted at

0. はじめに

とあるQ&Aがきっかけで、Rasberry Pi 4でiBeaconを受信する方法を調べたので、ここにまとめておくことにした。

最初は、『iBeaconも所詮は、BLEペリフェラルだから、簡単に受信できるだろう』と考えていたが、汎用のBluetoothセントラルのスキャンでは、見つけるのが大変だった。

BLEやiBeaconの細かいことは省いて、Rasberry Pi 4 で必要なコマンド等を書いておく。

以下のPDFを参考にさせていただいた。多謝

1. 環境

  • 使用した Raspberry Pi 4 の諸元は、以下のとおり。
$ cat /sys/firmware/devicetree/base/model
Raspberry Pi 4 Model B Rev 1.5

$ cat /proc/cpuinfo
processor       : 0
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3
(以下省略)

$ cat /etc/debian_version
11.8

$ cat /etc/issue
Raspbian GNU/Linux 11 \n \l

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

$ uname -a
Linux raspberrypi4 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux

$ cat /proc/version
Linux version 6.1.21-v8+ (dom@buildbot) (aarch64-linux-gnu-gcc-8 (Ubuntu/Linaro 8.4.0-3ubuntu1) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023

まずは、送信側から説明する。

2. Rasberry Pi 4 を iBeacon の送信側にする

以下のコマンドを投入する。

Bluetooth デバイスを確認する
$ hciconfig
hci0:   Type: Primary  Bus: UART
        BD Address: E4:5F:01:AF:B5:2B  ACL MTU: 1021:8  SCO MTU: 64:1
        UP RUNNING 
        RX bytes:1548 acl:0 sco:0 events:94 errors:0
        TX bytes:2564 acl:0 sco:0 commands:94 errors:0
Bluetooth デバイスを起動する
$ sudo hciconfig hci0 up     #先の確認ですでにUPであったが念の為
$ sudo hciconfig hci0 noscan #ペリフェラルのスキャンを停止
$ sudo hciconfig hci0 leadv3 #アドバタイズLv3を開始
iBeacon信号の発信(アドバタイズ)
$ sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15  48 53 44 42 4C 45 41 44 80 C0 18 00 FF FF FF FF  00 01 00 10 C8 00

上記コマンドで送信したiBeacon固有情報(自由に設定可)は以下の内容。

proximity UUID 48534442-4C45-4144-80C0-1800FFFFFFFF
major 0001(1)
minor 0010(16)

Androidスマホのアプリ「Beacon Scope」で受信を確認。Rasberry Pi 4 から iBeacon 情報を送信できていることが確認できた。

5C99A0C90844303D3F3F1EB3D2CA6C293316168A.jpeg

次のコマンドを投入して、iBeacon信号の発信を停止する。

アドバタイズの停止
$ sudo hciconfig hci0 noleadv




次は、Rasberry Pi 4 で iBeacon を受信する方法を説明する。

3. Rasberry Pi 4 で iBeacon を受信する

iBeaconのアドバタイズデータを確認するため、hcidumpコマンドをインストールする。

hcidumpコマンドをインストール
$ sudo apt install bluez-hcidump
iBeacon信号を受信する
$ sudo hcidump –R & #バックグラウンドで実行
$ sudo hcitool lescan
scr22.png

iBeacon信号の受信を停止するにはCtrl+Cを打つ。バックグラウンドのhcidumpプロセスは、psコマンドでプロセス番号を調べてkillするか、fgコマンドでフォアグランドに移してからCtrl+Cを打つ。

ちゃんと受信できているが、他にBLEデバイスがたくさん存在していると、探すのに手間がかかる。

冒頭で引用したPDFで紹介されているシェルを利用すると、簡単に見ることができる。そのために、まず、bcコマンドをインストールする。

bcコマンドをインストール
$ sudo apt install bc

次に、シェルファイル(ibeacon_scan)をダウンロードして、実行権限を付与する。

PDFに書かれているURLからシェルをダウンロード
$ sudo wget http://developer.radiusnetworks.com/ibeacon/idk/ibeacon_scan

$ sudo chmod 755 ibeacon_scan
シェル起動
$ ./ibeacon_scan 
Set scan parameters failed: Input/output error
UUID: 48534442-4C45-4144-80C0-1800FFFFFFFF MAJOR: 100 MINOR: 10 POWER: -59
UUID: 48534442-4C45-4144-80C0-1800FFFFFFFF MAJOR: 100 MINOR: 10 POWER: -59
^C

原因は未調査だが、シェルに書いてあるreadコマンドがエラーとなり大量に出力されてしまうが、編集されていて見やすい。

4. おわりに

電池駆動できる安価なBLEモジュールがあれば、iBeaconを何個か自作して、家じゅうに隠して、スマホを持って宝探しするのも面白そうである。

何かの参考になれば幸いです。以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?