BLEによるデバイスクロックの設定


7

BLEを介して電話またはラップトップから現地時間を取得するデバイスを構築したいと考えています。私の理想的な相互作用の流れは:

  1. デバイスの「時間設定」ボタンを押して、広告を開始します
  2. 電話/コンピューターでBluetooth設定またはコントロールパネルを開き、デバイスを見つけてタップして接続します
  3. デバイスは現在のタイムサービスを使用して電話から時刻を要求し、接続を切断して広告を停止します

対話の全体的な範囲は、手動で調整する必要なく、NTPを使用するためにWiFiのようなより複雑な接続を追加することなく、現地時間を取得することです。

この相互作用フローはBLEで可能ですか?周辺機器は、それ自体で中央から現在のタイムサービスから読み取ることができますか?そうでない場合、電話のコンパニオンアプリは、周辺機器の現在のタイムサービス特性に書き込む必要がありますか?


2
望ましい精度はどれくらいですか?時間を表示する一般的な時計として使用しますか、それとも正確な時計を必要とする他の種類のアプリケーションがありますか?
Bence Kaulics

ベンスの質問に加えて、BLEをデバイスと同期させる代わりに、ラジオクロック信号の使用を検討しましたか?多くのコンシューマデバイス(デジタル時計など)は、これを使用して正確な時刻を取得します。
Aurora0001

ええ、1秒以内で問題ありません。時計が付いている他の家電製品と同じ精度です。
jmw 2017

また、私はLFラジオクロックシステムを見ましたが、レシーバーは私が知っているどのµCにも統合されていません。
jmw 2017

回答:


6

これ以上パートナーデバイスと通信するつもりはないので、設定された時間の精度は、数秒の精度の範囲では問題ないと思います。より正確に取得したい場合は、さらに多くのことを考慮する必要があります(遅延、遅延、低レベルのプロトコルなど)。

一般に、BLEは通信プロトコルであり、エンドデバイスが提供するすべての機能にアクセスできます。したがって、NTP要求を許可するコンピューター/電話がある場合は、BLEを介してNTP要求を出すことができます。それには確かに、なんらかの構成や追加のプログラムが必要です。

スキャン要求とスキャン応答を使用して、アドバタイズプロセス中に時間を配信できます。もちろん、これを行うには、最小限のBLEを用意する必要があります。利点は、完全なペアリングを行う必要がないことです。もちろん、Piまたは他の制御可能なインスタンスから機能する可能性のある時間を取得している場合は、スマートフォンにはない、両側のBLE動作への特定のアクセスが必要です。

Androidを応援することをためらわない場合は、Cheepsyncを使用することもできます。これはGithubにあります。


6

Web Bluetoothを見たことがありますか?これを使用して、時刻を設定するためだけにネイティブクライアントアプリを必要とせずにデバイスに書き込むことができます。

ほとんどのプラットフォームのChromeでサポートがあり、他のブラウザでもサポートが追加されています。

私はWeb Bluetoothを使用してWi-Fiの詳細を設定するデバイスに取り組んでいます(デバイスはNTPを使用して正確性を維持し、他のいくつかの機能をサポートするクロックです)


2

この相互作用フローはBLEで可能ですか?

はい。

周辺機器は、それ自体で中央から現在のタイムサービスから読み取ることができますか?

セントラルがCurrent Time Serviceを実行している場合のみ。

そうでない場合、電話のコンパニオンアプリは、周辺機器の現在のタイムサービス特性に書き込む必要がありますか?

セントラルが既に現在のタイムサービスを実行しているかどうかによって異なります。たとえば、iOSにはペリフェラルの現在の時間特性を毎分書き込むビルトインがあります。

組み込みの現在の時刻サービスがない場合は、追加するか、他の方法で現在の時刻を提供することができます(例:汎用アプリとカスタムプロトコル、またはWebサイトとWeb Bluetooth)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.