当前位置: 首页 > wzjs >正文

合优网站建设谷歌网页版入口在线

合优网站建设,谷歌网页版入口在线,北京网页设计与制作,网站的关于我们怎么做一、 蓝牙协议概念 1.先从现象说起 说现象前要讲一个概念,adapter可以对比日常wifi中的热点的概念。 从蓝牙模块的应用app说起 可以看到蓝牙搜索到的adapter分为BLE与SPP 2.蓝牙协议的分类 参考传送门: 经典蓝牙串口SPP https://docs.petoi.com/v/…

一、 蓝牙协议概念

1.先从现象说起

说现象前要讲一个概念,adapter可以对比日常wifi中的热点的概念。

从蓝牙模块的应用app说起

在这里插入图片描述

可以看到蓝牙搜索到的adapter分为BLE与SPP

2.蓝牙协议的分类

参考传送门:

经典蓝牙串口SPP
https://docs.petoi.com/v/chinese/li-cheng/10.-jing-dian-lan-ya-chuan-kou-spp

目前主要的蓝牙协议分为2类,基于RFCOMM的传统蓝牙(HS/BR/EDR)(对应的蓝牙串口就是上面的SPP)和基于GATT的蓝牙低功耗(BLE)。

1.rfcomm是什么,做什么
(1) RFCOMM,Radio Frequency Communication,串口线性仿真协议。
(2) 蓝牙技术为电缆的替代技术,为了替代串型电缆连接方式,为建立在串口之上的传统应用提供接口,RFCOMM应运而生。
(3) RFCOMM是一个简单传输协议,提供了基于L2CAP协议的串行(9针RS-232)仿真,支持在两个蓝牙设备间高达60路的通信连接。
(4) RFCOMM的目的:在两个不同设备上的应用之间保证一条完整的通信路径。2.GATT
要了解GATT先需要了解ATT
ATT基于GATT属性概要在客户端和服务端之间传输属性数据(attribute)。
GATT封装了ATT,主要用来规范attribute中的数据内容,并将不同的attribute进行分组分类。负责协调蓝牙LE链路中配置文件的交换,配置文件包括诸如handle分配、UUID和权限等信息和数据。3.BR/EDR与BLE
低功耗蓝牙(Bluetooth low energy,即LE)
基础/增强速率蓝牙(Bluetooth basic rate/enhanced data rate ,即BR/EDR)

传统蓝牙速度较快,具体应用协议多,如面向音频的A2DP,蓝牙串口SPP等。但功耗较高,且接入苹果设备需要MFi(Made For iOS)的芯片及认证。

蓝牙低功耗(BLE,Bluetooth Low Energy)可以自行定义各种GATT的Profile,自身也配置了常用的Profile(如设备信息、电池等),功耗低用途广,可以用在苹果设备上,缺点是比起传统蓝牙速度比较慢。蓝牙低功耗多用于手环/智能手表/信标等数据量低但是对功耗敏感的设备上。

3.蓝牙协议的框架解读

参考传送门:

Bluetooth技术学习笔记 ——RFCOMM(1)
https://blog.csdn.net/u012800825/article/details/88741103

BLE学习(1):蓝牙协议栈的介绍
https://blog.csdn.net/tilblackout/article/details/127921514

单双模的蓝牙协议栈的框图

在这里插入图片描述

补充SPP在BR/EDR蓝牙协议中的位置
在这里插入图片描述

Controller(s)为蓝牙控制器,就是蓝牙芯片。HCI为控制器接口,逻辑链路控制与适配协议(Logical Link Control and Adaptation Protocol,即L2CAP)。

二、Desktop SPP蓝牙调试

以汇承HC-04为例进行说明,HC-04 蓝牙串口通信模块是新一代的基于 SPP&BLE5.0 蓝牙协议的双模数传模块

HC-04说明书
http://www.hc01.com/downloads/HC-04_v2.4.pdf

1.从机(slave)配置

在x86 Ubuntu系统上,使用cutecom以及minicom都有问题,只能收还是只能发来着,这里将从机模块插到x86 Windows上,安装官方提供的驱动,以及上位机。

HC-04默认出厂参数: 波特率 9600N81,SPP 蓝牙名 HC-04,BLE 蓝牙名 HC-04LE;SPP 配对密码 1234, BLE 没有配对密码。上位机效果如下图

