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® ネットワークインフラストラクチャ
広範囲カバレッジ: 屋内カバレッジ半径最大2 km、安定した信号を確保。
大規模接続: 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ビーコンを配置します。

次に、各ビーコンの固有MACアドレスとその物理的な場所を記録するためのリスト(テンプレート)を作成します。この記録は、ソフトウェア設定ステップにとって必須です。
記録例:
MAC Address,Location,Beacon ID
c30000564b31,"Main Entrance",01
c30000564b32,"Warehouse Zone A",02
c30000564b33,"Corner Office",03
以下の動画は、後でアプリケーションのマップにビーコンを追加する際にこのリストをどのように使用するかを示しています。今正確な記録を作成することで、ソフトウェアのセットアップがはるかに簡単になります。
プロのヒント: 管理を簡単にするために、SenseCraft アプリを使用してすべてのビーコンに一貫したUUIDを設定できます。これにより、トラッカーがあなたのデバイスのみをリッスンし、他のデバイスを無視することが保証されます。詳細については機能4:ビーコンUUIDによるフィルタリングをご確認ください。
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 (Local LoRaWAN Server)
デフォルトのSenseCraft Data(旧SenseCAP Portal)プラットフォームを使用している場合、ゲートウェイは既に事前設定されています。
- 公式ユーザーマニュアルに従って、ゲートウェイがオンラインでアカウントに接続されていることを確認してください。
- それが完了したら、ステップ2に進むことができます。
セルフホストのChirpStackサーバーを使用している場合、ゲートウェイを再設定し、デコーダースクリプトを準備する必要があります。
-
ゲートウェイの設定: このガイドに従ってゲートウェイのデータをChirpStackにリダイレクトしてください。
-
デコーダーのダウンロード: ChirpStackはT1000トラッカーから送信されるデータを理解するためにデコーダーが必要です。後の手順で準備できるよう、今すぐスクリプトをダウンロードしてください。
注意: このスクリプトはChirpStackアプリケーション設定内に追加します。ゲートウェイ自体には追加しません。
ステップ2:測位アプリケーションのインストール
次に、Dockerを使用してサーバーにメインアプリケーションをインストールします。または、まずデモをご覧いただけます。

インストールコマンドの実行
サーバーでターミナルを開き、以下のコマンドを実行してください:
docker run -p 5173:5173 -p 8022:8022 --name indoor-positioning --restart unless-stopped -v /data/indoor-positioning/db/:/app/db/ -d seeedcloud/sensecraft-indoor-positioning
このコマンドの動作:
- SenseCraft Indoor Positioningアプリケーションをダウンロードして開始します。
-p 5173:5173
により、Webダッシュボードがポート5173
でアクセス可能になります。-v /data/indoor-positioning/db/:/app/db/
により、アプリケーションはデータベースとマップをマシンの/data/indoor-positioning/db/
フォルダに保存します。-d
により、アプリケーションがバックグラウンドで実行されます。
コマンドを実行した後、Webブラウザを開いてhttp://<your_server_ip>:5173
にアクセスすることでダッシュボードにアクセスできます。
ステップ3:アプリケーションの設定

次に、ブラウザでアプリケーションダッシュボードを開いて、システム設定を構成します。
3a. ランタイム設定(LoRaWANへの接続)
この設定により、アプリケーションがLoRaWAN Network Serverに接続してトラッカーデータを受信します。重要な機能として、アプリケーションはSenseCraft DataプラットフォームとChirpStackサーバーの両方への同時接続をサポートしています。

ダッシュボードで、ネットワークサーバーに接続するために以下のMQTTソースの一方または両方を有効にできます。
SenseCraft Dataへの接続
- SenseCAP OpenStream MQTTトグルを有効にします。
- ユーザー名とAPI キーを入力します。
- これらの認証情報はData OpenStream API クイックスタートガイドに従って生成できます。
ChirpStackへの接続
- ChirpStack MQTTトグルを有効にします。
- ChirpStackのサーバーアドレスとアプリケーションIDを入力します。
- MQTTトピックフィールドは自動的に更新されます。アプリケーションIDはChirpStack内のアプリケーションのメインページで確認できます。

注意: {clientID}
フィールドはシステムによって使用され、起動時にランダムIDに置き換えられます。変更する必要はありません。
重要: これらの設定を有効にしたり変更したりした後は、設定を有効にするためにアプリケーション(Dockerコンテナ)を再起動する必要があります。
その他の設定
以下の設定は、アプリケーションを再起動することなくいつでも変更できます:
- 認証: アプリケーションのダッシュボードにログインするために使用するユーザー名とパスワードを更新します。
- エリア測位: 精密な多点測位に利用できるビーコン信号が少なすぎる場合に、トラッカーの位置を推定するためにこのオプションを有効にします。
- トラッカーアクセス制御: アプリケーションにデータを送信することが許可されているデバイスを設定します。任意のデバイスからのデータを許可するか、承認されたトラッカーの特定のリストを作成できます。
- Webhook: HTTP POSTリクエストを使用して位置結果を独自のサービスにプッシュするためにこれを有効にします。
3b. マップとビーコンの設定
このステップでは、アプリケーションのダッシュボードを使用してフロアプランをアップロードし、先ほど物理的に配置したビーコンを追加します。

