쓰레기통에 UWB 태그를 달았더니: 10미터 거리에서 3cm 오차를 잡고도 알림이 오지 않은 이유

쓰레기통에 UWB 태그를 달았더니: 10미터 거리에서 3cm 오차를 잡고도 알림이 오지 않은 이유

IoTUWBHome Assistant엔지니어링 실천

데이터 소스:Simon Green 的 BinRange 项目记录

2026년 9월 28일, 개발자 Simon Green은 오랫동안 준비해 온 스마트홈 자동화의 첫 실전 테스트를 맞이했다. 그는 집안의 대형 바퀴 달린 쓰레기통 6개에 초광대역(UWB) 무선 태그를 장착해, 10미터 떨어진 거리에서도 측정 오차를 불과 3센티미터 수준으로 줄이는 데 성공했다. 그러나 쓰레기 수거를 위해 통을 길가로 내놓은 3시간 남짓 동안 시스템에는 신호가 전혀 잡히지 않았다. 마침내 수신된 단 하나의 ‘수거 완료(기울임 감지)’ 알림은 타임스탬프가 58분이나 지난 상태였고, 자동화 스크립트는 이를 기한 만료 데이터로 판단해 즉시 폐기했다.

이 일련의 시행착오는 임베디드 및 사물인터넷 엔지니어링의 보편적인 진실을 보여준다. 센서가 제공하는 것은 수치의 정밀함일 뿐 물리적 진실 그 자체가 아니다. 센티미터 단위의 정확도와 ‘현장에서 실제로 무슨 일이 일어났는가’ 사이에는 여전히 취약한 무선 통신 링크라는 거대한 장벽이 가로놓여 있다.

신호 강도 추정을 버리자 10미터 거리 오차가 3센티미터로 줄다

프로젝트의 출발점은 매우 단순했다. Simon의 홈 어시스턴트(Home Assistant) 시스템은 요일별로 어떤 쓰레기통을 비워야 하는지 이미 알고 있었지만, 정작 그가 쓰레기통을 집 밖 길가로 끌고 나갔는지는 전혀 알지 못했다. 초기에 시도한 해결책은 저렴한 저전력 블루투스(BLE) 비콘을 붙이고 실외에 ESP32 블루투스 프록시를 설치해, 수신 신호 강도(RSSI)로 거리를 추정하는 방식이었다.

하지만 신호 세기로 물리적 거리를 역산하는 것은 명백한 막다른 골목이었다. 무선 전파의 감쇄는 단순히 거리에 의해서만 결정되지 않는다. 벽돌 벽의 차단, 마당에 주차된 차량, 울타리에 부딪혀 생기는 다중경로 반사, 안테나의 지향성, 심지어 배터리 전압 강하만으로도 수신 신호 세기는 곤두박질친다. ‘신호가 약하다’는 결과가 쓰레기통이 20미터 밖으로 나갔기 때문인지, 아니면 태그가 자동차 철제 문짝 바로 뒤에 가려졌기 때문인지 구분할 방법이 없었다. 기존 방식은 빠른 배터리 방전과 널뛰는 거리 측정값, 부하를 견디지 못하고 수시로 다운되는 실외 프록시와의 피곤한 싸움만을 낳았다.

UWB는 접근 방식 자체를 근본적으로 바꿨다. 모호한 신호 진폭에 기대어 거리를 추측하는 대신, 두 기기 사이를 무선 펄스가 이동하는 데 걸리는 시간(Time-of-Flight, ToF)을 직접 측정했다. 거리 측정은 ‘이동 시간 곱하기 빛의 속도’라는 순수한 물리 계산 문제로 단순화되었다. 거리는 주변 환경에 휘둘리는 막연한 추정치에서 확고한 물리적 사실로 거듭났다.

