TECH 으로 돌아가기
TECH HACKER NEWS 오늘 8분 읽기 25 READS

쓰레기통 여섯 개에 UWB 무선을 달다: 과잉 엔지니어링의 교과서

쓰레기통 여섯 개에 UWB 무선을 달다: 과잉 엔지니어링의 교과서
SOURCE IMAGE · HACKER NEWS

Home Assistant는 이미 많은 것을 알고 있다. 오늘이 쓰레기 수거일인지, 어떤 통을 내놓아야 하는지, 대시보드에 어떤 색을 띄우고 언제 알림을 보낼지까지 처리한다. 하지만 정작 "내가 그 통을 실제로 밖에 내놓았는가"는 알지 못한다. 대부분의 사람이라면 휴대폰에 반복 알림을 설정하거나 그냥 기억해서 처리할 일이다. 그러나 이 글의 저자는 쓰레기통 여섯 개에 무선 라디오를 달아 '정말 내놓았는지'를 추적하는 BinRange라는 시스템을 만들었다. 사소한 문제를 또다시 터무니없이 과하게 설계한 자기 고백이자, 동시에 UWB(초광대역) 측위 기술을 실전에서 검증한 흥미로운 기록이다.

발단은 몇 해 전 시도했던 블루투스 태그였다. 저렴한 태그를 쓰레기통에 붙이고 실외 블루투스 프록시로 근접 여부를 판단하려 했지만, 배터리는 빨리 닳고 측정값은 들쭉날쭉했으며 프록시도 불안정했다. 근본 원인은 거리 추정 방식에 있었다. 블루투스는 수신 신호 강도(RSSI)로 거리를 역산하는데, 신호 강도는 거리뿐 아니라 벽, 주차된 차량, 반사, 안테나 방향, 심지어 일부 하드웨어에서는 배터리 전압에 따른 송신 출력 변화에까지 좌우된다. 신호가 약해졌다는 것이 통이 멀어졌다는 뜻인지, 아니면 무언가 사이를 가로막았다는 뜻인지 구분할 수 없었다.

왜 UWB인가

UWB는 신호 강도 대신 전파가 두 기기 사이를 오가는 데 걸린 시간을 측정한다. 추정이 아니라 비행 시간 기반의 실제 거리값이 나온다는 점이 결정적이었다. 물론 전파가 주변 환경을 뚫고 가야 하는 사실은 변하지 않으니, 라디오를 바꾼다고 주차된 차가 사라지는 것은 아니다. 애플의 에어태그가 저자를 UWB에 끌어들였고, 묵혀 둔 쓰레기통 아이디어를 다시 불러냈다.

첫 실험은 Makerfabs의 ESP32-WROVER/DW3000 보드 두 개를 USB로 급전해 거리를 측정하는 것이었다. 여기서 안테나 방향이 뜻밖에 큰 변수로 드러났다. 약 10미터 거리에서 보드를 눕힌 상태에서 세운 상태로 바꾸자 측정 성공률이 37%에서 100%로 뛰었다. 프리앰블이 긴 느린 라디오 설정이 빠른 설정보다 안정적이기도 했다. 줄자로 보정했을 때 보고된 거리가 실측치와 2센티미터 미만으로 일치하는 것을 본 순간 저자는 경탄했다. 다만 이 2센티미터 미만이라는 수치는 첫 보정 때의 관측값일 뿐, 모든 태그·방향·실외 위치에서 보장되는 정확도는 아니라는 점을 저자는 분명히 선을 긋는다. 이후 10.1미터 실측 구간에서는 평균 약 10.09미터, 표준편차 3센티미터가 나왔다.

실외에서 드러난 한계

실외 보행 테스트는 더 현실적인 그림을 보여줬다. 약 30미터까지는 안정적이었으나 그 바깥은 간헐적이었고, 가장 멀리 잡힌 값은 37.28미터였지만 끊김이 있었다. 차 한 대가 경로를 완전히 가릴 수도 있었다. 저자는 이 결과가 유용한 출발점일 뿐 설치된 통들의 실제 커버리지를 보장하지는 않는다고 못 박는다. 애초에 필요한 것은 정밀 좌표가 아니라 각 통이 평소 보관 위치에서 'Out'으로 간주할 만큼 멀어졌는지 여부뿐이었다. 그래서 10미터를 경계로 삼고, 정원을 측위 실험장으로 만드는 대신 급전형 앵커 한 대로 시작했다.

