Raspberry Pi蓝牙应用及iBeacon基站搭建

一、基础应用

安装蓝牙驱动

1
sudo apt-get install bluetooth bluez-utils blueman

查看蓝牙适配器

1
2
3
4
5
6
$ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 005: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

其中

1
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

为USB蓝牙适配器信息。

查看蓝牙状态

1
2
$ /etc/init.d/bluetooth status
[ ok ] bluetooth is running.

扫描周边蓝牙设备

1
2
3
$ hcitool scan
Scanning ...
28:E1:4C:B0:67:9D TracyYih的 iPhone

查看蓝牙连接情况

1
sudo l2ping 28:E1:4C:B0:67:9D

可以看到返回结果:

1
2
3
4
5
6
7
Ping: 28:E1:4C:B0:67:9D from 00:1A:7D:DA:71:13 (data size 44) ...
44 bytes from 28:E1:4C:B0:67:9D id 0 time 180.34ms
44 bytes from 28:E1:4C:B0:67:9D id 1 time 127.61ms
44 bytes from 28:E1:4C:B0:67:9D id 2 time 203.81ms
44 bytes from 28:E1:4C:B0:67:9D id 3 time 80.83ms
44 bytes from 28:E1:4C:B0:67:9D id 4 time 100.71ms
...

这时手机上会出现一个配对请求,暂时配对不上,后续再研究。

二、搭建iBeacon基站

注:Raspberry Pi本身不带蓝牙模块,需另外购买USB蓝牙4.0适配器。

安装依赖库

1
sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev

下载bluez

1
2
3
sudo mkdir bluez
cd bluez
sudo wget www.kernel.org/pub/linux/bluetooth/bluez-5.18.tar.gz

解压bluez

1
2
sudo gunzip bluez-5.18.tar.gz
sudo tar xvf bluez-5.18.tar

安装bluez

1
2
3
4
cd bluez-5.18
sudo ./configure --disable-systemd
sudo make
sudo make install

查看蓝牙配置

1
hciconfig

开启蓝牙

1
2
3
sudo hciconfig hci0 up
sudo hciconfig hci0 leadv
sudo hciconfig hci0 noscan

设置beacon广播信息

1
2
3
4
5
6
#!/bin/bash
uuid="38 69 43 AC E6 3D 45 D7 BD 77 4C A6 76 D3 2A 5F"
major="00 00"
minor="00 00"
power="C5"
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 $uuid $major $minor $power 00

三、python程序控制

安装pybluez

1
2
3
sudo apt-get install libbluetooth-dev # 依赖 libbluetooth-dev
sudo apt-get install python-dev # 依赖 python-dev
sudo pip install pybluez

如果没安装pip可以用下面命令安装:

1
sudo apt-get install python-pip

查找附近的设备

pybluez官方示例inquiry.py

1
2
3
4
5
6
7
8
9
10
11
12
13
# file: inquiry.py
# auth: Albert Huang <albert@csail.mit.edu>
# desc: performs a simple device inquiry followed by a remote name request of
# each discovered device
# $Id: inquiry.py 401 2006-05-05 19:07:48Z albert $
#
import bluetooth
print("performing inquiry...")
nearby_devices = bluetooth.discover_devices(lookup_names = True)
print("found %d devices" % len(nearby_devices))
for addr, name in nearby_devices:
print(" %s - %s" % (addr, name))

运行

1
2
3
4
$ python inquiry.py
performing inquiry...
found 1 devices
28:E1:4C:B0:67:9D - TracyYih的 iPhone

link:

  1. raspberry pi 蓝牙,pcduino蓝牙
  2. piBeacon - DIY iBeacon with a Raspberry Pi
  3. 用pybluez控制蓝牙