这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 如何通过WB415的蓝牙模块来实现ANCS的功能

共28条 1/3 1 2 3 跳转至

如何通过WB415的蓝牙模块来实现ANCS的功能

菜鸟
2022-09-27 20:06:44     打赏

如何通过WB415的蓝牙模块来实现ANCS的功能

前言

这篇应用笔记描述了如何通过WB415的蓝牙模块来实现ANCS的功能,可以与苹果设备连接,对苹果设备的通知信息进行实时的监听与接收。

支持型号

  AT32WB415

1 概述

ANCS(Apple Notification Center Service)即苹果通知中心服务,此服务为外围蓝牙设备(手表、耳机等)访问IOS设备(iPhone、iPad等)上生成的多种通知提供了一种简单方便的机制。ANCS围绕三个原则设计:简单性、高效性和可扩展性,因此,不论是简单的LED设备还是具有大显示屏的功能强大的“配套”设备等配件来说,这项服务都具有很高的可用性。

ANCS是基于BLE协议中的通用属性协议(Generic Attribute Profile,GATT)来实现的,即ANCS是GATT协议的一个子集。作为GATT客户端的蓝牙设备可以在使用ANCS时自由访问和使用IOS设备提供的其他服务。

通常ANCS传输的所有数值的字节序都应为小端,传输的字符串值都应由UTF-8编码的unicode字符组成。

2 AT32WB415 ANCS程序设计

2.1 ANCS服务特征

ANCS的服务 UUID 为7905F431-B5CE-4E99-A40F-4B1E122D00D0。由于IOS的特性,BLE设备应查找并订阅 GATT 服务的 Service Changed 特征,以便随时监控 ANCS 潜在的发布和发布取消。ANCS提供三个服务特征:

通知源(Notification Source): UUID 9FBF120D-6301-42D9-8C58-25E699A21DBD(通知)

控制点(Control Point): UUID 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9(可写响应)

数据源(Data Source): UUID 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB(通知)

所有这些特征都需要授权才能访问,即BLE设备连接上IOS设备并且完成配对和绑定后才能进行访问。这三个特征中对通知源特征的支持是强制性的,而对控制点特征和数据源特征的支持是可选的。

关于ANCS更多详细内容请参阅:Apple通知中心服务(ANCS)规范

2.2 BLE模块软件设计

对于BLE模块部分的软件,主要就是依据上述ANCS规范来设计的,也就是ANCS规范的软件实现。在使用ANCS服务前需要进行服务设置,流程如下:

1) 等待IOS设备连接BLE模块,并完成配对和绑定

2) BLE模块获取ANCS服务和特征

3) BLE模块订阅数据源(可选项)和通知源,等待ANCS发送通知

图1.PNG下面以来电通知为例讲解通知接收流程

1) IOS设备发送来电通知,UID = 3

2) BLE模块获取通知属性,UID = 3,需要获取内容包含Title,Message和AppID

3) IOS设备将UID = 3的通知数据发送给BLE设备

4) BLE模块发送得到的AppID获取App属性,需要获取内容为DisplayName

5) IOS设备将该AppID的DisplayName发送给BLE设备

图2.PNG对于本案例,BLE模块能够处理的ANCS通知包括来电通知和应用通知两种,用户可按照这两种通知的处理方式来开发其他ANCS通知处理函数。对于不同的通知产生的不同事件BLE模块会通过串口发送不同的数据标志给MCU端,如下:

 A)0x5AA501,表示接收到来电通知添加事件(CategoryID = 1,EventID = 0)

 B)0x5AA502,表示接收到来电通知移除事件(CategoryID = 1,EventID = 4)

 C)0x5AA503,表示接收到应用通知添加事件(CategoryID = 4,EventID = 0)

 D)0x5AA504,表示接收到应用通知移除事件(CategoryID = 4,EventID = 4)

2.3 MCU软件设计

上面提到BLE端对接收到的数据进行判断后会通过串口发送不同的数据标志给到MCU端, MCU端对接收到的BLE串口数据处理方式如下:

1) 通过串口(USART3)接收BLE模块发送的通知数据

2) 接收到0x5AA501,点亮LED2提示来电通知

3) 接收到0x5AA502,关闭LED2提示来电通知移除