실제 현장 테스트 데이터는 물리 계층 전환의 위력을 명확히 입증했다. 줄자로 10.1미터를 정밀하게 측정한 캘리브레이션 테스트에서 시스템의 평균 측정값은 10.09미터를 기록했고, 표준편차는 겨우 3센티미터에 불과했다. 신호 세기 매핑에서 정밀한 타임스탬프 연산으로 전환하자 공간 거리는 비로소 환경적 미신에서 벗어나 신뢰할 수 있는 물리 좌표가 되었다.

330달러로 산 고정밀 하드웨어도 안테나 방향과 자동차는 피해갈 수 없다

하드웨어 업그레이드 비용은 결코 적지 않았다. 6개의 쓰레기통을 추적하기 위해 Simon은 먼저 Makerfabs의 ESP32-WROVER / DW3000 개발 보드 두 장을 123.64달러에 구매해 개념 검증(PoC)을 진행했다. 가능성을 확인한 뒤에는 정식 KKM K4W 태그 10개와 전용 프로그래밍 지그를 330달러에 추가 구매하면서 총비용은 453.64달러에 달했다.

이 양산용 태그는 Nordic nRF52833 프로세서와 Decawave/Qorvo DW3110 무선 통신 모듈을 탑재하고 온보드 ST LIS3DH 가속도계를 내장했으며, 제법 거대한 크기의 CR2477 코인 전지를 사용한다. 개발자는 제작기에서 이렇게 큰 코인 전지는 생전 처음 본다며 놀라움을 표하기도 했다. 하드웨어 스펙은 완벽에 가까웠지만, UWB 역시 본질적으로는 전파였다. 통신 프로토콜을 바꿨다고 해서 마당에 서 있는 자동차가 투명해지는 것은 아니었으며, 물리적 장애물은 여전히 그 자리에 남아 있었다.

Makerfabs 실험용 보드 그림: 프로토타입 제작에 사용된 Makerfabs ESP32-WROVER 개발 보드. UWB 모듈과 안테나를 확인할 수 있다. 출처: Simon Green 프로젝트 기록

야외 보행 테스트는 무선 링크의 취약한 본모습을 그대로 드러냈다. 가시선(Line-of-Sight)이 확보된 약 30미터 반경 내에서는 거리 측정값이 매우 안정적으로 유지되었고, 단일 최대 측정치는 37.28미터에 달했다. 그러나 시야 사이에 자동차 한 대가 끼어드는 순간 통신 경로는 완전히 끊어졌다. 자동차의 강판 차체가 전파를 차폐하면서 UWB가 지닌 물리적 장점을 순식간에 무력화한 것이다.

안테나 지향성이 미치는 영향은 더욱 극적이었다. 약 10미터 떨어진 한계 거리 테스트에서 태그 기판을 바닥에 눕혀놓은 상태에서 똑바로 세우는 것만으로도 패킷 수신 성공률이 37%에서 100%로 치솟았다. 전파 전송 속도를 낮추고 프리앰블 길이를 늘림으로써 고속 통신 초기의 핸드셰이크 실패는 일부 개선되었지만, 물리 법칙은 모든 통신 프로토콜에 공평하게 적용된다. 주파수가 아무리 높아도 두꺼운 금속을 뚫을 수는 없으며, 안테나 편파가 어긋나면 얼마 남지 않은 링크 마진마저 가차 없이 깎아 먹는다.

정밀도도 패킷 손실은 못 막는다: 58분의 통신 공백이 삼켜버린 알림

전체 추적 로직은 10미터 경계선을 기준으로 삼았다. 10미터 이내는 ‘Home’, 10미터를 벗어나면 ‘Out’으로 판정했다. 마당 안에서 테스트할 때만 해도 이 로직은 흠잡을 데 없이 돌아갔다. 9월 28일 정원 쓰레기 수거 실전이 닥치기 전까지는 말이다.

그날 아침의 타임라인 로그는 시스템의 치명적인 맹점을 고스란히 드러냈다. 오전 7시 5분경 쓰레기통이 움직이기 시작해 10미터 경계를 매끄럽게 넘어섰다. 그러나 경계선을 넘어가자마자 태그와의 연결이 끊어졌고, 이후 3시간이 넘도록 단 하나의 데이터도 들어오지 않았다.

