若該文為原創文章,轉載請注明原文出處
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110940484
長期持續帶來更多專案與技術分享,咨詢請加QQ:21497936、微信:yangsir198808
紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中…(點擊傳送門)
樹莓派開發專欄
上一篇:《樹莓派開發筆記(十):Qt讀取ADC模擬量電壓(ADS1115讀取電壓模擬量)》
下一篇:敬請期待…
前話
??接下來介紹樹莓派藍牙模塊的開發,使用的協議為bluez,
ssh遠程登錄到樹莓派
??請參照博客《樹莓派開發筆記(一):入手樹莓派3b,成功運行樹莓派系統》
Demo:藍牙探測信號rssi強度,并發送給服務器
??
??客戶端bob,服務器alice,探測兩方的rssi,并傳送給服務器alice
??
??
??
Bluez
簡介
??BlueZ是官方Linux Bluetooth堆疊,由主機控制介面(Host Control Interface,HCI)層、Bluetooth協議核心、邏輯鏈路控制和適配協議(Logical Link Control and Adaptation Protocol,L2CAP)、SCO 音頻層、其他 Bluetooth 服務、用戶空間后臺行程以及配置工具組成,
BlueZ由許多單獨的模塊組成:
- 藍牙內核子系統核心
- L2CAP和SCO音頻內核層
- RFCOMM,BNEP,CMTP和HIDP內核實作
- HCI UART,USB,PCMCIA和虛擬設備驅動程式
- 通用藍牙和SDP庫和守護程式
- 配置和測驗實用程式
- 協議解碼和分析工具
搭建Bluez
步驟一:安裝bluez
sudo apt-get install bluez
藍牙明命令列hciconfig/hcitool的使用
檢查藍牙設備是否加載成功
hciconfig
??
打開藍牙
sudo hciconfig hci0 up
??
掃描藍牙
sudo hciconfig iscan
??
藍牙命令列工具bluetoothctl
??(注意:不好用,顯示的都是mac地址,而且中文亂碼,周圍藍牙多,根本分不清楚)
啟動藍牙程式
bluetoothctl
??
啟動/關閉藍牙電源
power on/off
??
獲取要配對設備的MAC地址
??
??電腦上的藍牙,先打開:
??
pybluez使用
sudo python3 -m pip install pybluez
關鍵原始碼
server.py
# -*-coding: utf-8 -*-
from bluetooth import *
import sys
import time
import os
import struct
import bluetooth._bluetooth as bluez
import bluetooth
global hostRssi
os.system("bluetoothctl power on")
# 獲取服務,通過uuid查找目標服務
#uuid = "63078d70-feb9-lle7-9812-dca90488bd22"
#os.system("bluetoothctl discoverable on")
dstuuid = "11111111-1111-1111-1111-111111111111"
localuuid = "22222222-2222-2222-2222-222222222222"
print("本地服務器,搜索客戶端藍牙rssi")
...
data = client.recv(1024)
print (data)
client.close()
bluetooth_sock.close()
client.py
from bluetooth import *
import sys
import time
import os
import struct
import bluetooth._bluetooth as bluez
import bluetooth
global hostRssi
#開啟藍牙可見
os.system("bluetoothctl power on")
os.system("bluetoothctl discoverable on")
dstuuid = "22222222-2222-2222-2222-222222222222"
localuuid = "11111111-1111-1111-1111-111111111111"
bluetooth_sock=BluetoothSocket(RFCOMM)
bluetooth_sock.bind(("",PORT_ANY))
bluetooth_sock.listen(1)
...
data = "server:" + str(hostRssi) + ", client:" + str(clientRssi)
...
入坑
入坑一:打開藍顏失敗

sudo vim /lib/systemd/system/bluetooth.service
??修改檔案內容
#ExecStart=/usr/lib/bluez5/bluetooth/bluetoothd
ExecStart=/usr/lib/bluez5/bluetooth/bluetoothd -E -C
&emso;&emso;然后重啟服務
sudo sdptool add SP
sudo systemctl daemon-reload
sudo systemctl restart bluetooth
sudo sdptool browse local
入坑二:“no advertisable device”
??
??原因:由于藍牙不可見導致
上一篇:《樹莓派開發筆記(十):Qt讀取ADC模擬量電壓(ADS1115讀取電壓模擬量)》
下一篇:敬請期待…
若該文為原創文章,轉載請注明原文出處
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110940484
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/233602.html
標籤:其他
上一篇:埠掃描探測
下一篇:JUSTCTF校賽安卓wp
