BLE RSSI์ ๋ฌธ์ ์ ์ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
- 4.5m ์ด์์์๋ ์ ๋๋ก ๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ ์ ์์. (๋์ค์๋ ํต์ ๊ฑฐ๋ฆฌ๊ฐ ๋ ๊ธธ์ด์ง BLE5.0์ ๋ํด ์์๋ณผ ์์ )
- ์ค์ ํ๊ฒฝ์์๋ ๋ง์ ์ธ๋ถ ์์ธ์ผ๋ก ์ธํด RSSI ๋ณ๋์ด ๋ฐ์ํด ๊ฑฐ๋ฆฌ์ ์ค์ฐจ๊ฐ ๋ฐ์ํจ.
๐ 1. ์ด๋ ํ๊ท ํํฐ
RSSI ๋ณ๋์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋๋ฐ ๊ทธ ์ค ๊ฐ์ฅ ๊ฐ๋จํ ์ด๋ํ๊ท ํํฐ์ด๋ค.
- ์๋ฆฌ๋ ๊ฐ๋จํ๋ค. ํ๋์ ์๋์ฐ ์ฌ์ด์ฆ๋งํผ ๊ทธ๋ฃน์ ๋ฌถ๋๋ค.
- ๊ทธ๋ฃน์ ํ๊ท ๊ฐ์ ๋ํฏ๊ฐ์ผ๋ก ์ก๋๋ค.
- ํ ์นธ์ฉ ์ด๋ํ๋ค. (Convolution 1D์ ๊ฐ์ ์๋ฆฌ)
์ด ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์ค๋ฌด๋ฉ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค. RSSI ๊ฐ์ด ํ ํ์์ ๋ ์ด๋ฅผ ์ํ์์ผ์ฃผ๋ ํจ๊ณผ๋ฅผ ๋ธ๋ค.
๋น์ฐํ ๋จ์ ๋ ์กด์ฌํ๋ค.
delay๊ฐ ๋ฐ์ํ๋ค. ์๋์ฐ ์ฌ์ด์ฆ๋งํผ ํ๊ท ๋ด๊ธฐ ๋๋ฌธ์ ํ์ฌ์ ๊ฐ์ด ๋ฐ๋ก ๋ฐ์๋์ง ์์. ์๋์ฐ ์ฌ์ด์ฆ๊ฐ ํฌ๋ฉด ํด์๋ก delay๋ ์ ์ ๋ ๋์ด๋๋ค.
delay๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ฌ์ ๊ฐ์ ๊ฐ์ค์น๋ฅผ ๊ณฑํ ์ ์๊ณ , ์นผ๋ง ํํฐ๋ฅผ ์ด์ฉํ ์๋ ์๋ค.
๐ 2. Code
var movingAverageWindow = [];
num movingAverageFilter(int rssi, int windowSize) {
if (movingAverageWindow.length != windowSize) {
movingAverageWindow.add(rssi);
} else {
movingAverageWindow.add(rssi);
movingAverageWindow.removeAt(0);
}
return (movingAverageWindow.reduce((a, b) => (a + b)) / windowSize);
}
728x90
๋ฐ์ํ