通过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 飞鸿踏雪