4) 接收到0x5AA503,点亮LED3提示应用通知

5) 接收到0x5AA504,关闭LED3提示应用通知移除

6) 除ANCS通知外,对蓝牙连接状态也会进行显示:

      接收到0x5AA505,点亮LED4提示蓝牙连接配对成功

      接收到0x5AA506,关闭LED4提示蓝牙连接断开

7) 除LED表示通知类型外,还会将接收到的通知数据发送到串口(USART2)来模拟通知显示

3 ANCS案例使用

本案例将展示如何通过AT32WB415对苹果设备通知信息进行实时的监听与接收。

3.1 硬件资源

1) 指示灯LED2/LED4

2) AT-START-WB415实验板

3) 一台IOS设备

3.2 软件资源

1) ICP Programmer Tool,可在官网下载最新版本

2) BLE模块源码

    ble_app_ancs,BLE源程序,用于BLE模块app程序,工程路径位于:

         SourceCode\wb415_ble_ancs_2.0.0\projects\ble_app_ancs

3) MCU端源码

    wb415_mcu_project,MCU源程序,用于BLE数据处理,工程路径位于:

         SourceCode\wb415_mcu_ancs_2.0.0\utilities\wb415_mcu_project\mdk_v5

注:本案例仅提供Keil v5版本工程,若用户需要在其他编译环境上使用,请参考AT32WB415_Firmware_Library_V2.x.x\project\at_start_wb415\templates中各种编译环境(例如IAR6/7/8,keil 4/5, eclipse_gcc)进行对应修改即可。

3.3 ANCS demo使用

在使用ANCS服务前需要在WB415中烧录支持ANCS服务的源码,步骤如下:

1) 打开BLE端的ble_app_gatt源程序

2) 编译后会生成一系列bin文件,位于ble_app_ancs\output\app路径,其中

       wb415_ble_ancs_merge.bin,融合了底层蓝牙协议栈和上层应用程序

3) 打开ICP工具下载上述路径中的wb415_ble_ancs_merge.bin至BLE模块,如下图

图3.PNG图4.PNG4) 打开MCU端的wb415_mcu_project源程序

5) 通过Keil v5编译后直接下载即可

BLE模块和MCU端代码都下载完成后即可开始进行ANCS服务测试,步骤如下

1) 打开IOS设备的蓝牙并扫描,点击名称为WB415-ANCS的设备进行连接

图5.PNG2) 配对完成后还需要允许WB415-ANCS接收本设备的通知

图6.PNG3) 连接成功后会通过串口PA2(USART2_TX)打印信息“BLE connected to ANCS”,同时LED4会被点亮

4) 测试来电通知,当收到来电通知时串口会打印来电号码,LED2会被点亮,通知清除(接听或挂断)时LED2熄灭

5) 测试应用通知,当接收到应用通知时串口会打印应用通知的相关信息,如应用名称,消息内容,消息接收时间等,此时LED3会被点亮,通知清除时LED3熄灭。

注:若IOS设备为中文系统,则串口打印的应用通知中可能会有乱码,这是由于包含的通知消息中含有UTF-8编码格式的中文信息,将串口数据保存后通过UTF-8编码读取即可获取其中的中文信息。

图7.PNG至此本案例的WB415 ANCS测试完成。

示例源码等内容可前往路径“https://www.arterytek.com/cn/support/index.jsp?index=1”下载




关键词: AT32     WB415     蓝牙模块     ANCS    

专家
2022-09-28 00:38:34     打赏
2楼

谢谢分享


专家
2022-09-28 01:33:25     打赏
3楼

感谢楼主的分享,很实用了。


高工
2022-09-28 03:54:35     打赏
4楼

感谢楼主的分享,很实用了。


专家
2022-09-28 06:29:06     打赏
5楼

谢谢分享


专家
2022-09-28 06:37:09     打赏
6楼

谢谢分享


专家
2022-09-28 06:40:17     打赏
7楼

谢谢分享


专家
2022-09-28 06:41:51     打赏
8楼

谢谢分享


高工
2022-09-28 06:49:56     打赏
9楼
感谢分享

专家
2022-09-28 06:54:46     打赏
10楼

看看


共28条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]