0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【EsDA应用】蓝牙服务端节点详解

AGk5_ZLG_zhiyua 来源:未知 2023-05-25 00:10 次阅读
蓝牙作为一种近距离无线通信技术,被广泛使用在汽车,智能家居和医疗等领域中。本文主要介绍如何通过EsDA开发套件,快速实现蓝牙服务器的相关应用业务。

5119fe8c-fa4d-11ed-90ce-dac502259ad0.jpg简介

前面文章讲解了ble_client的相关节点和业务处理,有兴趣的可以跳转链接【EsDA应用】蓝牙客户端节点详解去查看。

本文主要基于MPC_ZC1开发板以及可将节点进行拖拽连接的图形化设计工具AWFlow Designer,着重对UIS8910DM平台的板载蓝牙的配套节点以及示例进行讲解。本文除了对ble_server设备端节点进行详细阐述还有以MPC_ZC1开发板做蓝牙服务器的相关应用业务介绍如:定义支持的服务,发布服务器以便远程客户端可连接,响应读取和写入请求等。

5119fe8c-fa4d-11ed-90ce-dac502259ad0.jpg节点介绍

因蓝牙服务端节点中的属性数量过多,所以本节只介绍几个重点属性,其他的属性内容详见AWFlow Designer上相关节点的帮助文档。

1. 配置节点1.1 ble_server创建BLE服务端设备,保存用户传入的广播配置。1.1.1 属性
  • 发现模式:值为0表示不可发现模式;值为1表示有限可发现模式;值为2表示普通可发现模式。
  • 广播类型:值为0表示可连接的非定向广播;值为1表示可连接的定向广播;值为2表示不可连接的非定向广播;值为3表示可扫描的非定向广播。
  • 广播信道:广播通道映射在37、38、39通道通信。值为0时表示通道37被使用,值为1时表示通道38被使用,值为2时表示通道39被使用。
  • 广播的过滤策略:

值为0时表示处理所有设备的扫描和连接请求;

值为1时表示处理所有设备的连接请求和只有白名单上的设备的扫描请求;

值为2时表示处理所有设备的扫描请求和只有白名单上的设备的连接请求;

值为3时表示只处理在白名单上的设备的扫描和连接请求。

smp_pair_mode

io_cap

安全等级

SECURE_CONNECTION_PASSKEY

KEYBOARD_DISP

最高

SECURE_CONNECTION_JUSTWORK

NOIN_NOOUT

次之

LEGACY_PASSKEY

KEYBOARD_DISP

第三

LEGACY_JUSTWORK

NOIN_NOOUT

最低

  • 支持的服务个数:支持提供的服务个数,需要与流图中添加的服务数量一致。* 配置节点无输入输出。
2. 服务端节点2.1 ble_server_service2.1.1 属性
  • BLE服务端配置节点:关联到的BLE服务端配置节点。
  • 服务UUID:支持提供服务的UUID。支持2个字节或16个字节,按照小端模式依次用逗号隔开。
  • 支持服务的特征相关属性:

特征值的格式

特征声明的性质

特征值的权限

短UUID

广播属性

可读

修补长度

读属性

可写

写通知

不带回复的写属性

读取认证

带回复的写属性

读取授权

冲突通知

通知属性

读取加密

追加写

指示属性

读取认证文件

签名认证的写属性

写认证

扩展属性

写授权

写加密

写认证文件

只允许经典蓝牙访问

2.1.2 输入
  • payload:输入数据。传入特征值数据,可以使用“fscript”节点作为前级节点,设置需要写入的数据。

  • payloadLength:输入数据。传入特征值数据的长度,可以使用“fscript”节点作为前级节点,设置需要写入的数据长度,最大不超过255。

2.1.3 输出本节点无实质性数据输出,其消费者节点一般是ble_server_adv节点。2.2 ble_server_adv

2.2.1 属性

  • BLE服务端配置节点:关联到的BLE服务端配置节点。

  • 蓝牙本地设备名称:蓝牙服务端本地设备的名称,代码里自动将此参数加入到广播数据包的类型为09的小数据包中。

广播数据包最长31个字节,而这31个字节又被拆分成很多小数据包,每个小数据包代表一类广播数据。

