LoRaWANを使用したBluetooth屋内測位システム
はじめに
概要
屋内測位は多くの業界で共通の課題です。UWBのような高精度システムは存在しますが、コストが高く複雑になる場合があります。このソリューションは、2つの強力なワイヤレス技術を組み合わせることで、柔軟で費用対効果の高い代替案を提供します:位置検知のためのBluetooth Low Energy(BLE)と長距離・低消費電力データ伝送のためのLoRaWAN。
このシステムはSenseCAP T1000 Trackerを中心に構築されており、2つの異なる測位モードをサポートし、ニーズに基づいて精度とバッテリー寿命のバランスを取ることができます:
-
高精度追跡(三角測量): トラッカーが3つ以上のBLEビーコンからの信号を検出すると、マップ上の正確な(x、y)座標を計算できます。このモードは、資産や人員の移動を追跡するのに理想的で、定期的または移動が発生するたびに正確な位置更新を提供します。
-
ゾーンベース測位(近接): トラッカーが1つまたは2つのビーコンの範囲内にある場合、最も近いビーコンへの近接性に基づいて位置を特定します。このモードは、自動チェックイン、資産が指定された部屋にあることの確認、または位置報告の頻度を下げてバッテリー寿命を節約するなど、よりシンプルな用途に最適です。
両方の方法をサポートすることで、このソリューションは、シンプルな存在検知からより詳細な座標ベースの監視まで、幅広い屋内追跡アプリケーションに対応する汎用性があり、展開しやすいシステムを提供します。
このソリューションを実装するために必要なすべての製品については、屋内・屋外統合測位バンドルページをご確認ください。
主な機能と利点
- 費用対効果が高くスケーラブル:手頃な価格のBLEビーコンを活用し、各部屋に高価なゲートウェイを設置する必要がありません。
- 長距離データ伝送:単一のLoRaWANゲートウェイで建物全体やキャンパス全体をカバーでき、インフラストラクチャコストを大幅に削減します。
- 即座のSOS警報:トラッカーには、押すとLoRaWAN経由で即座にSOS警報を送信し、迅速な緊急対応を可能にするパニックボタンが含まれています。
- インテリジェント電源管理:内蔵の加速度計を使用することで、トラッカーは動きが検出されたときのみ報告し、それ以外の場合は定期的な「ハートビート」信号を送信できます。これにより、多くの資産追跡アプリケーションで最適な設定により、バッテリー寿命を最大6か月まで大幅に延長できます。
- 簡単な展開:BLEビーコンとLoRaWANゲートウェイの設定は簡単で、測位システムを迅速にオンラインにできます。
- オープンソースソフトウェア:プロジェクトは完全にオープンソースで、GitHubリポジトリを使用して独自のバックエンドサーバーを構築およびカスタマイズできます。
使用例
使用例
このソリューションは、幅広いゾーンベースの追跡および安全アプリケーションに理想的です:
キャンパス・学校の安全
学生とスタッフにウェアラブルトラッカーを提供します。内蔵のSOSボタンにより、キャンパス内のどこからでも最後に確認された位置とともに緊急警報を即座に送信でき、安心感を提供し、より迅速な対応時間を可能にします。
資産管理
屋内と屋外の両方で貴重な資産の位置を追跡します(例:駐車場の車両)。移動時のみ報告するようにトラッカーを設定し、バッテリーを節約しながら不正な移動に対する警報を確実に受け取れます。
自動チェックイン・人員管理
BLEビーコンの信号強度を調整することで、オフィスや介護施設の「チェックイン」ゾーンを作成できます。トラッカーを着用した人がゾーンに入ると、その存在が自動的に記録されます。
システムアーキテクチャ
システムは、シンプルでありながら強力な原理で動作します。モバイルトラッカーは固定ビーコンからの信号を聞き取り、聞こえた内容を中央サーバーに報告します。

