通过USB蓝牙适配器连接BLE设备
前言
最近打算将树莓派用于物联网网关设备,思路就是在树莓派上连接一个有蓝牙4.0的USB蓝牙适配器,然后通过这个适配器去连接外面的BLE设备,比如我这个BLE设备是采集各种环境相关数据的,而且有很多个这样的设备,这样我就可以通过树莓派对这些设备进行管理,当然最基本的就是进行数据传输了。
安装BlueZ
需要实验我们说的这个目的,首先我们的安装BlueZ库,其官网为:http://www.bluez.org/,下载最新版本的源码包到本地备用。(该工具在树莓派最新的系统(2016-03-18-raspbian-jessie)中已经集成,可以略过安装直接使用。若是之前的系统则需要参考下面的步骤安装。)
首先编辑/etc/apt/sources.list 文件,然后在里面添加如下内容:
deb http://archive.raspbian.org/raspbian wheezy main contrib non-free
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free
添加完毕并保存文件,然后执行
sudo apt-get update
若之前安装过BlueZ,可以通过如下命令删除老版本的BlueZ
sudo apt-get --purge remove bluez
sudo apt-get update
执行如下命令安装其依赖库
sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
进入BlueZ源码包目录,使用如下命令解压源码包并进入解压后的目录
sudo tar xvf bluez-5.33.tar.xz
cd bluez-5.33
编译并安装BlueZ,编译的时间稍长,请耐心等待…
sudo ./configure --disable-systemd
sudo make
sudo make install
启动USB蓝牙适配器
sudo hciconfig hci0 up
通过如下命令扫描蓝牙设备
sudo hcitool lescan
扫描到设备后,通过如下命令连接设备
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,可以通过以下命令解决
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
via 飞鸿踏雪