2026年5月3日日曜日

iOSでWeb Bluetooth APIを使ってみた。

 ESP32にiPhoneとかでアクセスする場合はWebサーバを立ててWebSocketとJavaScriptを駆使すれば簡単にデータのやり取りとかUIも実装できたりして便利なんだけど、nRF52840でBLEを使った通信の場合はどうしよう…ということで調査してみた。

確かにHTTPサーバを建てられるESP32はUIまで内蔵してしまえば手軽で良いんだけどやっぱりWiFiは消費電力が…
ということでDMC-100に内蔵するのにBLEのみのnRF52840を使用した。TWELITEとかでも良かったんだけど、受信側にもドングルが必要になるし。

PC側で受信するにはPythonとか使えるので問題なかったんだけど、外や車で使う場合はやっぱりスマホのほうが便利なんだよなぁ
ということでスマホでも使えないかやってみた。

アプリは敷居が高いし、PythonistaはBLE対応してるっぽいのでPCで使っていたBLEアプリをベースにすれば動くかも?ただし有料。Web Bluetooth APIはデフォルトのブラウザでは対応していないけどBluefyアプリを使用すればiPhoneでも使えることがわかった。

ただしhtmlファイルをhttpsサーバ上においておかないとだめらしい?

そのためだけにサーバを契約したり立てたりするのが面倒なので今回はGitHub Pagesを使ってみることにした。GitHubにhtmlファイルをアップロードして設定をするだけで使えるらしい。

設定も簡単で、レポジトリを作成して、index.htmlをアップロードして、レポジトリの設定をひらいて左側のPagesからBranchをmainにしてSaveするだけ。

あとは少し待ってからまたこの設定画面を開くとBuild and deploymentの上のところに公開URLが生成されている。

すげー簡単にWebページが作れる…

あとはiPhoneにBluefyをインストールしてそのURLを開くだけ。

CSVダウンロード機能が動かなかったので、クリップボードに貼り付けとかを試した結果、Web Share APIを使ったほうが便利だったのでShare画面を表示するようにしてここからファイルに保存したり他のアプリで転送できるようにしてみた。
これなら簡単にiOSでBLE対応のWebアプリが作れるので便利かもしれない。

0 件のコメント:

コメントを投稿