前言
最近打算将树莓派用于物联网网关设备,思路就是在树莓派上连接一个有蓝牙4.0的USB蓝牙适配器,然后通过这个适配器去连接外面的BLE设备,比如我这个BLE设备是采集各种环境相关数据的,而且有很多个这样的设备,这样我就可以通过树莓派对这些设备进行管理,当然最基本的就是进行数据传输了。
安装BlueZ
需要实验我们说的这个目的,首先我们的安装BlueZ库,其官网为:http://www.bluez.org/,下载最新版本的源码包到本地备用。(该工具在树莓派最新的系统(2016-03-18-raspbian-jessie)中已经集成,可以略过安装直接使用。若是之前的系统则需要参考下面的步骤安装。)
首先编辑/etc/apt/sources.list 文件,然后在里面添加如下内容:
1
2
|
deb http://archive.raspbian.org/raspbian wheezy main contrib non-free
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free
|
添加完毕并保存文件,然后执行
1
|
sudo
apt-get update
|
若之前安装过BlueZ,可以通过如下命令删除老版本的BlueZ
1
2
|
sudo
apt-get --purge remove bluez
sudo
apt-get update
|
执行如下命令安装其依赖库
1
|
sudo
apt-get
install
libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
|
进入BlueZ源码包目录,使用如下命令解压源码包并进入解压后的目录
1
2
|
sudo
tar
xvf bluez-5.33.
tar
.xz
cd
bluez-5.33
|
编译并安装BlueZ,编译的时间稍长,请耐心等待…
1
2
3
|
sudo
.
/configure
--disable-systemd
sudo
make
sudo
make
install
|
启动USB蓝牙适配器
1
|
sudo
hciconfig hci0 up
|
通过如下命令扫描蓝牙设备
1
|
sudo
hcitool lescan
|
扫描到设备后,通过如下命令连接设备
1
2
3
4
|
sudo
gatttool -b 08:7C:BE:01:8C:E4 -I
[08:7C:BE:01:8C:E4][LE]> connect
Attempting to connect to 08:7C:BE:01:8C:E4
Connection successful
|
若能显示连接成功,那么基本就OK了,下一步研究如何收发数据。
若提示找不到gatttool,可以通过以下命令解决
1
|
sudo
cp
attrib
/gatttool
/usr/bin/
|
参考资料:
http://stackoverflow.com/questions/24853597/ble-gatttool-cannot-connect-even-though-device-is-discoverable-with-hcitool-lesc
http://blog.sina.com.cn/s/blog_7cedb56d0102v0qj.html