오전 10시 25분이 되어서야 쓰레기통이 다시 앵커의 수신 반경 안으로 들어왔다. 네트워크에는 가속도계가 오전 9시 27분에 감지한 ‘비움 완료’ 타임스탬프 정보가 뒤늦게 올라왔다. 통신 암흑지대에 1시간 가까이 갇혀 있던 이 메시지는 이미 58분이나 지나버린 낡은 정보였다. 자동화 스크립트에 설정된 30분 허용 한도를 훌쩍 넘겨버렸기 때문에, 정작 가장 필요했던 “쓰레기통이 방금 비워졌습니다”라는 알림은 발송되지 못하고 버려졌다.

그 시간 동안 실내 앵커의 MQTT 연결은 정상이었고, 마당에 남아 있던 다른 쓰레기통들도 제시간에 거리를 보고하고 있었다. 수거 지점에서 유독 그 태그의 신호가 닿지 않았던 원인은 아직 명확히 밝혀지지 않았다. 엣지 디바이스의 센서가 밀리미터 단위로 정확하더라도, 중간의 데이터 전송로가 끊어지면 전체 비즈니스 프로세스는 순식간에 마비된다.

보행 테스트 거리 데이터 그림: 야외 보행 테스트 거리 곡선. 하단은 신호 세기 및 거리 편차 진단 데이터. 출처: Simon Green 프로젝트 기록

오프라인을 일상으로 수용하고 추정 상태로 데이터 유실에 맞서다

예측할 수 없는 전파 음영 구역을 마주한 개발자는 기지국(앵커)을 무리하게 늘려 마당 전체를 커버하려던 생각을 접고, 소프트웨어의 판정 상태 머신을 뜯어고쳤다. 기존 설계에서는 장시간 데이터를 받지 못하면 ‘Out’ 상태가 ‘Unknown’으로 변질되어 전체 자동화 로직을 혼란에 빠뜨렸다.

개선된 버전은 데이터 유실에 대한 관점을 바꿨다. 쓰레기통이 밖으로 이동한 명확한 이벤트를 한 번 감지하면, 시스템은 상태를 ‘외출 추정(presumed Out)‘으로 단단히 고정한다. 그 뒤로 몇 시간 동안 연결이 끊어지든, 홈 어시스턴트 서버가 재부팅되든 외출 상태는 데이터베이스에 그대로 유지된다.

기기의 온라인 여부와 실제 업무 상태를 강제로 결합하지 않도록 분리한 것이다. 수신 신호의 건전성은 별도의 진단용 센서로 떼어내어 오프라인을 있는 그대로의 네트워크 상태로 다뤘다. 쓰레기통이 다시 ‘Home’으로 복귀하려면 오직 10미터 경계선 안에서 검증된 새로운 거리 측정값이 발생해야만 한다. 아울러 앵커는 MQTT를 통해 데이터를 독립적으로 브로드캐스팅하며, 홈 어시스턴트는 각 태그별 가상 기기를 자동으로 생성한다. 중앙 집중식 외부 클라우드에 의존하지 않으므로, 홈 어시스턴트가 갑자기 멈추더라도 앵커와 태그 사이의 저수준 무선 측위는 묵묵히 제 역할을 이어간다.

항상 연결되어 있을 것이라는 환상을 버리고 접속 단절을 현실의 기본값으로 받아들였을 때, 비로소 가정용 IoT 시스템은 진정한 복원력을 갖추게 되었다. 쓰레기통 보관소와 수거 지점 간의 세부 전파 도달률 측정, 비바람을 견디는 방수 내후성, 몇 주 뒤 배터리 잔량의 실제 감소 추이, 그리고 고양이 목걸이에 태그를 달아 4개 앵커로 실내외 위치를 추적하려는 시도까지, 남겨진 과제들은 다음 엔지니어링 주기의 몫으로 남겨졌다.

참고 링크:

  • Simon Green 프로젝트 기록