物联网设备人柱力,XR806蓝牙mesh互传及单向穿透功能测试

全志在线 2023-12-08 17:17


相较于WiFi技术,低功耗蓝牙BLE技术具有搜索连接速度快、超低功耗等特点,BLE搭配mesh技术所延伸的蓝牙mesh技术因其支持多点对多点连接、物理覆盖区域广阔,也被广泛用于智能家居中控、智能安防、智慧楼宇等物联网设备上。


XR806是一款支持BLE 5.0、支持完整低功耗蓝牙服务GATT、支持SIG mesh完整协议栈的无线芯片,同样适配物联网设备的使用场景需求,在通过官方文档的指引下配置好XR806的RTOS环境后,可按文章介绍步骤进行后续的蓝牙mesh互传及蓝牙单向穿透的功能测试。

蓝牙mesh互传


最新的蓝牙mesh1.1引入了定向转发路由功能,扩大射频覆盖范围,使信号一级级中继下去,手头有nRF52840开发板,不妨和全志XR806进行组网,测试兼容性和互操作性,也验证XR806 mesh协议栈的完成度。先看效果:


nRF52840用Segger Embedded Studio打开工程:

nrf5SDKforMeshv320src\examples\light_switch\server


同时烧录协议栈和APP;XR806为观察到现象,将mesh例程的收到mesh opcode的回调接口加个指示信号,具体为:

