BLE AoA · REAL-TIME LOCATION SYSTEM

전파의 각도로 위치를 읽다,
LocationX 실시간 위치추적 솔루션

Bluetooth 5.1 AoA(Angle of Arrival) 기술로 실내 공간의 태그 위치를 실시간 추적합니다. PoE 로케이터, BLE 태그, 포지션 서버, GUI 설정 도구까지 — 설치에서 운영까지 하나의 Kit으로 완결된 RTLS 솔루션입니다.

4×4 URA안테나 어레이
PoE전원+데이터 단일 케이블
MQTT표준 프로토콜 연동
3D실시간 위치 시각화
Overview

LocationX 솔루션이란

LocationX는 다수의 AoA 로케이터가 BLE 태그의 신호 도래각(방위각·고도각)을 측정하고, 포지션 서버가 이를 융합해 태그의 실시간 좌표를 계산하는 실내 위치추적 시스템입니다. 모든 데이터는 MQTT로 흐르기 때문에 기존 시스템·클라우드와의 연동이 쉽습니다.

📡

각도 기반 고정밀 측위

4×4 URA 안테나 어레이가 태그 신호의 방위각(azimuth)과 고도각(elevation)을 측정합니다. 여러 로케이터의 각도를 교차해 2D/3D 위치를 계산합니다.

🔌

PoE 단일 배선 설치

로케이터는 PoE로 전원과 네트워크를 랜선 하나로 해결합니다. 전원 공사 없이 천장 설치가 가능하고, 연결 즉시 서버에 자동 접속합니다.

🔁

MQTT 개방형 연동

각도·위치 데이터가 표준 MQTT 토픽으로 발행됩니다. MQTT Explorer로 바로 확인하고, 외부망 중계(cloud agent)로 원격 모니터링도 가능합니다.

🗺️

도면 기반 GUI 설정

Windows 설정 도구에서 바닥 도면 위에 로케이터를 드래그해 배치하면 좌표·자세 설정이 서버에 자동 반영됩니다.

💾

IaC 기반 운영

로케이터·서버 카드의 상태를 git으로 선언 관리합니다. 새 SD 카드는 굽기 → 더블클릭 → 번호 선택만으로 동일하게 재현됩니다.

🩺

센서 태그 확장

위치와 함께 심박·모션 등 센서 데이터를 전송하는 태그 라인업으로, 인원 안전관리·행동 분석 등 응용으로 확장됩니다.

Architecture

시스템 구성

태그 → 로케이터 → MQTT 브로커 → 포지션 엔진 → 응용 소프트웨어로 이어지는 단순한 파이프라인입니다. 모든 장비는 같은 네트워크(PoE 스위칭 허브 + 공유기)에 연결됩니다.

🏷️ BLE 태그 CB-AOAAOD-Tag-Hart
CB-AOAAOD-Tag-Motion
BLE CTE 신호
📡 AoA 로케이터 CB-AOAAOD-L-POE2601
4×4 URA · 각도 측정
MQTT angle
🖥️ 포지션 서버 MQTT 브로커(1883)
위치 계산 엔진 · 설정 API
MQTT position
💻 응용 · 도구 위치 시각화(2D/3D)
설정 도구 · 외부망 중계
각도 토픽 silabs/aoa/angle · 위치 토픽 silabs/aoa/position · 외부망 중계 locationx/<siteId>/…
Hardware

하드웨어 라인업

천장 설치형 PoE 로케이터, 용도별 BLE 태그 2종, 그리고 위치 계산을 담당하는 MQTT 로컬 서버로 구성됩니다.

LocationX AoA 로케이터 CB-AOAAOD-L-POE2601

AoA 로케이터

CB-AOAAOD-L-POE2601

BLE 태그의 신호 도래각을 측정하는 천장 설치형 로케이터. PoE 급전으로 랜선 하나로 설치가 끝납니다.

안테나4×4 URA 어레이
측정 방식Bluetooth AoA/AoD (CTE)
전원/통신PoE (IEEE 802.3af)
출력 데이터azimuth · elevation (MQTT)
관리 기능UDP 자동 검색 · LED 식별 · 상태 웹(:8080)
LocationX BLE 태그 CB-AOAAOD-Tag-Hart

BLE 태그 — Hart

CB-AOAAOD-Tag-Hart

위치와 함께 심박 등 생체 신호를 전송하는 웨어러블형 태그. 인원 위치 + 상태 모니터링 응용에 적합합니다.

측위BLE AoA CTE 송신
센서심박 센서
착용 형태 -
배터리 -
LocationX BLE 태그 CB-AOAAOD-Tag-Motion

BLE 태그 — Motion

CB-AOAAOD-Tag-Motion

모션(IMU) 센서를 내장해 움직임·자세 데이터를 함께 전송하는 태그. 자산 추적과 행동 분석 응용에 적합합니다.

측위BLE AoA CTE 송신
센서모션(IMU)
부착 형태 -
배터리 -
LocationX MQTT 로컬 서버 (포지션 서버)

MQTT 로컬 서버 (포지션 서버)

aoa-server-1

