Configurar un reloj de dispositivo con BLE

7

Me gustaría construir un dispositivo que obtenga la hora local desde un teléfono o computadora portátil a través de BLE. Mi flujo de interacción ideal sería:

  1. presione un botón "establecer hora" en el dispositivo para que comience a anunciarse
  2. abra la configuración de Bluetooth o el panel de control en el teléfono / computadora, busque el dispositivo y toque para conectarse
  3. el dispositivo utiliza el servicio de hora actual para solicitar la hora desde el teléfono, luego se desconecta y deja de anunciar

El alcance total de la interacción es solo para obtener la hora local sin necesidad de ajustes manuales y sin agregar conectividad más compleja como WiFi para usar NTP.

¿Es posible este flujo de interacción con BLE? ¿Puede un periférico, por sí solo, leer desde el servicio horario actual desde la central? Si no, ¿una aplicación complementaria en el teléfono necesita escribir en la característica de servicio de hora actual en el periférico?

jmw
fuente
2
¿Cuál es la precisión deseada? ¿Desea que se use como un reloj general que le muestra la hora o tiene algún otro tipo de aplicación que requiere un reloj preciso?
Bence Kaulics
Además de la pregunta de Bence, ¿ha considerado usar una señal de radio reloj en lugar de sincronizar BLE con un dispositivo? Muchos dispositivos de consumo (como los relojes digitales) usan eso para obtener una lectura precisa del tiempo.
Aurora0001
Sí, en cuestión de segundos está bien. La misma precisión que esperarías de cualquier otro electrodoméstico con un reloj.
jmw
Además, miré los sistemas de radio reloj LF, pero los receptores no están integrados en ningún µC que conozco, y tampoco pude encontrar receptores discretos en la búsqueda casual, ¿sabes alguno?
jmw

Respuestas:

6

Dado que no tiene la intención de comunicarse más con el dispositivo asociado, supongo que la precisión del tiempo establecido está bien para usted en un rango de precisión de unos pocos segundos. Si desea ser más preciso, tendrá que tener mucho más en cuenta (retrasos, latencia, protocolos de nivel inferior y similares).

En general, BLE es un protocolo de comunicaciones, puede acceder a todas las funciones que proporciona el dispositivo final. Entonces, si tiene una computadora / teléfono que permite solicitudes NTP, puede presentar una solicitud NTP a través de BLE. Eso ciertamente requiere algún tipo de configuración o programa adicional.

Puede usar la solicitud de escaneo y la respuesta de escaneo para entregar el tiempo durante el proceso de publicidad. Por supuesto, para hacer eso tendrías que proporcionar una contraparte BLE mínima. La ventaja sería que ni siquiera tiene que hacer un emparejamiento completo. Eso requiere, por supuesto, un cierto acceso al comportamiento BLE en ambos lados que probablemente no tenga en un teléfono inteligente, si obtiene el tiempo de un Pi o alguna otra instancia más controlable que podría funcionar.

Si no tiene miedo de rootear un Android, también puede usar Cheepsync , donde hicieron exactamente eso. Aquí está en Github.

Helmar
fuente
6

¿Has mirado en Web Bluetooth ? Esto se puede usar para escribir en el dispositivo sin necesidad de una aplicación cliente nativa solo para establecer la hora.

Hay soporte en Chrome en la mayoría de las plataformas y otros navegadores están agregando soporte .

He estado trabajando en un dispositivo que usa Web Bluetooth para configurar los detalles de wifi (el dispositivo es un reloj que usará NTP para mantener la precisión y admitir algunas otras funciones)

hardillb
fuente
2

¿Es posible este flujo de interacción con BLE?

Si.

¿Puede un periférico, por sí solo, leer desde el servicio horario actual desde la central?

Solo si la central ejecuta un servicio de hora actual.

Si no, ¿una aplicación complementaria en el teléfono necesita escribir en la característica de servicio de hora actual en el periférico?

Depende de si la central ya está ejecutando un servicio de hora actual. Por ejemplo, iOS tiene uno incorporado que escribirá en la característica de tiempo actual en el periférico cada minuto.

Si no hay un Servicio de hora actual incorporado, puede agregar uno o proporcionar la hora actual de otra manera (por ejemplo, aplicación genérica y protocolo personalizado, o sitio web y Bluetooth web ).

Heath Raftery
fuente