是否可以使用带有 Arduino 的 HM-10 或 HM-11 BLE 模块与 iOS 设备 (ANCS) 进行通信?

Posted

技术标签:

【中文标题】是否可以使用带有 Arduino 的 HM-10 或 HM-11 BLE 模块与 iOS 设备 (ANCS) 进行通信?【英文标题】:Is it possible to use HM-10 or HM-11 BLE Module with Arduino to communicate with an iOS device (ANCS)? 【发布时间】:2015-02-12 21:53:08 【问题描述】:

我想基于 arduino 工具和库为我的 iPhone 构建智能手表。但是我对 BLE 有一个问题:我知道已经有一个用于 ancs (https://github.com/robotastic/ANCS-Library) 的 nRF8001 库,但我想使用 HM-11 模块,主要是因为它更小更便宜。 那么是否可以将 HM-11 模块连接到 Arduino 并接收 ios 通知并对其进行处理? (例如显示在屏幕上)

提前致谢。

【问题讨论】:

这不是 iOS 问题,而是ANCS-Library 是否可以修改以支持 HM-11(或者,实际上,任何任意芯片组)的问题 【参考方案1】:

HMSoft 版本 V524 增加了 ANCS 支持(不包括 HMSensor 版本)

    如何开启ANCS功能

1.1 请先阅读苹果通知文件。 1.2 发送AT+TYPE3命令更改为AUTHBOND模式。 1.3 发送AT+ANCS1命令打开ANCS. 1.4 发送AT+PASS[para1] 命令设置密码。默认密码为“000000” 1.5 发送AT+RESET 重启模块。

现在您可以使用 LightBlue 或我们的软件来扫描并与模块建立连接。 iOS 会要求你输入密码。请输入您的密码值。 如果一切正常,您应该会收到来自模块UARTAT+ANCS[para1] 命令。

    关于AT+ANCS[para1] 命令AT+ANCSN:模块打开通知源成功。AT+ANCSC:模块打开控制点成功。AT+ANCSD:模块打开数据源成功。

    获取 ANCS 通知信息。当 iOS 通知中心发生变化时(如来电、邮件、短信)。模块会通过UART输出AT+ANCS8[para2]命令。

    关于AT+ANCS8[para2] 命令。 格式如:AT+ANCS801012345 8:para1的长度。 0:EventIDEventIDNotificationAdded = 0,EventIDNotificationModified = 1,EventIDNotificationRemoved = 2,Reserved EventID values = 3 ~ 255 1:CategoryIDCategoryIDOther = 0,CategoryIDIncomingCall = 1,CategoryIDMissedCall = 2,CategoryIDVoicemail = 3,CategoryIDSocial = 4,CategoryIDSchedule = 5,CategoryIDEmail = 6,CategoryIDNews = 7,CategoryIDHealthAndFitness = 8,CategoryIDBusinessAndFinance = 9,CategoryIDLocation = 10,CategoryIDEntertainment = 11,Reserved CategoryID values = 12 ~ 255 > 01:CategoryCount 给定类别中的当前活动 iOS 通知数。例如,如果用户的电子邮件收件箱中有两封未读电子邮件,并且有一封新电子邮件被推送到用户的 iOS 设备,则 CategoryCount 的值为 3。 2345:NotificationUID 一个 32 位数值,它是 iOS 通知的唯一标识符 (UID)。此值可用作发送到控制点特征的命令中的句柄,以检索有关 iOS 通知的更多信息。

    获取通知属性AT+ANCS[para1][para2][para3] 格式如:AT+ANCS2345100

    para1: NotificationUIDpara2: NotificationAttributeIDNotificationAttributeIDAppIdentifier = 0,NotificationAttributeIDTitle = 1,(需要后跟2字节最大长度参数)@ 987654366@,(后跟2字节最大长度参数)NotificationAttributeIDMessage = 3,(后跟2字节最大长度参数)NotificationAttributeIDMessageSize = 4,@987654369 @,NotificationAttributeID = 6 ~ 255 para3 : 最大长度参数(保留) 如果 para2 的值为 0、4、5,para3 必须设置为“00” 如果 para2 值为 1、2、3,则需要设置一个数字。

    关于获取通知属性响应AT+ANCSW:发送请求成功。AT+ANCS[para1]: para1 值为 0x00 ~ 0x14。 表示您需要接收的下一个包裹长度。 [........]:你需要接收的字节数组。 在苹果的 Notification 文档中显示图 2-6。 (第 9 页) 收到 AT+ANCSW 后,可能会多次收到AT+ANCS[para1]。直到图2-6打包完成。

    如何删除 ANCS。 7.1 从 iOS 中删除债券信息。 7.2 执行AT+ERASE删除模块绑定信息。 7.3 执行AT+ANCS0关闭模块ANCS功能。 7.4 执行AT+RESET重启模块。

    ANCS 易于使用,无需编写任何 iOS 代码。 iOS 将管理蓝牙链接并将消息推送到模块。

【讨论】:

【参考方案2】:

不,这些模块使用服务/特性通过 GATT 提供串行端口仿真。它们不提供实现 ANCS 接收器所需的对蓝牙堆栈的较低级别访问。

【讨论】:

以上是关于是否可以使用带有 Arduino 的 HM-10 或 HM-11 BLE 模块与 iOS 设备 (ANCS) 进行通信?的主要内容,如果未能解决你的问题,请参考以下文章

无法将 HM-10 蓝牙连接到 Arduino Uno

HM10与Arduino和Android BLE之间的蓝牙低功耗大数据传输

Swift 3 arduino Uno HM-10 Ble - iPhone 上的通知

Arduino和pyserial和ble

Arduino中的串口通信!!Serial.print()是否带有打印的功能??

带有Arduino的Alt-Tab踏板