본문 바로가기

공학

[Beacon] 2. 비콘을 이용한 위치 측위

안녕하세요. 공대오빠입니다.


이번에는 제가 비콘을 이용해서 위치측위 했던 과정을 적어보겠습니다. 현장실습 때 과제로 했었는데 다른 사람들에게도 도움이 되지 않을까 싶어 올려봅니다.


우선 제가 사용했던 것은 블루이노라는 블루투스 4.0을 지원하는 아두이노 보드였습니다.

디바이스마트에서 검색하면 이렇게 쉽게 찾을 수 있습니다.

이 보드5개를 비콘으로 사용했습니다.


아두이노 소스를 보면 이렇게 advdata라고 해서 전송하는 값을 정할 수 있고,

아래에는 advertisementinterval 이라고 해서 신호를 발생하는 주기를 정할 수 있습니다.

그 아래 txpowerlevel은 사용 전력? 입니다. 그래서 주기와 파워를 조절해서 사용하는 전력을 조절할 수 있습니다. 설치하면 배터리를 이용해서 작동하기 때문에 소비전력이 중요하게 됩니다.


그리고 각 비콘별로 이렇게 MAC주소가 있습니다.(혹시 몰라서 모자이크 처리 ㅎㅎ)

그래서 라즈베리파이에서 비콘 스캔(구글에 검색하면 쉽게 찾을 수 있습니다.)을 하면 맥주소와 RSSI값이 같이 읽히게 됩니다. 


@여기서 RSSI 값이란  Received Signal Strength Indicator의 약자로 간단하게 말하면 수신되는 신호의 강도를 뜻하는 것입니다. 와이파이, 블루투스 등 많은 통신의 신호 수신 감도를 나타내는 단위입니다. 단위는 dbm이고 높을 수록 수신 강도가 높은 것입니다.


그래서 이 RSSI값을 이용해서 위치측위가 가능한지 테스트를 해봤습니다.


#환경 요소

-직선거리 기준으로 RSSI 측정

-높이 동일하게 고정

-단말기 기준 1m 이내 장애물 제거(반사 신호 방지)

#측정 방법

-직선거리 1m 고정 후 Rx Power 값에 따른 RSSI값 측정

-Rx Power(4) 고정 후 직선거리(1m 단위)에 따른 RSSI값 측정

-송신기를 바꿔가며 각 각의 값을 측정(신호 간섭 방지)

-한 번에 측정 값 50개의 평균 값 이용

 

아래의 표가 블루이노(비콘) 5개를 모두 측정한 값입니다.

보시면 RSSI 값들의 차이가 크지도 않고, 일정하지도 않다는 문제가 있습니다.

즉 비콘 하나를 이용해서 거리를 계산할 수 없다는 것입니다.


그래서 비콘 여러개를 이용해서 삼변측량을 통해 단말기의 위치를 계산해보기로 하였습니다.

삼변측량은 간단히 말해 원 3개를 겹치는 부분의 정확한 위치를 계산하는 것입니다.


아래는 위키피디아의 내용입니다.

》dbm을 거리로 바꾸는 공식도 있었던 것으로 기억하는데 아마 전류 값을 계산할 수 없어서 못 했던 것 같습니다.

그래서 아래 사진처럼 좌표를 만들어서 측정해봤습니다.


만약에 3번 비콘이 1~2m 이내/ 4번 비콘이 2~3m/ 2번 비콘이 2~3m 로 측정이 됐다면 그 것에 해당하는 좌표에 있다고 측정이 되는 것입니다. 위와 같은 경우에는 6,3 지역에 있다고 판별하게 되는 것입니다.


하지만 이역시 정확하게 맞지 않았습니다. 1m이내는 정확하게 구별이 되지만 그 이후는 값들이 다 비슷하게 나왔기 때문입니다.



》또한 안테나의 방향에 따른 감도의 차이도 있었습니다. 그래서 안테나의 Data sheet의 패턴도를 확인했습니다.

그래서 X, Y평면이 가장 일정하다는 것을 확인하고 안테나를 세우는  방향으로 다시 방향으로 측정을 했습니다. 여기서도 PCB기판의 영향으로 뒷 면의 RSSI값이 좋지 않다는 것을 알 수 있었습니다.

아래에 빨간색으로 표시 된 방향이 사용하기에 가장 적합한 곳이었습니다.


여기까지가 제가 비콘을 이용해 위치측위를 해본 것입니다.

아마 저렇게 가장 적합한 방향을 이용했어도 정확한 RSSI값 측정은 어려웠을 것입니다.


대부분의 사람들이 비콘을 이용해서 정확한 위치측위는 어렵다고 하고 있습니다. 


가장 적합한 것은 그 비콘 근처에 있는지 확인하는 정도가 될 것 같습니다. 정확도가 중요하지 않은 프로젝트에 적용할 수 있을 것 같습니다.


RSSI 값은 오차가 너무 심합니다!!!!!!!


그래서 제가 해보고 싶었지만 적용하지 못해본 것이 두 가지 있습니다.

1. 칼만필터 적용: 제가 칼만필터에 대한 이해와 소프트웨어 코딩 기술이 부족해서 칼만필터를 이용해 값을 계산해보지 못했습니다. 만약 칼만필터를 적용했다면 RSSI값이 조금 저 정확해지지 않았을까 생각합니다.


2. 다른 안테나 사용: 위의 온칩 형태의 안테나가 아니라 외장안테나를 이용해 지향성으로 바꾼다면 좀 더 정확한 값과 방향을 지정할 수 있지 않을까 생각합니다.


추가적으로 필터, 안테나, 통계에 대한 공부가 필요할 것 같습니다.

-끝-


'공학' 카테고리의 다른 글

케이스 다리 3D프린터로 제작하기  (1) 2018.02.28
키즈폰 준3 충전기 포고핀 수리(실패)  (1) 2018.02.25
[Beacon] 1. 비콘에 대해 알아보기  (7) 2018.02.03
[DIY] 납땜 환풍기  (0) 2017.11.18
PID제어기 만들기  (2) 2017.08.30