라즈베리파이로 UWB 좌표를 받으려는 사람들이 가장 먼저 걸려 넘어지는 지점은 전압입니다. 5V 포트에 잘못 연결하면 GPIO가 그 자리에서 타버립니다.
Raspberry Pi UWB 연동이란, GrowSpace UWB 태그나 리스너를 라즈베리파이의 UART 핀에 시리얼로 연결하는 작업입니다. 그 좌표를 파이썬으로 받아 쓰는 것까지가 한 세트입니다. 아두이노와 달리 라즈베리파이는 3.3V 로직이라, 커넥터를 헷갈리면 바로 하드웨어 손상으로 이어집니다.
커넥터부터 확인해야 하는 이유
개발자 태그는 좌우에 커넥터가 따로 있습니다. 좌측이 3.3V, 우측이 5V입니다. 라즈베리파이의 GPIO는 3.3V 로직이므로 반드시 좌측 커넥터를 씁니다.
우측 5V 커넥터를 GPIO에 연결하면 리시버 핀에 정격을 넘는 전압이 들어갑니다. 그 결과 UART 회로가 손상됩니다. 배선 전에 커넥터 라벨을 눈으로 한 번 더 확인하는 습관이 필요합니다.
배선표
라즈베리파이의 UART 핀(GPIO14 TXD, GPIO15 RXD)을 사용합니다.
| 태그 핀 | 라즈베리파이 핀 |
|---|---|
| 3.3V | Pin 1 (3.3V) |
| GND | Pin 6 (GND) |
| TXD | Pin 10 (GPIO15, RXD) |
| RXD | Pin 8 (GPIO14, TXD) |
TX와 RX는 교차 연결입니다. 태그의 TX가 라즈베리파이의 RX로, 태그의 RX가 라즈베리파이의 TX로 물립니다.
라즈베리파이 UART 활성화
기본 상태에서는 시리얼 콘솔이 UART 핀을 점유하고 있습니다. raspi-config에서 Interface Options > Serial Port로 들어갑니다. 로그인 셸 사용은 끄고, 하드웨어 시리얼만 켭니다. 재부팅 후 /dev/serial0 경로가 생성됩니다.
파이썬으로 좌표 받기
pyserial을 설치합니다.
pip3 install pyserial다음 코드로 좌표를 실시간으로 읽습니다.
import serial
import time
ser = serial.Serial('/dev/serial0', 115200, timeout=1)
time.sleep(0.5)
ser.write(b'reset\r')
time.sleep(1)
ser.reset_input_buffer()
ser.write(b'lep\r')
while True:
line = ser.readline().decode('utf-8', errors='ignore').strip()
if line.startswith('POS'):
parts = line.split(',')
x, y, z, qf = float(parts[1]), float(parts[2]), float(parts[3]), int(parts[4])
if qf >= 60:
print(f"X={x:.2f} Y={y:.2f} Z={z:.2f} QF={qf}")
else:
print(f"품질 낮음 (QF={qf}), 이전 값 유지 권장")lep 명령을 넣으면 POS,x,y,z,qf 형식으로 좌표가 계속 올라옵니다. QF는 품질지수로, 60 이상이면 안정적인 값으로 봅니다. 60 미만이 자주 나오면 앵커 배치나 신호 방해 요인을 먼저 점검해야 합니다.
자주 막히는 지점
/dev/serial0가 안 보인다면 UART 설정이 아직 반영 안 된 경우입니다. raspi-config 재확인 후 재부팅이 필요합니다.
값이 깨져서 들어온다면 보드레이트 불일치를 의심합니다. GrowSpace 장치는 115200bps로 고정이므로 코드의 baudrate 값을 다시 확인합니다.
라즈베리파이 여러 대로 동시에 여러 태그를 받아야 한다면 방식을 바꿔야 합니다. 리스너 하나에 태그를 여러 개 묶는 구성보다, 게이트웨이로 MQTT를 받는 방식이 관리하기 편합니다.
자주 묻는 질문
라즈베리파이 3와 4 모두 같은 방식으로 되나요?
됩니다. UART 핀 번호와 활성화 절차는 동일합니다.
USB로 연결하는 리스너를 쓰면 이 배선이 필요 없나요?
맞습니다. 리스너는 USB 시리얼로 바로 인식됩니다. GPIO 배선 없이 /dev/ttyUSB0 같은 경로로 곧바로 읽을 수 있습니다. 개발자 태그를 직접 GPIO에 연결하는 방식은 로봇처럼 태그를 기기에 내장해야 할 때 씁니다.
QF가 계속 낮게 나오면 뭘 봐야 하나요?
앵커 개수와 배치 간격을 먼저 확인하고, 금속·유리 근처에 앵커가 있는지도 점검합니다.
→ 라즈베리파이 기반 개발 환경에 맞는 키트 구성 문의하기