통에 달 하드웨어는 작고 자족적인 퍽 형태여야 했다. 최종적으로 구입한 것은 KKM의 K4W 태그로, nRF52833 프로세서와 DW3110 라디오, LIS3DH 가속도계를 품고 CR2477 코인셀을 쓴다. 핵심 선택 기준은 공급사의 기존 소프트웨어 기능이 아니라 '내 펌웨어를 올릴 수 있는가, 내 앵커와 쓸 수 있는가'였다. 저자는 오랫동안 nRF52를 다뤄 왔기에, 스케줄링과 인터럽트를 잘 짜면 작은 배터리로 수년을 버티게 할 수 있다는 점을 노렸다. 특히 제조사가 가속도계의 인터럽트 출력을 nRF의 GPIO에 연결해 둔 덕분에, 평소엔 길게 재우고 물리적 움직임이 생길 때만 깨우는 설계가 가능했다. 기본값은 정지 시 10분 보고였으나, 저자는 Home Assistant에서 이를 30분으로 늘리고 이동 중에는 5초 보고를 유지하도록 조정했다.

OTA 업데이트와 다중 태그의 교훈

실무적으로 가장 참고할 만한 대목은 무선 펌웨어 갱신이다. 통을 설치한 뒤 매번 열어 프로그래밍 지그에 올리는 것은 비현실적이므로, 앵커가 페어링된 태그에 서명된 펌웨어를 블루투스로 배포하도록 만들었다. 이전 애플리케이션을 남겨 불량 업데이트를 롤백하고, 태그가 정확히 기대한 이미지로 구동되며 자체 상태 점검을 통과했을 때만 성공으로 보고한다. 손상된 이미지, 중단된 전송, 특정 시점의 전원 손실, 워치독 복구, 그리고 앵커가 아예 없을 때 무선 응답 없이도 건강 상태를 확인하는 상황까지 Codex로 시뮬레이션하며 다졌다. 또 태그를 하나에서 여섯으로 늘리자 블루투스 라이브러리가 레코드 크기를 '동시 연결 수'로 잡아 둔 탓에 키가 저장돼 있어도 추가 페어링이 실패하는 버그가 드러났다. 순한 데모 태그 하나로는 결코 나오지 않았을, 실제 규모가 소프트웨어를 제대로 심문한 사례다. 지금은 여섯 태그 모두를 지그 없이 무선으로 갱신했지만, 일부 연결은 재시도가 필요했던 만큼 저자는 완전 무인 신뢰성을 선언하기엔 증거가 더 필요하다고 유보한다. 배터리 수명 역시 짧고 평탄한 전압 곡선만으로는 방어 가능한 추정을 내놓을 수 없어 아직 측정 과제로 남아 있다.

비용은 Makerfabs 보드 두 개가 배송 포함 123.64달러, 샘플 태그 열 개와 프로그래밍 지그·배송이 추가로 약 330달러였다. 저자 스스로 투자 회수 기간은 계산하지 않는 편이 낫겠다고 농담할 만큼 효율과는 거리가 먼 프로젝트다. 그럼에도 이 기록이 유효한 이유는 결과물이 아니라 과정의 정직함에 있다. RSSI와 UWB의 원리적 차이, 안테나 방향 같은 사소해 보이는 변수의 위력, 실험실 수치를 실외 커버리지로 성급히 일반화하지 않는 태도, 그리고 OTA 배포를 실패 모드부터 설계하는 접근은 무선 센서나 IoT를 다루는 실무자에게 그대로 옮겨 적용할 만한 교훈이다. 과잉 설계된 쓰레기통 이야기의 외피를 벗기면, 측정 기술의 한계를 솔직하게 끌어안는 엔지니어링 사례 연구가 남는다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://sjg.io/writing/binrange-have-you-actually-put-the-bi...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...