在这里插入图片描述

2.主机(host)操作步骤

a.安装好blueman的Desktop系统,可以使用界面进行配对,配对会弹出输入密码窗口。
在这里插入图片描述

配对会有弹窗报错connection failed,try to connect manually,不用理会。

b.手动连接
在这里插入图片描述

连接效果图,可以看出虚拟出了串口节点/dev/rfcomm0

在这里插入图片描述

b.cutecom连接串口,便可以进行串口通信

在这里插入图片描述

三、 SPP蓝牙命令调试

参考传送门:

树莓派连接蓝牙设备 | 编程读取数据
https://www.bilibili.com/read/cv8292866

archlinux 蓝牙串口
https://wiki.archlinuxcn.org/wiki/%E8%93%9D%E7%89%99#%E8%93%9D%E7%89%99%E4%B8%B2%E5%8F%A3

1.命令创建串口节点

配对好的蓝牙,可以使用rfcomm创建串口

# rfcomm bind rfcomm0 MAC_address_of_Bluetooth_device

创建成功后可以使用cutecom来打开

*ps:*遇到过一个发送会弹窗,no device的情况,原因为没插上天线,实质搜不到想要连接的蓝牙

*ps:*有的教程会要求往systemd蓝牙服务中添加/usr/bin/sdptool add SP 本文档只主板作为主机,故不详细解释,不进行更改,只做记录。

# cat /lib/systemd/system/bluetooth.service 
[Unit]
Description=Bluetooth service
Documentation=man:bluetoothd(8)
ConditionPathIsDirectory=/sys/class/bluetooth[Service]
Type=dbus
BusName=org.bluez
###########下面两行为添加内容,修改后可能需要内核支持,具体情况查看systemd日志
ExecStart=/usr/lib/bluetooth/bluetoothd --compat --noplugin=sap -E
ExecStartPost=/usr/bin/sdptool add SP
NotifyAccess=main
#WatchdogSec=10
#Restart=on-failure
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
LimitNPROC=1
ProtectHome=true
ProtectSystem=full[Install]
WantedBy=bluetooth.target
Alias=dbus-org.bluez.service
2.一些调试命令
● hciconfig大致相当于ifconfig
# hciconfig       
hci0:   Type: Primary  Bus: USBBD Address: 30:7B:C9:5B:2A:E1  ACL MTU: 820:8  SCO MTU: 255:12UP RUNNING PSCAN RX bytes:2104 acl:17 sco:0 events:113 errors:0TX bytes:3209 acl:17 sco:0 commands:90 errors:0● systemctl status bluetooth 可以查看bluetooth的运行情况,可以看到启动bluetoothd过程中会启用SDP server
# systemctl status bluetooth
��● bluetooth.service - Bluetooth serviceLoaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor presetActive: active (running) since Tue 2023-02-28 14:55:26 CST; 32min agoDocs: man:bluetoothd(8)Main PID: 357 (bluetoothd)Status: "Running"CGroup: /system.slice/bluetooth.service��└��─357 /usr/lib/bluetooth/bluetoothdFeb 28 14:55:26 norco systemd[1]: Starting Bluetooth service...
Feb 28 14:55:26 norco bluetoothd[357]: Bluetooth daemon 5.48
Feb 28 14:55:26 norco bluetoothd[357]: Starting SDP server
Feb 28 14:55:26 norco bluetoothd[357]: Bluetooth management interface 1.10 initi
Feb 28 14:55:26 norco systemd[1]: Started Bluetooth service.● sdptool用于加深一些东西的理解
# sdptool -h 
sdptool - SDP tool v5.48
Usage:sdptool [options] <command> [command parameters]
Options:-h              Display help-i              Specify source interface
Commands:search          Search for a servicebrowse          Browse all available servicesrecords         Request all recordsadd             Add local servicedel             Delete local serviceget             Get local servicesetattr         Set/Add attribute to a SDP recordsetseq          Set/Add attribute sequence to a SDP recordServices:DID SP DUN LAN FAX OPUSH FTP PRINT HS HSAG HF HFAG SAP PBAP MAP NAP GN PANU HCRP HID KEYB WIIMOTE CIP CTP A2SRC A2SNK AVRCT AVRTG UDIUE UDITE SEMCHLA SR1 SYNCML SYNCMLSERV ACTIVESYNC HOTSYNC PALMOS NOKID PCSUITE NFTP NSYNCML NGAGE APPLE IAP ISYNC GATT ● sdptool browse MAC  用于查设备的提供的服务
# sdptool browse 04:22:08:03:10:CE
Browsing 04:22:08:03:10:CE ...
Service Name: SerialPort
Service RecHandle: 0x1000f
Service Class ID List:"Serial Port" (0x1101)
Protocol Descriptor List:"L2CAP" (0x0100)"RFCOMM" (0x0003)Channel: 1
Profile Descriptor List:"Serial Port" (0x1101)Version: 0x0102Service Name: WeChat
Service RecHandle: 0x1000e
Service Class ID List:UUID 128: e5b152ed-6b46-09e9-4678-665e9a972cbc
Protocol Descriptor List:"L2CAP" (0x0100)"RFCOMM" (0x0003)Channel: 23
Profile Descriptor List:"Serial Port" (0x1101)Version: 0x0102
3.回头看协议框图