- マップのアップロード まず、設定メニューに移動してフロアプランの画像をアップロードします。PNGやJPGなどの標準的な画像形式が推奨されます。
- ビーコンの追加 「ビーコン」セクションに移動します。ステップ1aで作成したリストを使用して、各ビーコンの情報(MACアドレスなど)を追加します。最も簡単な方法は、アップロードしたマップ上のビーコンの位置を直接クリックすることです。
- 環境係数の調整(オプション)
これは位置精度を微調整する高度な設定です。特定の環境を考慮して信号強度(RSSI)をより正確な距離に変換するのに役立ちます。
- オープンスペースの場合、デフォルト値の約2.0で通常十分です。
- 多くの壁や障害物がある複雑な屋内エリアの場合、1.8から4.0の間で値を調整する必要があるかもしれません。
- 推奨: 開始時はデフォルト設定のままにしておくのが最適です。測位精度を向上させる必要がある場合は、後で戻って調整できます。
ステップ4:トラッカーのアクティベートと可視化
最後のステップは、トラッカーの電源を入れてマップ上で確認することです。

- SenseCAP T1000トラッカーをアクティベートし、LoRaWAN Network Serverにオンボードします。ゲートウェイがオンラインで、トラッカーデバイスがLNSサーバーに「登録」されていることを確認してください。詳細はステップ1bをご確認ください。
- BLEスキャンモードに設定されていることを確認して、ビーコンを検出できるようにします。ヘルプについては以下の動画をご確認ください。
- 可視化: トラッカーが施設内を移動すると、最寄りのビーコンを検出してその位置を報告します。ダッシュボードのマップ上でアイコンが移動するのを確認できます。
ChirpStackを使用する場合は、Other Platform
を選択してください。
SenseCraft Dataを使用する場合は、デフォルトのプラットフォーム設定(SenseCAP for The Things Network)を保持してください。
アプリケーション機能概要
機能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つの位置決め方法をサポートしています:
- 三辺測量 (Trilateration): トラッカーが 3つ以上 のビーコンを検出したとき、正確な (x, y) 座標を計算します。これがデフォルトで最も正確なモードです。
- 近接(エリア位置決め): これを有効にし、トラッカーが 1つ のビーコンしか検出できない場合、そのビーコンの近くにいると計算された半径内で位置を報告します。すべてのエリアをカバーするために便利です。
三辺測量
三辺測量 | 三辺測量 (SOS) |
---|---|
![]() | ![]() |
エリア位置決め
エリア位置決め | エリア位置決め (SOS) |
---|---|
![]() | ![]() |
特徴 3: アラート履歴の表示
地図上のトラッカーアイコンをクリックすると、そのトラッカーのアラート履歴(例:SOSボタン押下履歴)を確認できます。システムは新しいアラートを記録し、解決されるまで通知を送り続けます。

特徴 4: ビーコンUUIDによるフィルタリング
地図上に表示されるトラッカーを、関連するビーコンUUIDでフィルタリングできます。これにより特定のエリアや資産を集中監視できます。ハッキング対策としても有効です。

参考 & リソース
- ランディングページ: SenseCraft 室内位置決めソリューション
- Docker イメージ: seeedcloud/sensecraft-indoor-positioning - Docker Hub
- ライブデモサイト: IndoorPositioning
FAQ
トラッカーが位置を報告しないのはなぜですか?
- 考えられる原因: LoRaWAN 接続に問題がある可能性があります。
- 解決策: LoRaWAN ゲートウェイがオンラインで接続されているか確認してください。また、トラッカーの Device EUI がネットワークサーバーに正しく登録されていることを確認してください。
トラッカーの位置が不正確なのはなぜですか?
- 考えられる原因: BLEビーコンの設置場所が干渉や信号カバー不足を引き起こしている可能性があります。
- 解決策: ビーコンの送信出力を調整してみてください。また、壁や機械による信号遮蔽を避けるために設置場所を変更する必要があるかもしれません。
トラッカーのバッテリーがすぐに減るのはなぜですか?
- 考えられる原因: 報告頻度が高すぎ、必要以上にデータを送信している可能性があります。
- 解決策: モーション検出設定を最適化して、トラッカーが移動しているときだけ報告するようにしてください。また、報告間隔(位置更新の時間間隔)を延長して電力を節約できます。
位置データが表示されない、または欠落しているのはなぜですか?
- 考えられる原因: データベースや API に問題がある可能性があります。特にデータペイロードの解釈方法に関連します。
- 解決策: まずアプリケーションサーバー上のペイロードデコーダーが正しく動作しているか確認してください。正しければ、アプリケーションサーバーのログでエラーや接続問題を確認してください。
SOSアラートが迅速に届かないのはなぜですか?
- 考えられる原因: LoRaWAN ネットワークが混雑している、またはデバイスクラスが緊急メッセージに適していない可能性があります。
- 解決策: SOS アラートのような時間に敏感なアプリケーションでは、トラッカーを クラスCモード に設定してください。これにより受信機が常時オンとなり、サーバーからのメッセージを即座に受信できます。
BC01ビーコンの広告間隔と送信出力を調整するには?
SenseCraft アプリを使用して BC01 ビーコンを設定できます。
- Google Play Store または Apple App Store から SenseCraft アプリをインストールします。
- アプリを開き、スマートフォンの Bluetooth を有効にします。
- 近くのビーコンをスキャンして、設定したいものを選択します。
- デフォルトのパスワード "seeed123" を入力して設定画面に入ります。
- 広告間隔(100ms〜10s)と送信出力(-30dBm〜+4dBm)をニーズに合わせて調整します。
- 設定を保存します。