์ด ํ๋ก์ ํธ๋ Decawave DW1000Ng UWB ๋ชจ๋์ ์ฌ์ฉํ์ฌ **์๋ฐฉํฅ ๊ฑฐ๋ฆฌ ์ธก์ (TWR)**์ ๊ตฌํํ ์์ ์ ๋๋ค. ์ด ์์คํ ์ Tag์ Anchors(A, B, C)๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ๊ฐ์ ์ฅ์น๊ฐ ํน์ ์ญํ ์ ์ํํ์ฌ ํ๊ทธ์ ์ต์ปค ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํฉ๋๋ค.
- Tag: ๊ฑฐ๋ฆฌ ์ธก์ ์ ์์ํ๋ ์ฅ์น์ ๋๋ค. POLL ๋ฉ์์ง๋ฅผ ์ ์กํ๊ณ , ์ต์ปค๋ก๋ถํฐ POLL_ACK๋ฅผ ์์ ํ ํ RANGE ๋ฉ์์ง๋ฅผ ๋ณด๋ด ๊ฑฐ๋ฆฌ ์ธก์ ์ ์ํํฉ๋๋ค.
- Anchor A, B, C: ํ๊ทธ์ POLL ๋ฉ์์ง๋ฅผ ์์ ํ์ฌ POLL_ACK ๋ฉ์์ง๋ก ์๋ตํ๊ณ , RANGE ๋ฉ์์ง๋ฅผ ํตํด ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๊ฐ ์ต์ปค๋ ํ์ ์ฌ๋กฏ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ํน์ ์๊ฐ์๋ง ํ์ฑํ๋ฉ๋๋ค.
- ์๋ฐฉํฅ ๊ฑฐ๋ฆฌ ์ธก์ : ํ๊ทธ์ ์ต์ปค ์ฌ์ด์ ์๋ณต ์๊ฐ์ ์ด์ฉํด ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ํ์ ์ฌ๋กฏ ๋ฐฉ์: ๊ฐ ์ต์ปค๊ฐ ๊ณ ์ ํ ํ์ ์ฌ๋กฏ์์ ๋์ํ์ฌ ๊ฐ์ญ์ ํผํฉ๋๋ค.
- MQTT ํต์ : ์ต์ปค์์ ๊ณ์ฐ๋ ๊ฑฐ๋ฆฌ๋ฅผ MQTT ๋ธ๋ก์ปค๋ก ์ ์กํ ์ ์์ต๋๋ค.
์๋ Sequence Diagram์ Tag์ Anchors ๊ฐ์ ๋ฉ์์ง ๊ตํ์ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
sequenceDiagram
participant Tag
participant AnchorA
participant AnchorB
participant AnchorC
Tag->>AnchorA: POLL ์ ์ก
AnchorA-->>Tag: POLL_ACK ์๋ต
Tag->>AnchorA: RANGE ์ ์ก
AnchorA-->>Tag: RANGE_REPORT (๊ฑฐ๋ฆฌ ๊ณ์ฐ)
Tag->>AnchorB: POLL ์ ์ก
AnchorB-->>Tag: POLL_ACK ์๋ต
Tag->>AnchorB: RANGE ์ ์ก
AnchorB-->>Tag: RANGE_REPORT (๊ฑฐ๋ฆฌ ๊ณ์ฐ)
Tag->>AnchorC: POLL ์ ์ก
AnchorC-->>Tag: POLL_ACK ์๋ต
Tag->>AnchorC: RANGE ์ ์ก
AnchorC-->>Tag: RANGE_REPORT (๊ฑฐ๋ฆฌ ๊ณ์ฐ)
-
Tag์ Anchor ๊ฐ์ ์ํธ์์ฉ:
- Tag๋ POLL ๋ฉ์์ง๋ฅผ ์ต์ปค์๊ฒ ์ ์กํ์ฌ ๊ฑฐ๋ฆฌ ์ธก์ ์ ์์ํฉ๋๋ค.
- ์ต์ปค๋ POLL_ACK ๋ฉ์์ง๋ก ์๋ตํ๊ณ , ์ดํ Tag๋ RANGE ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค.
- ์ต์ปค๋ RANGE_REPORT ๋ฉ์์ง๋ฅผ ํตํด ๊ณ์ฐ๋ ๊ฑฐ๋ฆฌ๋ฅผ Tag์๊ฒ ์ ๋ฌํฉ๋๋ค.
-
ํ์ ์ฌ๋กฏ ๋ฐฉ์:
- AnchorA๋ ์ฒซ ๋ฒ์งธ ํ์ ์ฌ๋กฏ(0~200ms) ๋์ ๋์ํ๋ฉฐ, ์ด ์๊ฐ์ Tag์ ํต์ ํฉ๋๋ค.
- AnchorB๋ ๋ ๋ฒ์งธ ํ์ ์ฌ๋กฏ(200~400ms) ๋์ ๋์ํ๋ฉฐ, Tag์ ํต์ ํฉ๋๋ค.
- AnchorC๋ ์ธ ๋ฒ์งธ ํ์ ์ฌ๋กฏ(400~600ms) ๋์ ๋์ํ๋ฉฐ, Tag์ ํต์ ํฉ๋๋ค.
๊ฐ ์ต์ปค๋ ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ๋์๊ฐ๋ฉด์ ๋์ํฉ๋๋ค. 600ms ์ฃผ๊ธฐ๋ก 3๊ฐ์ ์ต์ปค๊ฐ ์์ฐจ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
- Anchor A: 0~200ms
- Anchor B: 200~400ms
- Anchor C: 400~600ms
์ด ๋ฐฉ์์ UWB ์์คํ ๊ฐ์ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ , ๊ฐ ์ต์ปค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ ์ ์๋๋ก ํฉ๋๋ค.
- POLL ๋ฉ์์ง ์ ์ก: ๊ฑฐ๋ฆฌ ์ธก์ ์ ์์ํ๊ธฐ ์ํด ์ต์ปค์๊ฒ POLL ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค.
- POLL_ACK ์์ : ์ต์ปค๋ก๋ถํฐ ์๋ต(POLL_ACK)์ ๋ฐ์ต๋๋ค.
- RANGE ๋ฉ์์ง ์ ์ก: ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ํด RANGE ๋ฉ์์ง๋ฅผ ์ต์ปค์๊ฒ ์ ์กํฉ๋๋ค.
- RANGE_REPORT ์์ : ์ต์ปค๋ก๋ถํฐ ๊ณ์ฐ๋ ๊ฑฐ๋ฆฌ ๊ฐ์ ์์ ํฉ๋๋ค.
- POLL ๋ฉ์์ง ์์ : Tag๋ก๋ถํฐ POLL ๋ฉ์์ง๋ฅผ ์์ ํฉ๋๋ค.
- POLL_ACK ์๋ต: Tag์๊ฒ ์๋ต ๋ฉ์์ง(POLL_ACK)๋ฅผ ์ ์กํฉ๋๋ค.
- RANGE ๋ฉ์์ง ์์ : Tag๋ก๋ถํฐ RANGE ๋ฉ์์ง๋ฅผ ์์ ํ์ฌ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- RANGE_REPORT ์ ์ก: ๊ณ์ฐ๋ ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ Tag์๊ฒ ์ ์กํฉ๋๋ค.
- WiFi ๋ฐ MQTT ์ค์ : ๊ฐ ์ต์ปค์ ํ๊ทธ์
moduleConfig.h
ํ์ผ์์ WiFi SSID, ๋น๋ฐ๋ฒํธ, MQTT ๋ธ๋ก์ปค ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. - ์ฝ๋ ์ ๋ก๋: ๊ฐ ์ฅ์น(ESP32 ๋๋ ์ง์๋๋ ์ฅ์น)์ ์ฝ๋๋ฅผ ์ ๋ก๋ํฉ๋๋ค.
- ์ฅ์น ์ฐ๊ฒฐ: ์ฅ์น๊ฐ WiFi์ ์ฐ๊ฒฐ๋๊ณ , MQTT ๋ธ๋ก์ปค์ ์ฐ๊ฒฐ๋ ์ํ์์ ๊ฑฐ๋ฆฌ ์ธก์ ์ ์ํํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ MIT License์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค. ์์ค ์ฝ๋๋ ์์ ๋กญ๊ฒ ์์ ๋ฐ ๋ฐฐํฌํ ์ ์์ต๋๋ค.