每个小数据包是由:length(数据长度)+type(类型)+data(数据内容)构成的。

  • 需要广播的每个小数据包的数据长度:表示需要广播的每个小数据包的数据长度(数据内容的字节长度+1)。因为格式是csv,所以多个数据包的数据长度按顺序用逗号来隔开。

  • 需要广播的每个小数据包的数据类型:表示需要广播的每个小数据包的数据长度(数据内容的字节长度+1)。多个数据包的数据类型按顺序用逗号来隔开。

  • 扫描响应的每个小数据包的数据内容:表示扫描响应的每个小数据包的数据内容。多个数据包的数据内容按顺序用逗号来隔开。

  • 扫描响应的每个小数据包的数据类型:表示扫描响应的每个小数据包的数据类型,多个数据包的数据类型按顺序用逗号来隔开。具体的广播数据包类型详细信息可在网上进行查阅。

  • 数据类型为09表示本地设备名称即属性蓝牙本地设备名称,现已被后续代码自动处理加入到了广播数据包中。计算长度时需注意,如若广播数据包超过最长31个字节的内容,则截断。

  • 扫描响应的每个小数据包的数据内容:表示扫描响应的每个小数据包的数据内容。多个数据包的数据内容按顺序用逗号来隔开。

    如:需要广播的每个小数据包的数据长度为0x02;需要广播的每个小数据包的数据类型为:0x01;要广播的每个小数据包的数据内容为:0x06。那么算上蓝牙本地设备名称:(BLE-ZC1)0x42,0x4c,0x45,0x2d,0x5a,0x43,0x31,

    那么最终的广播数据包为0x08(数据长度),0x09(数据类型),

    0x42,0x4c,0x45,0x2d,0x5a,0x43,0x31(数据内容BLE-ZC1),

    0x02(数据长度),0x01(数据类型),

    0x06(数据内容),

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

2.2.2 输入
  • ble_server_adv节点的输入并无实际意义的输入,由ble_server_service节点作为前级节点,进入当前节点的on_data虚函数中开启广播。

    * sink类型节点无输出功能

5119fe8c-fa4d-11ed-90ce-dac502259ad0.jpg  业务处理

定义支持的服务:由ble_server_service节点添加服务UUID和特征值UUID以及特征值数据;发布服务器,以便远程客户端可连接:由ble_server_adv节点开启广播(在一个运行程序中不能多次开启广播)后服务端蓝牙准备完成,开始等待客户端蓝牙设备连接;以及后续的响应读取和写入请求。实现框图如下所示。

515a8786-fa4d-11ed-90ce-dac502259ad0.png

1. 资源准备

硬件上依旧如【EsDA应用】蓝牙客户端节点详解使用MPC_ZC1开发板作为服务器去广播数据,软件上使用可拖拽连线的图形化设计工具AWFlow Designer去设计流图以及手机app(BLE调试宝)作为客户端进行蓝牙通信。516fda46-fa4d-11ed-90ce-dac502259ad0.png

2. 添加节点并绘制流图

添加timer,gpio,trigger,fscript,ble_server_service和ble_server_adv节点到画布中,如下图所示。

51bb7db6-fa4d-11ed-90ce-dac502259ad0.png3. 配置节点

添加多个蓝牙服务端的服务和特征值数据,并开启蓝牙广播。需注意的是本蓝牙模块在程序运行时不能重复多次开启蓝牙广播,否则会打开蓝牙失败。

双击gpio节点的前驱timer节点,打开属性面板设置定时周期(ms),定时去读取gpio的引脚电平状态。修改完后点击右上角的完成即可保存属性配置。

51dc17c4-fa4d-11ed-90ce-dac502259ad0.png

双击gpio节点,配置属性如下图所示,根据需求选择所需的gpio引脚,本章节使用的是P4.5,并设置为浮空输入,用户可根据自身需求设置该gpio引脚号。修改完后点击右上角的完成即可保存属性配置。

5210eabc-fa4d-11ed-90ce-dac502259ad0.png

双击gpio的后继节点fscript,功能代码内容的主要目的是让后续的trigger节点只能被触发一次,因P4.5的引脚默认是低电平,且trigger节点被触发只能收到msg.trigger_stop属性消息,所以具体代码如下。

if (msg.payload == 1) {
  msg.trigger_stop = "reset";
}
双击trigger节点,本节点主要目的是只一次触发多个后继节点,所以在此选择等待被重置模式(Wait_to_be_reset_mode)在trigger被触发前,不传递任何的消息给后继节点。修改完后点击右上角的完成即可保存属性配置。

524270f0-fa4d-11ed-90ce-dac502259ad0.png

双击第一栏的fscript节点,本节点作为ble_server_service节点的前驱节点,所以具体内容即ble_server_service的输入组:payload(传入的特征值数据),payloadLength(传入的特征值数据的长度)。修改完后点击右上角的完成即可保存属性配置。

