一、基础应用
安装蓝牙驱动
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 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:
- raspberry pi 蓝牙,pcduino蓝牙
- piBeacon - DIY iBeacon with a Raspberry Pi
- 用pybluez控制蓝牙