樹莓派安裝BlueZ協議棧(Raspberry pi Bluetooth LE)
阿新 • • 發佈:2018-12-31
在之前的專案中,遇到需要將若干個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