MQTT 브로커와 위치 계산 엔진을 담은 로컬 서버. 로케이터들의 각도 데이터를 융합해 태그 좌표를 실시간 계산합니다.

플랫폼Raspberry Pi 4
MQTT 브로커mosquitto (포트 1883)
위치 엔진다중 로케이터 각도 융합 (2D/3D)
설정 API설정 도구 연동 (:8080)
부가 기능외부망 중계(cloud agent) · UDP 자동 검색
Software

소프트웨어 스택

세 개의 공개 저장소로 로케이터·서버·설정 도구를 관리합니다. 장비 상태를 git으로 선언해 두는 IaC 방식이라, 카드가 고장 나도 새 SD 카드를 구워 스크립트 한 번으로 동일한 장비를 재현할 수 있습니다.

L

로케이터 구성 저장소

wshan1977/locationx-locator_config

로케이터 카드(라즈베리파이)의 전체 상태 선언. 안테나 보드 UART 수신 → MQTT 각도 발행, 자동 검색·LED 식별·상태 웹 에이전트를 systemd 유닛으로 구동합니다. 굽기 → deploy_locator 더블클릭 → 번호 선택이면 새 카드 구축 완료.

S

포지션 서버 구성 저장소

wshan1977/locationx-mqtt_server_config

MQTT 브로커(mosquitto) + 위치 계산 엔진 + 설정 API 서버 + 외부망 중계(cloud agent)를 담은 서버 카드 구성. 여러 로케이터의 각도를 융합해 silabs/aoa/position으로 위치를 발행합니다.

T

위치 설정 도구 (Windows)

wshan1977/locationx_position_setting_tool

바닥 도면을 불러와 스케일 보정 후, LAN에서 검색된 로케이터를 도면 위로 드래그해 배치하는 Flutter 데스크톱 앱. [서버로 전송] 한 번으로 서버의 positioning 설정이 갱신되고 엔진이 재시작됩니다.

GitHub에서 보기 →

V

위치 시각화 뷰어

Position Visualization GUI (Python)

MQTT 위치 데이터를 구독해 Top view와 3D 공간에서 태그 위치를 실시간으로 보여주는 Python GUI. 데모·검증 단계에서 측위 품질을 눈으로 확인할 수 있습니다.

LocationX 위치 설정 도구 화면

설정 도구 화면

도면 위 드래그앤드롭 배치 · 스케일 보정 · 원점 설정 · 서버 전송

LocationX 위치 시각화 화면

실시간 위치 시각화

Top view와 3D 뷰에서 태그 이동 궤적을 실시간 확인

Getting Started

구축 절차 — 설치에서 위치 확인까지

공유기와 PoE 스위칭 허브만 준비되면, 나머지는 대부분 자동입니다.

  1. 네트워크 준비공유기 + PoE 스위칭 허브 구성. 포지션 서버 카드와 로케이터를 같은 네트워크에 연결합니다.
  2. 포지션 서버 기동서버 카드(aoa-server-1)에 전원을 넣으면 MQTT 브로커(1883)와 위치 엔진이 자동 실행됩니다.
  3. 로케이터 설치천장에 로케이터를 설치하고 PoE 허브에 랜선을 연결하면, 별도 설정 없이 서버에 자동 접속해 각도 데이터를 전송합니다.
  4. 로케이터 배치 등록위치 설정 도구에서 도면을 불러와 로케이터를 드래그로 배치하고 [서버로 전송] — 좌표·자세가 서버에 반영됩니다.
  5. 위치 확인태그를 켜면 MQTT Explorer에서 angle/position 데이터를, 시각화 뷰어에서 2D/3D 실시간 위치를 확인할 수 있습니다.
Data & Integration

데이터로 연동하기

모든 측정값은 MQTT 토픽으로 발행됩니다. 구독만 하면 어떤 시스템에서도 LocationX의 위치 데이터를 활용할 수 있습니다.

# 로케이터 → 브로커 : 태그 신호의 도래각
silabs/aoa/angle/<locator_id>/<tag_id>
{ "azimuth": 42.1, "azimuth_stdev": 1.3, "elevation": -35.6, "elevation_stdev": 2.0 }

# 포지션 엔진 → 브로커 : 계산된 태그 좌표 (미터 단위)
silabs/aoa/position/<tag_id>
{ "x": 2.41, "y": -1.02, "z": 1.20 }

# 외부망 중계 (cloud agent) : 위치·장비 상태를 외부 브로커로
locationx/<siteId>/silabs/aoa/position/…   # 위치 중계
locationx/<siteId>/status/<deviceId>       # 장비 상태 (retained)
🧭

azimuth / elevation

로케이터(안테나 어레이) 기준 태그 신호의 방위각·고도각과 각각의 표준편차를 제공합니다.

📍

2D / 3D 위치

고정밀 2D 모드 등 추정 모드를 선택할 수 있고, 필터링 가중치로 안정성과 반응성을 조절합니다.

☁️

외부망 모니터링

내부에서 계산을 끝내고 결과만 외부 브로커로 중계 — 원격지에서도 위치·장비 상태를 봅니다.