static void gpio_output_init(void){  GPIO_InitParam param;  param.driving = GPIO_DRIVING_LEVEL_1;  param.mode = GPIOx_Pn_F1_OUTPUT;  param.pull = GPIO_PULL_NONE;  HAL_GPIO_Init(GPIO_OUTPUT_PORT, GPIO_OUTPUT_PIN, ¶m);//PA21}
/***************Onoff Configuration Declaration*******************/static void app_onoff_srv_set_cb(const struct bt_mesh_model *model, uint8_t onoff, uint8_t target_onoff, const struct bt_mesh_transition_status *opt){  g_onoff_value = onoff;  HAL_GPIO_WritePin(GPIO_OUTPUT_PORT, GPIO_OUTPUT_PIN, onoff ? GPIO_PIN_HIGH : GPIO_PIN_LOW);  printf("[app] onoff set(%d)", onoff);  if (opt) {    printf("target onoff(%d), total_steps(%d), steps(%d)",           target_onoff, opt->total_steps, opt->present_steps);  }  printf("\n");}


编译完后将mesh_demo烧录进XR806中,将XR806的GenericOnOff Server订阅到publisher的发布地址,就能实现同一网络(具备同一网络密钥可以正确解析出mesh消息)内的消息传递。


此时用nRF Mesh去给nRF52840和XR806分别入网和设置订阅地址,本次将他们订阅到0xC000。



由于入网过程没有录制下来,且XR806无法退网,且入网信息暂时没找到擦除方法,这样重新烧录还是保持入网状态而无法回到unprovisioned状态。


nRF52840接到JlinkRTT Viewer,XR806接到putty,可以看到XR806的Controller/host协议栈的版本信息,手机发布一条开关(由GernericOnOff元素统属)消息,泛洪给两台射频设备,可以在各自控制台看到都有收到set opcode网络消息。



蓝牙穿透(单向)


有时无线透传在无法布线时有很方便的效用,不妨试试蓝牙透传,效果如下:


具体是无线数据->串口数据,串口数据->无线数据,目前前者实现了,后者还有些问题未解决,


实现过程如下,基于工程:

demo/Bluetooth/peripheral_demo改成peripheral_uart_demo


同时目录下文件里工程名也进行修改:

peripheral_uart_demo/gcc/defconfig改成peripheral_uart_demo


然后引入串口读写独立接口即把demo/at_demo下的serial.c、serial.h、serial_debug.h复制到刚才peripheral_uart_demo工程下,由于要无线写以及串口写转无线,所以profile涉及到write_without_rsp和notify,具体配置为:


static struct bt_gatt_attr vnd_attrs[] = {  /* Vendor Primary Service Declaration */  BT_GATT_PRIMARY_SERVICE(&vnd_uuid),  BT_GATT_CHARACTERISTIC(&vnd_enc_uuid.uuid,                  BT_GATT_CHRC_WRITE_WITHOUT_RESP | BT_GATT_CHRC_NOTIFY,                  BT_GATT_PERM_WRITE,                  NULL, write_without_rsp_vnd, &vnd_value),  BT_GATT_CCC(vnd_ccc_notify_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE),};


写回调接口为:

/**********************vnd_write_cmd_uuid*****************************/static ssize_t write_without_rsp_vnd(struct bt_conn *conn,                const struct bt_gatt_attr *attr,                const void *buf, uint16_t len, uint16_t offset,                uint8_t flags){  uint8_t *value = attr->user_data;
 /* Write request received. Reject it since this char only accepts   * Write Commands.   */  if (!(flags & BT_GATT_WRITE_FLAG_CMD)) {    return BT_GATT_ERR(BT_ATT_ERR_WRITE_REQ_REJECTED);  }
 if (offset + len > sizeof(vnd_value)) {    return BT_GATT_ERR(BT_ATT_ERR_INVALID_OFFSET);  }
 memset(value, 0, sizeof(vnd_value));  memcpy(value + offset, buf, len);  serial_write(value + offset, len);  *(value + offset + len) = '\0';  printf("\r\nwrite_without_rsp_vnd");  return len;}


串口转无线回调(有问题):

static void vnd_notify(void){  static uint8_t vnd[MAX_LONG_DATA];  uint16_t len=0;  if (!vnd_notif_enabled)    return;  printf("\r\nnotify\r\n");  serial_read(vnd_notify_value,len);  if(len>MAX_LONG_DATA || len==0)    return;  memcpy(vnd, vnd_notify_value, len);    printf("\r\nvnd_notify\r\n");  bt_gatt_notify(NULL, &vnd_svc.attrs[1], vnd, sizeof(vnd));}


然后在bt_app_init函数里加入透传口UART1的初始化代码即可:

  serial_init(SERIAL_UART_ID, 115200, UART_DATA_BITS_8, UART_PARITY_NONE,    UART_STOP_BITS_1, 0);  serial_start();


-End-

本文转载自:https://bbs.aw-ol.com/topic/4548/

评论
  • 本文继续介绍Linux系统查看硬件配置及常用调试命令,方便开发者快速了解开发板硬件信息及进行相关调试。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。查看系统版本信息查看操作系统版本信息root@ido:/# cat /etc/*releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=20.04DISTRIB_CODENAME=focalDIS
    Industio_触觉智能 2025-01-03 11:37 138浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 165浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 20浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 157浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 161浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 16浏览
  • 【工程师故事】+半年的经历依然忧伤,带着焦虑和绝望  对于一个企业来说,赚钱才是第一位的,对于一个人来说,赚钱也是第一位的。因为企业要活下去,因为个人也要活下去。企业打不了倒闭。个人还是要吃饭的。企业倒闭了,打不了从头再来。个人失业了,面对的不仅是房贷车贷和教育,还有找工作的焦虑。企业说,一个公司倒闭了,说明不了什么,这是正常的一个现象。个人说,一个中年男人失业了,面对的压力太大了,焦虑会摧毁你的一切。企业说,是个公司倒闭了,也不是什么大的问题,只不过是这些公司经营有问题吧。
    curton 2025-01-02 23:08 290浏览
  • 影像质量应用于多个不同领域,无论是在娱乐、医疗或工业应用中,高质量的影像都是决策的关键基础。清晰的影像不仅能提升观看体验,还能保证关键细节的准确传达,例如:在医学影像中,它对诊断结果有着直接的影响!不仅如此,影像质量还影响了:▶ 压缩技术▶ 存储需求▶ 传输效率随着技术进步,影像质量的标准不断提高,对于研究与开发领域,理解并提升影像质量已成为不可忽视的重要课题。在图像处理的过程中,硬件与软件除了各自扮演着不可或缺的基础角色,有效地协作能够确保图像处理过程既高效又具有优异的质量。软硬件各扮演了什么
    百佳泰测试实验室 2025-01-03 10:39 137浏览
  • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
    北汇信息 2025-01-03 16:01 173浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 7浏览
  • 在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持开源鸿蒙OpenHarmony3.2-5.0系统,适合鸿蒙开发入门学习。挂载镜像首先,将要修改内容的镜像传入虚拟机当中,并创建一个要挂载镜像的文件夹,如下图:之后通过挂载命令将system.img镜像挂载到sys
    Industio_触觉智能 2025-01-03 11:39 113浏览
  • Matter加持:新世代串流装置如何改变智能家居体验?随着现在智能家庭快速成长,串流装置(Streaming Device,以下简称Streaming Device)除了提供更卓越的影音体验,越来越多厂商开始推出支持Matter标准的串流产品,使其能作为智能家庭中枢,连结多种智能家电。消费者可以透过Matter的功能执行多样化功能,例如:开关灯、控制窗帘、对讲机开门,以及操作所有支持Matter的智能家电。此外,再搭配语音遥控器与语音助理,打造出一个更加智能、便捷的居家生活。支持Matter协议
    百佳泰测试实验室 2025-01-03 10:29 143浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 18浏览
  • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
    克里雅半导体科技 2025-01-03 16:10 121浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 15浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