参考传送门:

BLE学习(1):蓝牙协议栈的介绍
https://www.bilibili.com/read/cv8292866

蓝牙协议栈概览
https://www.jianshu.com/p/29af94dc518c

在这里插入图片描述

SDP(SERVICE DISCOVERY PROTOCOL):服务发现协议,服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用,并确定这些可用服务的特征

GAP负责定义设备在蓝牙LE通信中的角色。它还管理连接的建立和安全。GAP直接与应用程序配置文件和App层连接。目前主要用来进行广播、扫描和发起连接。

HCI层以下为kernel驱动抽象出hci0

RFCOMM用来将无线的蓝牙信号抽象成虚拟串口,注意此串口与wifi蓝牙模块是串口还是USB接口的串口不是一个概念,SPP用来形成一个profile

四、BLE蓝牙调试

1.内核的配合

不是所有模块都支持BLE,这里使用模块rtl8733bu,蓝牙驱动更新版本到 VERSION “3.1.6d45ddf.20220519-142432”

下面的日志表示ok

# dmesg | grep rtl
[    2.925781] usbcore: registered new interface driver rtl8150
[    6.878077] rtk_btusb: config filename rtl8723fu_config
[    6.902215] rtk_btusb: fw name is  rtl8723fu_fw
2.从机的设置

这里以有人WH-BLE106为例

模块 6 位通讯密码,出厂默认为 000000

模块的缺省 UART 口参数为: 波特率 57600、无校验、8 位数据位、1 位停止位

WH-BLE106 模块具有多种工作模式,启动时模块自动进入设置的模式,用户可以通过串口命令把模块切 换到命令行(AT 指令)模式。

从其他模式切换到命令模式需要在串口上输入“+++a”,模块在收到“+++a”后会返回一个确认码“a+ok”, 当在串口发现这个打印信息后即说明模块进入了命令行模式。

以cutecom为例说明,蓝牙模块AT指令的使用

a.以None发送+++a 受到a+OK表示进入了AT指令模式

在这里插入图片描述

b.以CR/LF发送AT指令

在这里插入图片描述

c.常用以及可能用到的AT指令

AT+MODE?
AT+PASS=000000
AT+UART=460800,8,0,0
AT+ENTM   退出
AT+PASSEN 设置/查询是否使能密码配对验证
AT+PAIR   设置/查询设备模块是否开启配对
3.配对ble

前面的步骤做好,此步骤毫无波澜,无论是用blueman还是用bluetoothctl

4.ble调试工具的使用

参考传送门:

gatttool命令详解
https://blog.csdn.net/u010764600/article/details/119685484

【蓝牙】蓝牙,调试 hcitool与gatttool实例
https://www.cnblogs.com/chenxiaomeng/p/9128565.html

gatttool,这个命令实际上是一个gatt client,不知道大家有没有用过手机上的BLE调试工具,比如苹果上最好用的就是lightblue,安卓上类似的工具比较多,我个人比较常用的就是rfconnect。而现在将要介绍的这个命令gatttool的功能就类似于手机上的BLE调试工具。它可以扫描gatt server上的服务,可以给他们发送指令等。