msg.payload = "hello";
set(msg.payloadLength, u16("5"));
双击第一栏的ble_server_service节点中的属性:BLE服务端配置节点旁的铅笔图标,属性:BLE服务端配置节点在本流图中只需要配置一遍即可,后续不再阐述。需注意的是支持的服务个数的属性值必须与本流图中所添加的服务个数数量一致,其他属性参数可用demo流图默认值。修改完后点击右上角的完成即可保存属性配置。526dbee0-fa4d-11ed-90ce-dac502259ad0.png

双击第一栏的ble_server_service节点,只需要确定需要添加的服务UUID和特征值UUID,其他参数视具体情况而定,也可使用默认的参数值。修改完后点击右上角的完成即可保存属性配置。

52931a78-fa4d-11ed-90ce-dac502259ad0.png

双击第二栏的fscript节点,其内容与第一栏的fscript节点大体一致,都是作为ble_server_service节点的前驱节点,所以具体内容即ble_server_service的输入组:payload(传入的特征值数据),payloadLength(传入的特征值数据的长度)。修改完后点击右上角的完成即可保存属性配置。

msg.payload = "server";
set(msg.payloadLength, u16("6"));
双击第二栏的ble_server_service节点,其属性与第一栏的ble_server_service节点大体一致,需要添加的服务UUID和特征值UUID不同,其他参数视具体情况而定,也可使用默认的参数值。

服务UUID:

0xf5,0x89,0x9b,0x5f,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0xfe,0x18,0x00,0x00

特征值UUID:

0xf5,0x89,0x9b,0x5f,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0xfe,0xff,0x11,0x11

最后双击ble_server_adv节点,自行设置蓝牙本地设备名称,以及需要广播的每个小数据包的数据长度,类型,内容和扫描的每个小数据包的数据长度,类型,内容。修改完后点击右上角的完成即可保存属性配置。

52ac5556-fa4d-11ed-90ce-dac502259ad0.png

4. 下载验证

下载流图后可在BLE调试宝点击蓝牙服务选项对流图提供的service进行访问,点击每个service的左侧箭头,展开对各个service提供的特征进行查看,还可对支持操作的特性进行读写。

52fbe454-fa4d-11ed-90ce-dac502259ad0.png

每次操作都会有相应的日志信息,注意各服务UUID的联系,实时日志如下所示。

533a88e4-fa4d-11ed-90ce-dac502259ad0.png

BLE调试宝向特征值UUID为0x1111fffe写入12 34 56,作为服务端板子的串口打印可显示收到的相应数据如下。

536b670c-fa4d-11ed-90ce-dac502259ad0.png

5119fe8c-fa4d-11ed-90ce-dac502259ad0.jpg技术交流长按识别如下二维码可加入“EsDA嵌入式系统设计自动化交流群”,与志同道合的朋友交流,并有专业技术人员为您答疑解惑,如有问题可以咨询小致微信zlgmcu-888。

539e3c54-fa4d-11ed-90ce-dac502259ad0.png


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 致远电子
    +关注

    关注

    13

    文章

    399

    浏览量

    31128

