1. 程式人生 > >樹莓派安裝BlueZ協議棧(Raspberry pi Bluetooth LE)

樹莓派安裝BlueZ協議棧(Raspberry pi Bluetooth LE)

在之前的專案中,遇到需要將若干個BLE連線上讀取其資料的功能,所以我採取了將樹莓派和usb藍芽結合在一起,使用bluez驅動其藍芽4.0使
之和我的BLE裝置進行連線,所以在此我記錄一下在樹莓派環境下怎樣使用USB藍芽裝置。

前提準備

關於USB藍芽4.0介面卡

因為專案的選型,我在京東上對勝為,山澤等標準正版的介面卡進行過測試,只要是正版晶片,樹莓派韌體對於藍芽介面卡的支援非常好,沒有遇到過無法驅動的裝置。

關於樹莓派韌體

安裝BlueZ藍芽協議棧

在預設的官方韌體中是不包含藍芽協議棧的,所以我們需要安裝Linux官方提供的Bluetooth協議棧,但是在官方的ppa(依賴安裝源)提供的版本比較老,所以若條件允許我們還是需要安裝一個版本比較高的BlueZ。

首先更新系統,並安裝必備的軟體庫

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libical-dev libreadline-dev libudev-dev libusb-dev make wget

然後下載Bluez最新原始碼:

wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.37.tar.xz
tar xvf bluez-5.37.tar.xz
cd bluez-5.32

然後進行編譯,編譯比較耗費時間:

./configure --disable-systemd
make

此時可能會產生D-Bus >= 1.6 is required的錯誤,這時我們需要更新D-Bus的版本:

wget http://dbus.freedesktop.org/releases/dbus/dbus-1.10.6.tar.gz
tar zxvf dbus-1.10.6.tar.gz
cd dbus-1.10.6
#安裝到預設目錄下
./configure
make
sudo make install

編譯完成後,進行安裝,此時需要安裝至系統目錄下,所以需要sudo命令:

sudo
make install

此時就完成了Bluez協議棧的安裝。

使用python呼叫Bluez

安裝完成後,我們可以使用hcitool的命令列工具集來除錯我們的藍芽裝置,但是為了封裝更多的邏輯那麼我們就要使用程式語言來呼叫Bluez協議棧,此處給出大神開發的工具包,bluepy。現在bluepy已經更新到0.9.11,目前開發者還在持續跟進該專案,還是有存活概率的,可以放心使用。

安裝bluepy:

#克隆程式碼庫,進行編譯
git clone https://github.com/IanHarvey/bluepy.git
#根據文件可知,該庫只支援bluez-5.3及以上版本,我們安裝的是5.37所以可以直接make
cd bluepy/bluepy
make