上面的介绍和传送门全是废话,使用ubantu上面的bluez测试硬件设备的BLE功能时遇到了不少坑,在这里记录下,也希望可以帮助其他小伙伴少踩坑。网上一搜,很多资源都是在讲gatttool。但是这个工具总是在连接之后十几秒的时间就提示:GLib-WARNING **: Invalid file descriptor,进而断开BLE的连接,加上它已经是属于已弃用的Bluez工具(弃用工具看这里)。所以推荐使用Bluetoothctl工具。

参考传送门:

Bluetooth LEBluez中Bluetoothctl指令详解(连接iPhone为例)
https://blog.csdn.net/u010764600/article/details/119685484

############运行bluetoothctl###########
root@norco:~# bluetoothctl 
[NEW] Controller C4:3C:B0:D4:68:FB norco [default]
[NEW] Device CA:89:CB:9A:0C:ED Mi Smart Band 4
[NEW] Device 4A:F9:B4:E0:44:D4 4A-F9-B4-E0-44-D4
[NEW] Device 65:2E:2B:A0:C2:64 65-2E-2B-A0-C2-64
[NEW] Device 6C:81:3B:96:3A:2E 6C-81-3B-96-3A-2E
[NEW] Device 56:C3:97:6C:AF:DB 56-C3-97-6C-AF-DB
[NEW] Device 7F:9E:C4:74:27:71 7F-9E-C4-74-27-71
[NEW] Device C1:05:1D:03:11:52 Mi Smart Band 6
[NEW] Device 5A:EE:E6:CE:66:D5 5A-EE-E6-CE-66-D5
[NEW] Device D4:AD:20:3D:1A:04 WH-BLE 106
[NEW] Device 64:98:94:EC:1C:97 64-98-94-EC-1C-97
[NEW] Device C4:22:08:03:10:CE HC-04BLE
[NEW] Device 5C:43:1A:38:56:A5 5C-43-1A-38-56-A5
[NEW] Device 04:22:08:03:10:CE HC-04
Agent registered
############配对WH-BLE 106###########
[bluetooth]# pair D4:AD:20:3D:1A:04
Attempting to pair with D4:AD:20:3D:1A:04
[CHG] Device D4:AD:20:3D:1A:04 Connected: yes
[NEW] Primary Service/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service000100001801-0000-1000-8000-00805f9b34fbGeneric Attribute Profile
[NEW] Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0001/char000200002a05-0000-1000-8000-00805f9b34fbService Changed
[NEW] Descriptor/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0001/char0002/desc000400002902-0000-1000-8000-00805f9b34fbClient Characteristic Configuration
[NEW] Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0001/char000500002b29-0000-1000-8000-00805f9b34fbUnknown
[NEW] Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0001/char000700002b2a-0000-1000-8000-00805f9b34fbUnknown
[NEW] Primary Service/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service00100003cdd0-0000-1000-8000-00805f9b0131Vendor specific
[NEW] Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char00110003cdd1-0000-1000-8000-00805f9b0131Vendor specific
[NEW] Descriptor/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char0011/desc001300002902-0000-1000-8000-00805f9b34fbClient Characteristic Configuration
[NEW] Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char00140003cdd2-0000-1000-8000-00805f9b0131Vendor specific
[CHG] Device D4:AD:20:3D:1A:04 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
[CHG] Device D4:AD:20:3D:1A:04 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
[CHG] Device D4:AD:20:3D:1A:04 UUIDs: 0003cdd0-0000-1000-8000-00805f9b0131
[CHG] Device D4:AD:20:3D:1A:04 ServicesResolved: yes
[CHG] Device D4:AD:20:3D:1A:04 Paired: yes
Pairing successful
[CHG] Device D4:AD:20:3D:1A:04 Trusted: yes
############连接WH-BLE 106###########
[WH-BLE 106]# connect D4:AD:20:3D:1A:04
Attempting to connect to D4:AD:20:3D:1A:04
Connection successful
############进入gatt菜单###########
[WH-BLE 106]# menu gatt
Menu gatt:
Available commands:
-------------------
list-attributes [dev]                             List attributes
select-attribute <attribute/UUID>                 Select attribute
attribute-info [attribute/UUID]                   Select attribute
read                                              Read attribute value
write <data=xx xx ...>                            Write attribute value
acquire-write                                     Acquire Write file descriptor
release-write                                     Release Write file descriptor
acquire-notify                                    Acquire Notify file descriptor
release-notify                                    Release Notify file descriptor
notify <on/off>                                   Notify attribute value
register-application [UUID ...]                   Register profile to connect
unregister-application                            Unregister profile
register-service <UUID>                           Register application service.
unregister-service <UUID/object>                  Unregister application service
register-characteristic <UUID> <Flags=read,write,notify...> Register application characteristic
unregister-characteristic <UUID/object>           Unregister application characteristic
register-descriptor <UUID> <Flags=read,write...>  Register application descriptor
unregister-descriptor <UUID/object>               Unregister application descriptor
back                                              Return to main menu
version                                           Display version
quit                                              Quit program
exit                                              Quit program
help                                              Display help about this program
############列出attributes###########
[WH-BLE 106]# list-attributes D4:AD:20:3D:1A:04
Primary Service/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service000100001801-0000-1000-8000-00805f9b34fbGeneric Attribute Profile
Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0001/char000200002a05-0000-1000-8000-00805f9b34fbService Changed
Descriptor/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0001/char0002/desc000400002902-0000-1000-8000-00805f9b34fbClient Characteristic Configuration
Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0001/char000500002b29-0000-1000-8000-00805f9b34fbUnknown
Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0001/char000700002b2a-0000-1000-8000-00805f9b34fbUnknown
Primary Service/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service00100003cdd0-0000-1000-8000-00805f9b0131Vendor specific
Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char00110003cdd1-0000-1000-8000-00805f9b0131 #######记住末尾131的,别问为什么是这个服务#####Vendor specific
Descriptor/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char0011/desc001300002902-0000-1000-8000-00805f9b34fbClient Characteristic Configuration
Characteristic/org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char00140003cdd2-0000-1000-8000-00805f9b0131   #######记住末尾131的,别问为什么是这个服务,BLE串口服务Vendor specific#####Vendor specific
############选择attributes###########
[WH-BLE 106]# select-attribute /org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char0011
############显示attributes###########
[WH-BLE 106:/service0010/char0011]# attribute-info
Characteristic - Vendor specificUUID: 0003cdd1-0000-1000-8000-00805f9b0131Service: /org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010Notifying: noFlags: notify
############开启notify###########
[WH-BLE 106:/service0010/char0011]# notify on
[CHG] Attribute /org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char0011 Notifying: yes
Notify started
############从机使用串口助手发送字符串1111111,可以收到###########
[CHG] Attribute /org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char0011 Value:31 31 31 31 31 31 31                             1111111   
############选择attributes###########
[WH-BLE 106]# select-attribute /org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char0014  
############写数据,从机可以收到###########
[WH-BLE 106:/service0010/char0014]# write 0x14
Attempting to write /org/bluez/hci0/dev_D4_AD_20_3D_1A_04/service0010/char0014
http://www.dtcms.com/wzjs/136123.html

