Einstellen einer Geräteuhr mit BLE

7

Ich möchte ein Gerät bauen, das die Ortszeit von einem Telefon oder Laptop über BLE abruft. Mein idealer Interaktionsfluss wäre:

  1. Drücken Sie eine "Set Time" -Taste am Gerät, um Werbung zu starten
  2. Öffnen Sie die Bluetooth-Einstellungen oder das Bedienfeld des Telefons / Computers, suchen Sie das Gerät und tippen Sie auf, um eine Verbindung herzustellen
  3. Das Gerät verwendet den aktuellen Zeitdienst, um die Uhrzeit vom Telefon anzufordern. Anschließend wird die Verbindung getrennt und die Werbung gestoppt

Der gesamte Umfang der Interaktion besteht darin, die Ortszeit zu ermitteln, ohne dass eine manuelle Anpassung erforderlich ist und ohne komplexere Konnektivität wie WLAN für die Verwendung von NTP hinzuzufügen.

Ist dieser Interaktionsfluss mit BLE möglich? Kann ein Peripheriegerät allein von der Zentrale aus den aktuellen Zeitdienst lesen? Wenn nicht, muss eine Begleit-App auf dem Telefon in die aktuelle Zeitdienstkennlinie auf dem Peripheriegerät schreiben?

jmw
quelle
2
Was ist die gewünschte Präzision? Möchten Sie, dass es als allgemeine Uhr verwendet wird, die Ihnen die Uhrzeit anzeigt, oder haben Sie eine andere Anwendung, die eine genaue Uhr erfordert?
Bence Kaulics
Haben Sie zusätzlich zu Bences Frage in Betracht gezogen, ein Funktaktsignal anstelle der BLE-Synchronisierung mit einem Gerät zu verwenden? Viele Verbrauchergeräte (wie z. B. Digitaluhren) verwenden dies, um eine genaue Zeitmessung zu erhalten.
Aurora0001
Ja, innerhalb von Sekunden ist alles in Ordnung. Die gleiche Präzision, die Sie von jedem anderen Haushaltsgerät mit einer Uhr erwarten würden.
JMW
Ich habe mir auch die LF-Funkuhrsysteme angesehen, aber die Empfänger sind in keinem mir bekannten µC integriert, und ich konnte auch bei der Gelegenheitssuche keine diskreten Empfänger finden. Kennen Sie welche?
JMW

Antworten:

6

Da Sie nicht beabsichtigen, weiter mit dem Partnergerät zu kommunizieren, ist die Genauigkeit der eingestellten Zeit in einem Genauigkeitsbereich von wenigen Sekunden für Sie in Ordnung. Wenn Sie präziser werden möchten, müssen Sie viel mehr berücksichtigen (Verzögerungen, Latenz, Protokolle niedrigerer Ebene und dergleichen).

Im Allgemeinen ist BLE ein Kommunikationsprotokoll. Sie können auf alle Funktionen zugreifen, die das Endgerät bereitstellt. Wenn Sie also einen Computer / ein Telefon haben, der NTP-Anforderungen zulässt, können Sie eine NTP-Anforderung über BLE stellen. Das erfordert sicherlich eine Konfiguration oder ein zusätzliches Programm.

Sie können die Scananforderung und die Scanantwort verwenden, um die Zeit während des Werbeprozesses zu liefern. Dazu müssten Sie natürlich ein minimales BLE-Gegenstück bereitstellen. Der Vorteil wäre, dass Sie nicht einmal eine vollständige Paarung durchführen müssen. Dies erfordert natürlich einen gewissen Zugriff auf das BLE-Verhalten auf beiden Seiten, den Sie wahrscheinlich nicht auf einem Smartphone haben, wenn Sie die Zeit von einem Pi oder einer anderen besser steuerbaren Instanz erhalten, die möglicherweise funktioniert.

Wenn Sie nicht schüchtern sind, ein Android zu rooten , können Sie auch Cheepsync verwenden , wo genau das getan wurde. Hier ist es auf Github.

Helmar
quelle
6

Haben Sie sich Web Bluetooth angesehen ? Dies kann verwendet werden, um auf das Gerät zu schreiben, ohne dass eine native Client-App erforderlich ist, um die Uhrzeit einzustellen.

Chrome wird auf den meisten Plattformen unterstützt, und andere Browser bieten Unterstützung .

Ich habe an einem Gerät gearbeitet, das Web-Bluetooth verwendet, um die WLAN-Details festzulegen (das Gerät ist eine Uhr, die NTP verwendet, um genau zu bleiben und einige andere Funktionen zu unterstützen).

hardillb
quelle
2

Ist dieser Interaktionsfluss mit BLE möglich?

Ja.

Kann ein Peripheriegerät allein von der Zentrale aus den aktuellen Zeitdienst lesen?

Nur wenn die Zentrale einen aktuellen Zeitdienst ausführt.

Wenn nicht, muss eine Begleit-App auf dem Telefon in die aktuelle Zeitdienstkennlinie auf dem Peripheriegerät schreiben?

Hängt davon ab, ob die Zentrale bereits einen aktuellen Zeitdienst ausführt. Zum Beispiel hat iOS eine integrierte Funktion, die jede Minute in die aktuelle Zeitcharakteristik auf dem Peripheriegerät schreibt.

Wenn kein Dienst für die aktuelle Zeit integriert ist, können Sie entweder einen hinzufügen oder die aktuelle Zeit auf andere Weise angeben (z. B. generische App und benutzerdefiniertes Protokoll oder Website und Web-Bluetooth ).

Heath Raftery
quelle