原文标题:【EsDA应用】蓝牙服务端节点详解

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问ESP32作为蓝牙服务端如何修改MTU?

    我们的工程把esp32当作蓝牙服务端让电脑去连,由于一些老电脑上没有蓝牙,要用外置蓝牙驱动,默认MTU只有23,但是说明上驱动是支持最大mtu的,所以有什么办法可以通过
    发表于 06-27 07:47

    服务端测试包括什么类型

    服务端测试是确保软件系统在服务器端正常运行和满足性能要求的重要环节。本文将详细介绍服务端测试的类型、方法和最佳实践。 1. 服务端测试的定义 服务端
    的头像 发表于 05-30 16:03 197次阅读

    服务端测试是web测试吗为什么

    服务端测试和Web测试是两个不同的概念,但它们在软件开发和测试过程中是相互关联的。本文将详细解释这两个概念以及它们之间的关系。 服务端测试 服务端测试主要关注服务器端的软件组件,这些组
    的头像 发表于 05-30 15:30 218次阅读

    服务端测试和客户端测试区别在哪

    服务端测试和客户端测试是软件开发过程中的两个重要环节,它们分别针对服务器端和客户端的软件进行测试。本文将详细介绍服务端测试和客户端测试的区别,以及它们在软件开发中的作用。 一、服务端
    的头像 发表于 05-30 15:27 438次阅读

    服务端的测试主要是测什么内容

    服务端测试是软件开发过程中的一个重要环节,主要目的是确保服务端程序的稳定性、性能、安全性和可靠性。 功能测试 功能测试是服务端测试的基础,主要验证服务端程序是否按照需求实现了所有功能。
    的头像 发表于 05-30 15:24 623次阅读

    ESD管 AZ5825-01F型号ESDA05CPX参数对比

    ESD管 AZ5825-01F型号ESDA05CPX参数对比
    的头像 发表于 05-11 08:03 256次阅读
    <b class='flag-5'>ESD</b>管 AZ5825-01F型号<b class='flag-5'>ESDA</b>05CPX参数对比

    如何基于EsDA开发套件快速使用射频读卡器模块

    无线射频读写卡技术在门禁系统,电子支付领域和物联网等领域中具有越来越广泛的应用。本文将基于EsDA开发套件讲解如何快速上手并开发射频读卡器模块的相关业务,为开发者大大缩短了学习和开发时间成本。项目
    的头像 发表于 01-11 08:24 502次阅读
    如何基于<b class='flag-5'>EsDA</b>开发套件快速使用射频读卡器模块

    PLC通过智能网关,与OPCUA服务端通讯,实现标签数据读写

    是采用西门子S7-200 SMART通过IGT-DSER智能网关跟OPCUA的服务端之间通讯,以下是相关操作步骤。首先通过参数设置软(在附件中)选择功能与驱动类型,如下图左边功能选第三项,右边的驱动选择
    发表于 01-02 16:41

    EsDA 应用】快速实现串口转HTTP请求

    ,由客户端发送请求消息,服务端针对客户端的请求进行响应回复。本文将基于EsDA开发平台,使用EPC6450-AWI开发板,以及图形化设计工具AWFlowDesign
    的头像 发表于 11-09 08:25 589次阅读
    【<b class='flag-5'>EsDA</b> 应用】快速实现串口转HTTP请求

    常用IO设备节点详解

    本文介绍如何通过EsDA开发套件,快速熟悉常用IO设备节点及其使用方法,大大缩短了用户对EsDA的学习开发周期。本文选用EPC6450-AWI开发板,以及图形化设计工具AWFlowDesigner
    的头像 发表于 09-14 08:27 770次阅读
    常用IO设备<b class='flag-5'>节点</b><b class='flag-5'>详解</b>

    基于EsDA MPC-ZC1 快速实现I2C 监控报警

    本文介绍如何通过EsDA开发套件,快速完成一个I2C采集数据的监控报警系统,通过该系统可以减少I2C设备的故障损失和维修成本。简介本文基于前文的一篇I2C博客文章继续拓展I2C实时采集后的监控报警
    的头像 发表于 08-23 15:16 507次阅读
    基于<b class='flag-5'>EsDA</b> MPC-ZC1 快速实现I2C 监控报警

    MQTT中服务端和客户端

    MQTT 是一种基于客户端-服务端架构(C/S)的消息传输协议,所以在 MQTT 协议通信中,有两个最为重要的角色,它们便是服务端和客户端。 1)服务端 MQTT 服务端通常是一台
    的头像 发表于 07-30 14:55 1910次阅读

    modbus入门教程 Modbus协议节点讲解之【EsDA应用】Modbus应用详解

    Modbus作为一种公开、免费的现场总线,被广泛应用于工业电子领域。本文基于EsDA开发平台,为您详细介绍Modbus主机功能节点的使用方式,以及如何快速实现读取Modbus从机数据
    的头像 发表于 07-18 11:55 2221次阅读
    modbus入门教程 Modbus协议<b class='flag-5'>节点</b>讲解之【<b class='flag-5'>EsDA</b>应用】Modbus应用<b class='flag-5'>详解</b>

    如何克服LoRa®终端节点设计中的挑战

    本文将介绍LoRa网络架构的四个主要元素,并详细讨论设计人员在开发LoRa终端节点时面临的一些最常见的挑战。我们还会介绍在帮助克服这些挑战并缩短上市时间方面,经过法规认证的LoRa模块有何作用。
    的头像 发表于 07-13 15:45 424次阅读
    如何克服LoRa®终<b class='flag-5'>端节点</b>设计中的挑战

    EsDA应用】串口服务器——UDP Server

    如何让自动化领域的串口设备具备联网能力?本文将基于EsDA平台,带你开发一个串口服务器之UDP服务器的业务,快速实现串口联网功能。     简介 串口服务器本质是将串口数据通过各种网络
    的头像 发表于 07-12 11:45 864次阅读
    【<b class='flag-5'>EsDA</b>应用】串口<b class='flag-5'>服务</b>器——UDP Server