相关文章:

  • 做网站有软件吗seo待遇
  • 上海制作网站个人怎么做网络推广
  • 专业网站设计服务宁波优化推广找哪家
  • 汉堡只做网站网页搜索引擎
  • 满分作文网站自助建站网站
  • 网站有备案 去掉备案怎样免费制作网页
  • 幼儿园网站建设实践研究网站建设方案外包
  • 日本 女做受视频网站黄山网络推广公司
  • 山西建设执业资格注册管理中心网站竞价托管如何托管
  • 如何在苹果电脑中进行网站设置公众号推广方案
  • 苏州建设监督网站朝阳区seo技术
  • 关于建设网站的会议纪要汕头seo推广外包
  • 山东网站建设网络公司注册公司网站
  • 做论坛网站需要哪些前置审批微营销平台系统
  • 40万用户自助建站百度手机应用商店
  • 网站虚拟主机费用seo网站优化培训
  • 网页设计图片为980是参考seo案例分析
  • 营销型网站的三元素站内免费推广有哪些
  • 用php做的录入成绩的网站快速关键词排名首页
  • 免费网站建设知识北京seo怎么优化
  • 相亲网站排名前十名2022最新引流推广平台
  • wordpress注册页面在什么文件下载北京seo网站优化公司
  • 清远网站建设公司如何做营销推广
  • 营销网站制作免费咨询网站模板库
  • 做像淘宝网的网站sem是什么缩写
  • 台州seo网站推广seo网站诊断流程
  • 17做网站广州新塘蒙牛牛奶推广软文
  • 云南定制化网站建设怎么引流推广
  • 南昌网站设计特色如何seo推广
  • 龙华营销型网站制作企业网站定制