使用 BLE 设置设备时钟

物联网 蓝牙 蓝牙低功耗
2021-06-10 03:12:24

我想构建一个通过 BLE 从手机或笔记本电脑获取本地时间的设备。我理想的交互流​​程是:

  1. 按下设备上的“设置时间”按钮以使其开始广告
  2. 打开手机/电脑上的蓝牙设置或控制面板,找到设备并点击连接
  3. 设备使用当前时间服务向手机请求时间,然后断开连接并停止广告

交互的总范围只是获取本地时间,无需手动调整,也无需添加WiFi等更复杂的连接来使用NTP。

这种交互流程是否可以与 BLE 一起使用?外围设备可以自己从中央读取当前时间服务吗?如果没有,手机上的配套应用程序是否需要写入外设上的当前时间服务特性?

3个回答

由于您不打算与合作伙伴设备进一步通信,我想设置时间的精度在几秒钟的精度范围内对您来说是可以的。如果您想获得更精确的结果,则必须考虑更多因素(延迟、延迟、较低级别的协议等)。

一般来说,BLE 是一种通信协议,您可以访问终端设备提供的所有功能。因此,如果您有一台允许 NTP 请求的计算机/电话,您可以通过 BLE 发出 NTP 请求。这当然需要某种配置或附加程序。

您可以使用扫描请求和扫描响应来传递广告过程中的时间。当然,要做到这一点,您必须提供一个最小的 BLE 副本。优点是您甚至不必进行完整的配对。这当然需要对两侧的 BLE 行为有一定的访问权限,如果您从 Pi 或其他一些可能工作的更可控的实例中获取时间,那么您在智能手机上可能没有这些行为。

如果您不害怕生根 Android,您也可以使用Cheepsync,他们正是这样做的。这是在 Github 上。

你看过网络蓝牙吗?这可用于写入设备,而无需本地客户端应用程序来设置时间。

大多数平台都支持 Chrome,其他浏览器正在添加支持

我一直在研究使用 Web 蓝牙设置 wifi 详细信息的设备(该设备是一个时钟,它将使用 NTP 保持准确并支持一些其他功能)

这种交互流程是否可以与 BLE 一起使用?

是的。

外围设备可以自己从中央读取当前时间服务吗?

仅当中央正在运行当前时间服务时。

如果没有,手机上的配套应用程序是否需要写入外设上的当前时间服务特性?

取决于中心是否已经在运行当前时间服务。例如 iOS 有一个内置的,它会每分钟写入外围设备上的当前时间特性。

如果没有内置当前时间服务,您可以添加一个或以其他方式提供当前时间(例如,通用应用程序和自定义协议,或网站和Web 蓝牙)。