FolkBearsGroup/ble-tools: BLE 開発のための便利ツール群
https://github.com/FolkBearsGroup/ble-tools
ほどよく整理ができてきたので…というか、ブログに記事をまとめていると実験コードが散乱してしまうので FolkBearsGroup/ble-tools というリポジトリにまとめてアップしました。それぞれのツールは特に関係はしていないのですが、FolkBears を開発する際に使ったものです。
BLE の受発信は無線なのでよく見えないところが多いです。更にOSやプログラム言語により設定が異なるため、実行時に挙動が異なります。このあたり、たちたびツールを作って確認はしていたのですが、あまりまとめていなかったのでこの機会にまとめています。
scan_cocoa_python と scan_cocoa_win
解説は COCOA 受信(EN API 仕様)の実際 Windows + C# 版 | Moonmile Solutions Blog https://www.moonmile.net/blog/archives/12026 です。この記事では Windows 上で動作する C# になっていますが、scan_cocoa_python では Python で受信しています。
たぶん、node.js でも同じことができるはずなのですが、私のところではうまくいかなかったので up していません。
- python では bleak というライブラリを使っています
- Windows 版は net10.0-windows10.0.22621.0 でいけます
scan_ibeacon_win
iBeacon の受信機を windows + C# で作っています。iBeacon の解説は BLE アドバタイズのパケット/iBeacon の詳細 | Moonmile Solutions Blog https://www.moonmile.net/blog/archives/11981 で書いたのですが、コードの解説はまだ書いてないみたい。
これも python とか node.js でも作れるはずです。
受信タイミングは Windows と Linux では異なるので、実行環境で確認しておくのは重要です。
transmitter_cocoa_m5stack
発信系は M5Stack で作っています。M5Stack は ESP32 を搭載しているので、BLE の発信が細かく制御できます。当然、Android や iOS で発信は可能ではあるのですが、いくつかの制限があるので、純粋に BLE の発信機を使うときは M5Stack のようなデバイスを使う方がいいです。
解説は COCOA 発信機(EN API仕様)を M5Stick Plus で作る | Moonmile Solutions Blog https://www.moonmile.net/blog/archives/12033 で書いています。
COCOA/EN API 仕様は 16 bit Service UUID で送信するパターンです。16 bit Service UUID は 0xFD6F を使います。
これも OS や機種によって、発信タイミングが異なるので Android や iOS で発信する部分もチェックしないといけません。
transmitter_manufacturer_m5stack
同じく M5Stack で Manufacturer Data で発信するパターンも作っています。
本当は Manufacturer Data が一番使い勝手がいいのでですが、iOS から Manufacturer Data を発信することができません。このために FolkBears では iBeacon 形式を使っているのですが、これもバックグラウンド動作等に難点があります。
このあたりの解説はまだ書いていないので、次の Android/iOS の受発信ツールも含めて書いていくつもりです。
folkbears-monitor-droid
Android で、iBeacon/EN API/FolkBears/manufacturer data の4種類のパターンで受信チェックをするツールです。FolkBears はもともと GATT サービスで接続する方式になっています。現在は iBeacon 形式と GATT サービスの両方で試すことができます。
この GATT サービスのときに相手のデバイスを探すときに、遅延しているらしいので、このツールを作っています。
解説は Android で iBeacon と EN API 受信機を作る | Moonmile Solutions Blog https://www.moonmile.net/blog/archives/12046 で書いています。
遅延のタイミングは、発信間隔と受信間隔の微妙なところがあります。その実験のためにつかいます。発信側は発信タイミング(Scan Window/Scan Interval)を細かく設定できる m5stack を使っていますが、受信側は Android も iOS も Scan Window/Scan Interval を のツールを使うとよいです。
また、実機測定として相手側を Android/iOS にして確認していきます。
folkbears-monitor-ios
Android と同じパターンで iOS 版も作っています。
Android と同じように4種類の BLE 受信のパターンをチェックできます。iOS の場合でも manufacturer data の data 部分が取得できています(発信はできない)。
解説のほうも書いていきます。
これからの予定
Android と iOS の発信機がないので、ざっと作っていきます。
あと、m5stack での発信ツールの不足分(iBeacon版)も足していきます。
ほかにも、設定関係やログ出力機能がないので、これも追加していきたいですね。あくまで開発ツールの位置づけなので、本格的なものは本体の FolkBears に入れていく予定です。