前提条件
主要コンポーネントは以下の通りです:
- BLEビーコン:これらは既知の場所(例:部屋の入り口、重要なゾーン)に配置された小さな固定送信機です。一意のIDを継続的にブロードキャストします。
- SenseCAP T1000 Tracker:これは追跡したい資産や人に取り付けられるモバイルデバイスです。近くのBLEビーコンをスキャンし、最も強い信号を持つものを特定します。
- LoRaWANゲートウェイ:トラッカーは最も近いBLEビーコンのIDを含むデータパケットをLoRaWAN経由でゲートウェイに送信します。
- ネットワーク・アプリケーションサーバー:ゲートウェイはデータをLoRaWANネットワークサーバー(SenseCraft Data)に転送し、それがアプリケーションサーバーにルーティングします。アプリケーションサーバーはビーコンIDとその実世界の位置のマップを保持し、トラッカーの位置を決定できます(例:「トラッカー#58はビーコン#12の近くにあり、これは会議室3にあります」)。
開始する前に、以下のものが必要です:
- SenseCAP T1000 Tracker
- 1つ以上のBLEビーコン
- インターネットに接続されたLoRaWANゲートウェイ
- Dockerがインストールされたサーバーまたはコンピューター
SenseCAP T1000 Tracker
BLEスキャン機能を備えたLoRaWAN®モバイルトラッカー
BLEビーコン検出:精密な屋内・屋外測位のためのBLE 5.1をサポート。
広域ネットワーク:長距離・低消費電力通信のためのLoRaWAN® Class A(v1.0.4)接続。
動作検出:リアルタイムの動作と静止状態検知のための内蔵加速度計。
緊急ボタン:ワンプレスで緊急警報をトリガーする独立したSOSボタン。
BLEビーコン
通常のBluetoothブロードキャスト
プロトコル互換性: Bluetooth® LE 5.0 | iBeaconおよびEddystoneフォーマットを完全サポート。
柔軟な展開: 調整可能なカバレッジ半径のための設定可能な送信電力。
長寿命: 標準設定で最大2年間のバッテリー寿命。
簡単設置: 壁やその他の表面への簡単な取り付けのための粘着バッキング付き。
ブロードキャスト範囲: 屋外最大75メートル、開放エリアの屋内最大120メートル。
SenseCAP M2 マルチプラットフォームゲートウェイ
LoRaWAN® ネットワークインフラストラクチャ
広範囲カバレッジ: 最大2kmの屋内カバレッジ半径で、安定した信号を確保。
大規模接続性: 優れたパフォーマンスで200台以上の同時デバイスをサポート。
複数のバックホール: Ethernet、Wi-Fi、4Gを含む複数のネットワークバックホールオプションを提供。
統合ソリューション: ネットワークの展開と管理を簡素化するための内蔵ローカルLoRaWANサーバー機能。
入門ガイド
- ビーコンの展開: 施設全体の戦略的な場所にBLEビーコンを配置します。各ビーコンの固有IDとその物理的な場所を記録したマップまたはリストを作成します(例:
Beacon_ID_01: "メインエントランス"、Beacon_ID_02: "倉庫ゾーンA")。 - ゲートウェイのセットアップ: LoRaWANゲートウェイをインターネットに接続し、選択したLoRaWANネットワークサーバーにパケットを転送するように設定します。
- アプリケーションの展開: アプリケーションサーバー上で、報告されたビーコンIDをステップ3で記録した物理的な場所にマッピングするロジックを作成します。
- トラッカーの設定: SenseCAP T1000をアクティベートし、LoRaWANネットワークサーバーにオンボードします。BLEスキャンモード用に設定されていることを確認します。
- 可視化: トラッカーが施設内を移動すると、最も近いビーコンを報告し、アプリケーションはダッシュボードまたはマップ上にその場所を表示できます。
ステップ1: ハードウェアのセットアップ
まず、施設内に物理デバイスをセットアップする必要があります。
1a. ビーコンの展開
完全な技術仕様については、**BC01 屋内Bluetoothビーコンドキュメント**を参照してください。
メインエントランス、倉庫、オフィスエリアなどの施設内の戦略的な場所にBLE(Bluetooth Low Energy)ビーコンを配置することから始めます。
システムにビーコン情報を追加する手順については、以下のビデオを参照してください。 追加のヘルプについては、ヒントセクションも確認できます。
BC01 ビーコンのパラメータのクイックビュー
| パラメータ | デフォルト値 |
|---|---|
| UUID | FDA50693-A4E2-4FB1-AFCF-C6EB07647825 |
| Major | 10001 |
| Minor | 19641 |
| Measured power | -59dBm |
| Tx Power | -30 - +4dBm、デフォルト 0dBm |
| Adv Interval | 100ms~10s、デフォルト 500ms |
| Password | seeed123(文字と数字) |
| Device Name | BC01(1-7文字) |
| Soft Reboot | seeed123(パスワードと同じ) |
1b. ゲートウェイのセットアップ
LoRaWAN ゲートウェイの電源を入れ、インターネットに接続します。
次に、使用しているネットワークサーバーに応じて以下の手順に従ってください。
- SenseCraft Data
- ChirpStack(ローカル LoRaWAN サーバー)
デフォルトでは、LoRaWAN ゲートウェイは SenseCraft Data プラットフォーム(旧 SenseCAP Portal)にデータを転送します。
- 公式ユーザーマニュアルに従って、ゲートウェイがオンラインでアカウントにリンクされていることを確認してください。
- 接続が確認できたら、次のステップ(ステップ2)に進むことができます。
ゲートウェイと統合されたセルフホスト ChirpStack サーバーを使用している場合、ゲートウェイデータのリダイレクトとデコーダースクリプトの準備が必要です。
- ゲートウェイの設定: このガイドに従ってゲートウェイのアップリンクデータを ChirpStack にリダイレクトしてください。
- デコーダースクリプトのダウンロード: ChirpStack は T1000 トラッカーからのデータを解釈するためにデコーダーが必要です。後の設定ステップで使用できるよう、以下のスクリプトをダウンロードしてください。
- T1000 デコーダースクリプトをダウンロード 注意: このスクリプトはChirpStack アプリケーション設定に追加する必要があり、ゲートウェイデバイス自体には追加しません。
ステップ 2:測位アプリケーションのインストール
Docker を使用してサーバーに SenseCraft 屋内測位アプリケーションをインストールします。 まずインターフェースを確認したい場合は、ライブデモをチェックできます。
インストールコマンドの実行
サーバーでターミナルを開き、以下のコマンドを実行します:
- グローバル
- ミラー
docker run -p 5173:5173 -p 8022:8022 \
--name indoor-positioning \
--restart unless-stopped \
-v $PWD/db:/app/db/ \
-v $PWD/config:/app/server/config/json \
-d seeedcloud/sensecraft-indoor-positioning
中国本土のユーザーは、chsrcを使用してソースを変更し、より高速化することができます。
💡 注意:Windows でコマンドを実行する場合は、CMD ターミナルではなく PowerShell を使用してください。
このコマンドの動作:
- SenseCraft 屋内測位アプリケーションコンテナをダウンロードして開始します。
-p 5173:5173により、ポート5173でウェブダッシュボードにアクセスできるようになります。- ローカルディレクトリをマウントします:
/app/db/→ データベースとマップを保存します。/app/server/config/json→ 設定ファイルを保存します。
-dはアプリケーションをバックグラウンドで実行します。
コンテナが正常に開始されたら、ウェブブラウザを開いて以下にアクセスします:
👉 http://<your_server_ip>:5173
これで、サーバー上で SenseCraft 屋内測位ダッシュボードが実行されているのが確認できるはずです。
ステップ 3:アプリケーションの設定
3a. ランタイム設定(LoRaWAN への接続)
この設定を使用して、アプリケーションを LoRaWAN ネットワークサーバーに接続し、トラッカーデータを受信します。 アプリケーションは SenseCraft Data とローカル ChirpStack サーバーの両方に同時に接続できます。
ダッシュボードで1つまたは両方の MQTT ソースを有効にします:
SenseCraft Data への接続
- SenseCAP OpenStream MQTT をオンにします。
- ユーザー名と API キーを入力します - これらは Data OpenStream API クイックスタートガイドから取得してください。
ChirpStack への接続
- ChirpStack MQTT をオンにします。
- サーバーアドレスと Application ID を入力します - MQTT トピックは自動入力されます。Application ID は ChirpStack アプリケーションページで確認できます。
注意:
{clientID}フィールドは自動生成されます。編集しないでください。
重要: 変更後は、更新を有効にするために Docker コンテナを再起動してください。
その他の設定
これらのオプションはいつでも変更できます(再起動不要):
- 認証 – ダッシュボードのログイン認証情報を更新します。
- エリア測位 – ビーコン信号が弱いまたは少ない場合にトラッカーのおおよその位置を推定します。
- トラッカーアクセス制御 – 測位可能なデバイスを制限します(すべてに開放またはホワイトリスト)。
- Webhook – HTTP POST を介して位置データをサービスにプッシュします。
3b. マップとビーコンの設定
Create をクリックして最初のマップを作成します。
このパネルでマップデータをアップロードします。 現在、デモ版ではポリラインエンティティを含む GeoJSON 形式のファイルのインポートのみサポートしています。 以下は参考用のサンプル JSON テンプレートです:
{
"map": {
"width": 29.53000000000094,
"height": 22.212853765822828,
"entities": [
{
"type": "polyline",
"points": [
[12.894968342021272, 17.07477114091087],
[12.894968342021272, 17.114771140910868]
],
"closed": false
},
{
"type": "polyline",
"points": [
[12.944968342021284, 17.114771140910868],
[12.894968342021272, 17.07477114091087]
],
"closed": false
}
]
},
"beacons": {}
}
この JSON は座標ベースのポリラインを使用して 2D フロアレイアウトを定義し、壁や境界などのマップ要素を表現します。 現在のデモ版では他のジオメトリタイプはサポートされていません。
- ビーコンの追加
ビーコンセクションで、各ビーコンの MAC アドレス、ID、位置を追加します。 ステップ 1aで作成したリストを使用して、アップロードしたマップ上に直接配置できます。
- 環境要因の調整(オプション)
信号強度(RSSI)を距離に変換する方法を調整して、位置精度を微調整します。
- デフォルト値(~2.0)は開放エリアでうまく機能します。
- 複雑な屋内環境では、1.8 から 4.0 の間の値を試してください。
- デフォルト設定から始めて、必要に応じて後で調整してください。
ステップ 4:トラッカーのアクティベートと可視化
最後のステップは、トラッカーの電源を入れてマップ上で確認することです。
- SenseCAP T1000 トラッカーをアクティベートし、LoRaWAN ネットワークサーバーにオンボードします。ゲートウェイがオンラインで、トラッカーデバイスが LNS サーバーに「登録」されていることを確認してください。詳細はステップ 1bを確認してください。
- BLE スキャンモードに設定されていることを確認し、ビーコンを検出できるようにします。ヘルプについては以下のビデオを確認してください。
- 可視化: トラッカーが施設内を移動すると、最寄りのビーコンを検出してその位置を報告します。ダッシュボードのマップ上でアイコンが移動するのが確認できます。
ChirpStack を使用する場合は Other Platform を選択してください。
SenseCraft Data を使用する場合は、デフォルトのプラットフォーム設定(The Things Network 用の SenseCAP)を保持してください。
アプリケーション機能概要
機能 1: データプッシュ(Webhook & WebSocket)
システムからリアルタイムデータを取得する方法は2つあります:
- Webhook: 設定で説明したように、これは提供されたURLにデータをプッシュします。
- WebSocket: リアルタイムアプリケーション用に、Basic HTTP認証を使用して
/wsエンドポイントに接続できます。sos、tracker_update(三角測量)、tracker_location_approximate(近接)のデータ形式は、元の文書で提供されているJSON例で詳しく説明されています。
データ形式
- SOSアラート
- 三角測量/多角測量
- エリア測位
{
"type": "tracker_sos",
"data": {
"2CF7F1C0530004AD": {
"timestamp": 1756967508000,
"sos": 0
}
}
}
{
"type": "tracker_update",
"data": {
"2CF7F1C0530003BD": {
"trackerId": "2CF7F1C0530003BD",
"timestamp": 1756967455550,
"position": {
"x": 11.1,
"y": 12.3
},
"last_detected_beacons": [
{
"macAddress": "C3:00:00:56:4B:5D",
"major": null,
"minor": null,
"name": "Unknown Beacon",
"rssi": -79,
"txPower": null,
"configured_x": null,
"configured_y": null
},
{
"macAddress": "C3:00:00:3E:7D:AA",
"major": null,
"minor": null,
"name": "Unknown Beacon",
"rssi": -80,
"txPower": null,
"configured_x": null,
"configured_y": null
},
{
"macAddress": "C3:00:00:13:3C:99",
"major": null,
"minor": null,
"name": "Unknown Beacon",
"rssi": -80,
"txPower": null,
"configured_x": null,
"configured_y": null
}
],
"position_history": [],
"map": "10 Floor",
"sos": 2
}
}
}
{
"type": "tracker_location_approximate",
"data": {
"2CF7F1C0530004AD": {
"trackerId": "2CF7F1C0530004AD",
"timestamp": 1756967098851,
"radius": 5.248074602497725,
"last_detected_beacons": [
{
"txPower": -59,
"rssi": -77,
"name": "corner",
"configured_x": 32.41,
"configured_y": 21.26,
"macAddress": "C3:00:00:56:4B:59"
}
],
"map": "10.5 Floor",
"sos": 0
}
}
}
機能 2: 2つの測位モード
システムは2つの測位方法をサポートしています:
- 三角測量: トラッカーが3つ以上のビーコンを検出すると、正確な(x, y)座標を計算します。これはデフォルトで最も正確なモードです。
- 近接(エリア測位): これを有効にして、トラッカーが1つのビーコンしか検出できない場合、計算された半径内でそのビーコンの「近く」にいると位置を報告します。これはすべてのエリアでカバレッジを確保するのに便利です。
三角測量
| 三角測量 | 三角測量(SOS) |
|---|---|
エリア測位
| エリア測位 | エリア測位(SOS) |
|---|---|
機能 3: アラート履歴の表示
マップ上のトラッカーアイコンをクリックすることで、任意のトラッカーのアラート履歴(例:SOSボタンの押下)を表示できます。システムは各新しいアラートをログに記録し、解決されるまでアクティブなアラートの通知をプッシュし続けます。
機能 4: ビーコンUUIDによるフィルタリング
関連するビーコンUUIDによってマップ上に表示されるトラッカーをフィルタリングできます。これにより、特定のエリアや資産をより集中的に監視できます。ハッキングされないよう価値があります。
参考資料とリソース
- ランディングページ: SenseCraft 屋内測位ソリューション
- Docker イメージ: seeedcloud/sensecraft-indoor-positioning - Docker Hub
- ライブデモサイト: IndoorPositioning
ヒント
ビーコンをより効率的に展開・設定するための便利なヒントをご紹介します:
1. ビーコン情報の記録
各ビーコンの固有のMACアドレスと設置場所を記録することを強く推奨します。
これはソフトウェア設定ステップで重要になり、マッピングやトラブルシューティング時に正しいビーコンを簡単に識別・選択するのに役立ちます。
| MACアドレス | 場所 | ビーコンID |
|---|---|---|
| c30000564b31 | メインエントランス | 01 |
| c30000564b32 | 倉庫ゾーンA | 02 |
| c30000564b33 | コーナーオフィス | 03 |
2. すべてのビーコンに一貫したUUIDを使用
管理を簡単にするため、SenseCraft アプリを使用してすべてのビーコンに一貫したUUIDを割り当てることができます。
これにより、トラッカーが自分のデバイスのみをリッスンし、近くの他のビーコンを無視することが保証されます。
詳細については機能 4: ビーコンUUIDによるフィルタリングをご確認ください。
3. 安定した設置場所の選択
安定したBluetooth信号を確保するため、固定された、開放的で、障害物のないエリアにビーコンを設置してください。
干渉を引き起こす可能性のある金属表面、電気パネル、Wi-Fiルーターの近くへの設置は避けてください。
4. 各ビーコンのラベル付けと固定
メンテナンス時の混乱を避けるため、記録表と一致する見やすいラベル(例:Beacon-01、Beacon-02)を貼り付けてください。
偶発的な移動を防ぐため、デバイスがしっかりと固定されていることを確認してください。
5. 信号範囲の確認
設置を確定する前に、BLEスキャナーアプリや設定ツールを使用して信号カバレッジをテストし、対象ゾーンで一貫した検出が可能であることを確認してください。
6. ビーコンデータの迅速な追加・調整
GeoJSON形式の設定ファイルを使用している場合、エクスポートしたマップファイルを直接編集してビーコンデータを迅速に追加・調整し、その後アプリケーションに再インポートすることもできます。
{
"map": {
"width": 29.53000000000094,
"height": 22.212853765822828,
"entities": [
{
"type": "polyline",
"points": [
[12.894968342021272, 17.07477114091087],
[12.894968342021272, 17.114771140910868]
],
"closed": false
},
{
"type": "polyline",
"points": [
[12.944968342021284, 17.114771140910868],
[12.894968342021272, 17.07477114091087]
],
"closed": false
}
]
},
"beacons": {
"beacon-01": {
"uuid": "FDA50693-A4E2-4FB1-AFCF-C6EB07647825",
"major": 10001,
"minor": 19641,
"x": 26.38,
"y": 4.4,
"txPower": -59,
"displayName": "Corner",
"macAddress": "C3:00:00:58:4B:38",
}
}
}
ヒント: JSONを直接編集することは、複数のビーコンを一度に追加したり、ダッシュボード外で座標を微調整したりする際に便利です。
FAQ
なぜトラッカーが位置を報告しないのですか?
- 考えられる原因: LoRaWAN接続に問題がある可能性があります。
- 解決策: LoRaWANゲートウェイのステータスを確認し、オンラインで接続されていることを確認してください。また、トラッカーのDevice EUIがネットワークサーバーに正しく登録されていることを確認してください。
トラッカーの位置が不正確なのはなぜですか?
- 考えられる原因: BLEビーコンの配置が干渉や弱い信号カバレッジを引き起こしている可能性があります。
- 解決策: ビーコンの送信電力を調整してみてください。壁や機械による信号の遮蔽を減らすために、ビーコンの位置を変更する必要がある場合もあります。
トラッカーのバッテリーがすぐに消耗するのはなぜですか?
- 考えられる原因: レポート頻度が高すぎて設定されており、デバイスが必要以上に頻繁にデータを送信している可能性があります。
- 解決策: モーション検出設定を最適化して、トラッカーが動いているときのみレポートするようにしてください。電力を節約するために、レポート間隔(位置更新間の時間)を長くすることもできます。
位置データが欠落したり表示されないのはなぜですか?
- 考えられる原因: データベースやAPIに問題がある可能性があり、多くの場合、データペイロードの解釈方法に関連しています。
- 解決策: まず、アプリケーションサーバーのペイロードデコーダーが正しく動作していることを確認してください。デコーダーが正しい場合は、アプリケーションサーバーのログでエラーや接続の問題がないかチェックしてください。
SOSアラートが迅速に受信されないのはなぜですか?
- 考えられる原因: LoRaWANネットワークが混雑しているか、デバイスクラスが緊急メッセージに適していない可能性があります。
- 解決策: SOSアラートのような時間が重要なアプリケーションでは、トラッカーがClass Cモードを使用するように設定されていることを確認してください。これにより、デバイスの受信機が継続的にオンになり、サーバーからのメッセージを即座に受信できるようになります。
BC01ビーコンのアドバタイジング間隔と送信電力を調整するにはどうすればよいですか?
SenseCraftアプリを使用してBC01ビーコンを設定できます。
- Google Play StoreまたはApple App StoreからSenseCraftアプリをインストールします。
- アプリを開き、スマートフォンのBluetoothを有効にします。
- 近くのビーコンをスキャンし、設定したいビーコンを選択します。
- デフォルトパスワード「seeed123」を入力して設定にアクセスします。
- アドバタイジング間隔(100ms〜10s)と送信電力(-30dBm〜+4dBm)を必要に応じて調整します。
- 変更を保存します。
変更履歴
2025-11-10:
- ビーコンの配置とゲートウェイ設定のガイダンスを見直し、配置のベストプラクティス、参考資料、SenseCraft DataとChirpStackのネットワークサーバー固有の指示を明確化しました。
- ランタイム設定とマップ/ビーコン設定セクションを拡張し、より明確なUIガイダンス、GeoJSONインポートサンプル、環境要因に対するオプションの調整ヒントを追加しました。
- ビーコンの記録管理、UUID管理、マウント、検証、一括編集をカバーする専用のTipsセクションを追加し、デプロイメントのスケールアップとトラブルシューティングを容易にしました。