메뉴 전체보기

회원메뉴

Reyax RYUW122-Lite 거리 측정 모듈 – 구성, 사용 및 거리 측정 방법 | UWB Tech | GPS 없이 위치 측정 | Reyax | AkashWave RF > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3090
제목 : Reyax RYUW122-Lite 거리 측정 모듈 – 구성, 사용 및 거리 측정 방법 | UWB Tech | GPS 없이 위치…
2026-08-25 13:35

소개: Reyax RYUW122-Lite 거리 측정 모듈 – 구성, 사용 및 거리 측정 방법 | UWB Tech | GPS 없이 위치 측정 | Reyax | AkashWave RF


소개: Reyax RYUW122-Lite 거리 측정 모듈 – 구성, 사용 및 거리 측정 방법 | UWB Tech | GPS 없이 위치 측정 | Reyax | AkashWave RF


소개: Reyax RYUW122-Lite 거리 측정 모듈 – 구성, 사용 및 거리 측정 방법 | UWB Tech | GPS 없이 위치 측정 | Reyax | AkashWave RF


며칠 전, REYAX Technology에서 다음이 들어 있는 소포를 받았습니다: RYUW122-Lite 모듈. 주로 장거리 데이터 전송에 사용되는 기존 LoRa 통신 모듈과 달리, 이 모듈은 단거리에서 소량의 데이터도 전송할 수 있습니다. 하지만 이 모듈의 주요 기능은 양방향 비행 시간(ToF) 방식을 사용해 두 노드 사이의 거리를 측정하는 것입니다.

이 기능 덕분에 이 모듈은 다음과 같은 애플리케이션에 매우 유용합니다:

• GPS 없는 위치 측정(실내 또는 지하 환경)

• 장치 간 거리 측정

• 로보틱스 및 자율 주행

• 자산 추적 시스템

• 무선 센싱 네트워크

이 글에서는 이 모듈의 작동 방식과 AT 명령을 사용해 구성하는 방법을 설명하고, 잘못된 거리 측정값이 나올 때 보정하는 방법도 알아봅니다. 또한 이 모듈을 ESP32와 같은 마이크로컨트롤러와 함께 사용하는 방법이나, USB-to-TTL 변환기 를 사용해 수동 AT 명령을 전송하고 두 노드 사이의 거리를 측정하는 방법도 보여 드리겠습니다.

마지막으로, 이 모듈들이 실제 거리 테스트에서 실제로 얼마나 먼 거리까지 작동할 수 있는지도 보여 드리겠습니다.

또한 하드웨어 설정, 구성, 모듈의 실제 작동 모습에 대한 실시간 시연 및 실제 환경에서의 거리 테스트를 포함해 전체 프로젝트를 자세한 YouTube 동영상으로 단계별 기록했습니다. 전체 동영상은 여기에서 시청할 수 있습니다. 👉 ( https://youtu.be/WTmuCWi43rc )

그럼 더 지체하지 말고 이 모듈을 살펴보겠습니다.





STEP 1. 준비물


  1. Reyax RYUW122-Lite UWB 모듈 – 2개
  2. USB-to-TTL 변환기 – 1개
  3. 프로그래밍 케이블이 포함된 ESP32 개발 보드 – 1개
  4. 128×64 OLED 디스플레이 – 1개
  5. 브레드보드 및 점퍼 와이어
  6. 배터리 및 3.3V 벅 컨버터




STEP 2. 간단한 설명


간단한 설명


구성 및 코딩을 자세히 살펴보기에 앞서, 먼저 이 모듈이 실제로 어떻게 작동하는지설명하겠습니다.

RYUW122-Lite 초광대역(UWB) 모듈은 다음 방식을 사용해 거리를 측정합니다: 양방향 비행 시간 방식입니다. Anchor 는 먼저 매우 정밀한 UWB 펄스를 Tag로 전송합니다. Tag가 이 신호를 수신하면, 알려진 처리 지연 시간만큼 기다린 후 Anchor로 응답을 다시 전송합니다. 신호가 Tag까지 이동했다가 돌아오는 데 걸린 총 시간을 측정하고 알려진 지연 시간을 빼면 시스템은 신호의 이동 시간을 계산합니다. 전파는 빛의 속도로 이동하므로 모듈은 Anchor와 Tag 사이의 거리를 정확하게 계산할 수 있습니다. 이후 거리 정보는 UART 인터페이스 에서 AT 명령을 사용해 읽을 수 있습니다.

이 구성에서는 두 개의 모듈을 사용했습니다:

  1. 하나는 Anchor
  2. 로 구성하고, 다른 하나는 Tag

로 구성했습니다. 모듈이 통신하면 Anchor는 Tag까지의 거리를 지속적으로 측정하고, 그 값을 직렬 인터페이스를 통해 보고합니다.

이를 통해 마이크로컨트롤러가 측정된 거리를 읽고 추적, 내비게이션 또는 자동화와 같은 애플리케이션에 사용할 수 있습니다.




STEP 3. 구성 및 AT 명령


구성 및 AT 명령


구성 및 AT 명령


RYUW122-Lite 모듈은 모든 UART 인터페이스를 통해 AT 명령을 사용하여 구성할 수 있습니다. 모듈을 완전히 이해하고 고급 기능을 살펴보려면 제조업체에서 제공하는 전체 AT Command Guide를 읽는 것이 좋습니다.

이 글에서는 기본 구성에 필요한 몇 가지 필수 AT 명령만 보여 드리겠습니다.

직렬 터미널을 통해 특정 명령을 전송하면 다음을 구성할 수 있습니다:

• 모듈 역할(Anchor / Tag)

• 통신 매개변수

• 작동 모드

• 네트워크 구성

• RSSI 활성화/비활성화

• 출력 전력

• 기타 다양한 설정


AT 명령을 전송할 때는 다음을 사용할 수 있습니다:

• Arduino Serial Monitor

• USB-to-TTL 어댑터

• 마이크로컨트롤러 UART 인터페이스


이제 구성을 위해 USB-to-TTL 변환기와 RYUW122-Lite 모듈을 연결하는 방법을 살펴보겠습니다.

USB-to-TTL 변환기 RYUW122_Lite

3.3V VDD

TX RXD

RX TXD

GND GND


보시다시피 두 장치 사이의 표준 UART 연결일 뿐입니다.

배선을 완료한 후 USB-to-TTL 변환기를 PC에 연결하고 직렬 모니터를 엽니다.

이 모듈의 기본 UART 보드레이트는 115200이므로 직렬 터미널을 다음 설정으로 구성합니다:

• 보드레이트: 115200

• 줄바꿈: NL 및 CR 모두

이제 다음 명령을 입력합니다:

AT

모듈이 다음과 같이 응답하면:

+OK

연결이 정상적으로 작동하고 있으며 AT 명령을 사용하여 모듈을 구성할 준비가 된 것입니다.


Anchor 및 Tag 모듈의 AT 명령 설정-

긴 형식의 YouTube 영상에서 전체 구성 과정을 자세한 설명과 함께 보여 드렸습니다. 설정과 명령을 더 잘 이해하려면 다음 링크에서 영상도 시청할 수 있습니다: 👉 ( https://youtu.be/WTmuCWi43rc )

다음 AT 명령을 사용하여 한 모듈을 Anchor로 구성합니다.

________________________________________

통신 테스트

AT

이 명령은 모듈이 AT 명령에 응답하는지 확인합니다.

연결이 올바르면 모듈은 다음과 같이 응답합니다:

+OK

________________________________________

모듈을 Anchor로 설정

AT+MODE=1

이 명령은 모듈을 Anchor 모드로 설정합니다.

모드를 확인하려면 다음을 전송합니다:

AT+MODE?

예상 응답:

+MODE=1

________________________________________

모듈 주소 설정

AT+ADDRESS=AKASH002

이 명령은 모듈에 주소 ID를 할당합니다.

주소를 확인하려면 다음을 전송합니다:

AT+ADDRESS?

참고:

각 모듈은 서로 다른 주소를 가져야 합니다. 그렇지 않으면 거리 측정 시스템이 제대로 작동하지 않습니다.

________________________________________

RSSI 보고 활성화

AT+RSSI=1

이 명령은 RSSI 보고를 활성화합니다.

설정을 확인하려면 다음을 전송합니다:

AT+RSSI?



다음 AT 명령을 사용하여 다른 모듈을 Tag로 구성합니다.

________________________________________

통신 테스트

AT

이 명령은 모듈이 AT 명령에 응답하는지 확인합니다.

연결이 올바르면 모듈은 다음과 같이 응답합니다:

+OK

________________________________________

모듈을 Tag로 설정

AT+MODE=0

이 명령은 모듈을 TAG 모드로 설정합니다. 모듈의 기본 모드는 TAG(0)이지만, 항상 이를 확인하는 것이 좋습니다.

모드를 확인하려면 다음을 전송합니다:

AT+MODE?

예상 응답:

+MODE=0

________________________________________

모듈 주소 설정

AT+ADDRESS=AKASH001

이 명령은 모듈에 주소 ID를 할당합니다.

주소를 확인하려면 다음을 전송합니다:

AT+ADDRESS?

참고:

여기서는 Tag 모듈에 다른 주소를 설정했습니다. 그렇지 않으면 거리 측정 시스템이 제대로 작동하지 않습니다.

________________________________________

RSSI 보고 활성화

AT+RSSI=1

이 명령은 RSSI 보고를 활성화합니다.

설정을 확인하려면 다음을 전송합니다:

AT+RSSI?



수동 AT 명령을 사용한 거리 측정 테스트

USB-to-TTL 컨버터와 수동 AT 명령을 사용하여 두 모듈 간의 거리 측정을 테스트할 수도 있습니다.

먼저, 앞서 설명한 것과 동일한 핀 연결 및 시리얼 모니터 설정을 사용하여 동일한 USB-to-TTL 컨버터로 Anchor 모듈을 PC에 연결합니다.

연결이 준비되면 시리얼 모니터에서 다음 명령을 전송합니다:

AT+ANCHOR_SEND=AKASH001,2,AB

여기서:

• AKASH001 → Tag 모듈의 8바이트 ASCII 주소

• 주소가 올바르지 않으면 Anchor는 어떤 응답도 수신하지 못합니다.

통신에 성공하면 Anchor는 다음과 같은 응답을 수신합니다:

+ANCHOR_RCV=AKASH001,0,,80 cm,-70

다음과 같습니다:

• 80 cm → 두 모듈 사이의 거리

• −70 → 수신 신호의 RSSI(dBm 단위)

이를 통해 두 모듈이 올바르게 통신하고 거리 측정이 제대로 작동하는지 빠르게 확인할 수 있습니다.




STEP 4. 회로 설명


회로 설명


지금까지는 AT 명령을 수동으로 전송하고 반환된 응답에서 거리 및 RSSI 값을 직접 읽었습니다. 그러나 이 모듈을 실제 프로젝트에서 사용하려면 UART를 통해 모듈과 통신할 마이크로컨트롤러가 필요합니다. 마이크로컨트롤러는 AT 명령을 자동으로 전송하고, 응답을 읽고, 데이터를 처리한 다음 시리얼 모니터나 디스플레이와 같이 보다 사용자 친화적인 방식으로 결과를 표시할 수 있습니다.

제 구성에서는 마이크로컨트롤러를 사용하여 다음 작업을 수행했습니다:

• 모듈에 명령 전송

• 거리 측정 데이터 수신

• 수신 데이터 처리 및 표시

Tag 모듈에는 마이크로컨트롤러가 필요하지 않습니다. VDD 및 GND 핀을 통해 3.3V 전원 공급 장치로 전원을 공급하기만 하면 됩니다. 명령을 전송하고 응답을 읽는 Anchor 모듈에만 마이크로컨트롤러가 필요합니다.

여기서는 ESP32를 마이크로컨트롤러로 사용했습니다. 이 모듈은 UART 통신과 전원 공급만 필요하므로 회로는 매우 간단합니다. 또한 필요한 경우 모듈을 물리적으로 리셋할 수 있도록 마이크로컨트롤러의 추가 GPIO 핀 D5를 모듈의 NRST(리셋) 핀에 연결했습니다.

테스트 중 Arduino Nano와 함께 모듈을 사용했을 때는 리셋 핀을 사용하지 않아도 정상적으로 작동했습니다. 그러나 ESP32 또는 Raspberry Pi Pico와 함께 사용할 때는 setup 함수에서 Serial.begin() 이후 NRST 핀을 한 번 트리거해야 했습니다. 그렇지 않으면 모듈이 제대로 시작되지 않았습니다.

기억해야 할 중요 사항

1. 모듈은 3.3V 로직으로 작동합니다.

2. 5V 마이크로컨트롤러를 사용하는 경우 반드시 로직 레벨 시프터를 사용해야 합니다.

3. 안정적인 작동을 위해 깨끗하고 잡음이 없는 전원 공급 장치를 사용하는 것이 좋습니다.





STEP 5. 코드


이 코드를 복사하여 ESP32에 업로드합니다. 배선이 올바르면 Serial Monitor 및 OLED Display에서 수신 데이터를 확인할 수 있습니다.


#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// UART2 for UWB
HardwareSerial UWB(2);

#define RXD2 16
#define TXD2 17

String tagID = "";
int distanceCM = 0;
int rssiValue = 0;

unsigned long lastPingTime = 0;
unsigned long lastResponseTime = 0;

const unsigned long pingInterval = 1000; // 1 second
const unsigned long timeoutLimit = 1000; // 1 second timeout

void setup() {
Serial.begin(115200);

pinMode(5, OUTPUT);
digitalWrite(5, LOW);
delay(100);

UWB.begin(115200, SERIAL_8N1, RXD2, TXD2);
delay(100);

digitalWrite(5, HIGH);


if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED failed");
while(1);
}

display.clearDisplay();
display.setRotation(2);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("UWB Anchor Ready");
display.display();

delay(2000);
display.clearDisplay();
}

void loop() {

unsigned long currentMillis = millis();

// Send ping every second
if (currentMillis - lastPingTime >= pingInterval) {
sendPing();
lastPingTime = currentMillis;
}

// Read incoming data
while (UWB.available()) {
String line = UWB.readStringUntil('\n');
line.trim();

Serial.println("RAW RX: " + line);

if (line.startsWith("+ANCHOR_RCV=")) {
parsePacket(line);
lastResponseTime = millis();
updateDisplay();
}
}

// Check timeout
if (millis() - lastResponseTime > timeoutLimit) {
showTagLost();
}
}

void sendPing() {
String cmd = "AT+ANCHOR_SEND=AKASH001,1,Q\r\n";
UWB.print(cmd);
Serial.println("TX: " + cmd);
}

void parsePacket(String packet) {

// Remove prefix
packet.replace("+ANCHOR_RCV=", "");

// Example:
// AKASH001,0,,57 cm,-62

int firstComma = packet.indexOf(',');
tagID = packet.substring(0, firstComma);

int lastComma = packet.lastIndexOf(',');
rssiValue = packet.substring(lastComma + 1).toInt();

int cmIndex = packet.indexOf(" cm");
int secondLastComma = packet.substring(0, cmIndex).lastIndexOf(',');

distanceCM = packet.substring(secondLastComma + 1, cmIndex).toInt();

Serial.println("---- Parsed Data ----");
Serial.println("Tag ID: " + tagID);
Serial.println("Distance: " + String(distanceCM) + " cm");
Serial.println("RSSI: " + String(rssiValue));
Serial.println("---------------------");
}

void updateDisplay() {
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("RYUW122");
display.setTextSize(1);
display.print(" _Lite");
display.setCursor(90, 8);
display.print("REYAX");
display.setCursor(18, 17);
display.print("->by AkashWave RF");
display.setCursor(0, 24);
display.print("---------------------");
display.setCursor(0,33);
display.setTextSize(2);
display.print("D:");
display.print(distanceCM);
display.println("cm ");
display.setTextSize(1);
display.print("RSSI: ");
display.print(rssiValue);
display.println("dBm");
display.display();
}

void showTagLost() {
display.clearDisplay();
display.setCursor(0,0);
display.println("Tag Lost!");
display.display();
}

코드의 이 줄에서는 AT 명령 페이로드를 준비합니다:

String cmd = "AT+ANCHOR_SEND=AKASH001,1,Q\r\n";

여기서 AKASH001은 Tag 모듈의 주소입니다. Tag 모듈의 주소가 다르면 이 명령의 주소를 그에 맞게 업데이트해야 합니다.




STEP 6. 보정


보정


많은 거리 측정 시스템과 마찬가지로, 정확한 결과를 얻으려면 보정이 중요합니다 .

처음에는 두 모듈을 길이 30 cm인 자 의 양 끝에 배치하고 모듈이 보고하는 거리 값을 관찰했습니다. 측정된 거리가 약간 변동했지만, 여러 번 측정한 값의 평균을 사용했으며, 이 내용은 동영상에서도 보여 드렸습니다.

모듈이 보고한 평균 측정값은 26 cm였고, 실제 거리는 30 cm였습니다. 즉, 모듈이 실제 거리보다 약 4 cm 짧게 측정하고 있었다는 의미이므로, +4 cm 보정 오프셋 이 필요했습니다.

보정을 수행하려면 Anchor 모듈USB-to-TTL 컨버터 에 다시 연결합니다. 설정 과정에서 했던 것과 동일합니다. 배선과 시리얼 모니터 설정은 정확히 동일하게 유지됩니다. 그런 다음 필요한 보정용 AT 명령을 전송합니다.

AT+CAL=+4

이 명령은 측정된 거리를 보정하기 위해 +4 cm 보정 오프셋 을 적용합니다.

보정값을 확인하려면 다음을 전송합니다:

AT+CAL?


보정을 적용한 후 모듈은 약 30 cm를 보고하기 시작했습니다. 다만 RF 기반 측정에서는 정상적인 현상인 작은 변동은 여전히 있었습니다.

보정을 추가로 확인하기 위해 모듈을 길이 190 cm인 테이블의 양 끝에 배치했습니다. Anchor 모듈은 약 189~190 cm의 거리를 보고했으며, 이는 실제 거리와 매우 가까운 값입니다.

이를 통해 보정이 성공적으로 완료되었고 모듈이 거리를 상당히 정확하게 측정하고 있음을 확인할 수 있었습니다.




STEP 7. 실제 환경에서의 거리 범위 테스트


실제 환경에서의 거리 범위 테스트


실제 환경에서 모듈이 얼마나 멀리 작동할 수 있는지 확인하기 위해, 장애물 없이 서로를 직접 볼 수 있는 조건에서 두 모듈 사이의 거리 테스트를 수행했습니다. 이 모듈은 RF 통신을 사용하므로 장애물, 지형, 안테나 방향과 같은 요인이 성능에 큰 영향을 줄 수 있습니다.

이 실험에서는 Tag 모듈을 고정된 위치에 배치하고, 보고되는 거리와 RSSI 값을 지속적으로 측정하면서 Anchor 모듈을 멀리 이동시켰습니다.

테스트 결과

• 1000 cm 거리 — RSSI −90 dBm → 완벽하게 작동하며 문제 없음

• 3200 cm 거리 — RSSI −93 dBm → 잘 작동하지만 간헐적인 신호 손실 발생

• 4500 cm 거리 — RSSI −96 dBm → 안정적으로 작동하며 큰 문제 없음

• 6600 cm 거리 — RSSI −100 dBm → 작동하지만 신호 손실이 증가함. 여전히 사용 가능

• 7300 cm 거리 — 대부분의 시간 동안 신호가 끊김. 이 거리에서는 사용 불가

이 결과를 통해 가시거리 조건에서 모듈의 실제 작동 범위를 실용적으로 파악할 수 있습니다.


거리 범위 테스트 결과는 이 글에 제시되어 있지만, 실제 현장 실험과 실제 환경에서 모듈이 어떻게 작동했는지 확인하고 싶다면 전체 테스트 과정을 기록한 상세 동영상을 시청할 수 있습니다. 동영상 링크는 다음과 같습니다: 👉 ( https://youtu.be/WTmuCWi43rc )




STEP 8. 결론


결론


제어된 환경과 실제 환경에서 RYUW122-Lite UWB 모듈을 테스트한 결과, 이 모듈은 성능이 뛰어나고 사용하기 쉬운 거리 측정 솔루션이라는 것을 확인했습니다. 간단한 UART AT 명령을 사용해 모듈을 빠르게 구성할 수 있으므로 ESP32, Arduino 또는 Raspberry Pi Pico와 같은 마이크로컨트롤러에 쉽게 통합할 수 있습니다.


첫 번째 테스트에서 모듈은 처음에 작은 오프셋을 보였습니다(측정값 26 cm, 실제 거리 30 cm). +4 cm 보정을 적용한 후 측정값은 매우 정확해졌습니다. 190 cm 거리에서 수행한 검증 테스트에서는 약 189~190 cm의 측정값이 나왔으며, 이는 적절한 보정 후 모듈이 우수한 정확도를 달성할 수 있음을 보여 줍니다.


실제 환경의 거리 범위 테스트에서 모듈은 약 45 m까지 안정적으로 작동했으며, 약 66 m에서도 여전히 사용할 수 있었지만 패킷 손실이 증가하기 시작했습니다. 약 73 m를 넘어서자 통신이 불안정해졌고 테스트 조건에서는 대부분 사용할 수 없었습니다. 이는 특수 안테나나 최적화된 환경 없이 간단한 구성으로 이 모듈을 사용할 때의 현실적인 실제 작동 범위를 보여 줍니다.


종합하면 RYUW122-Lite는 실내 측위, 로보틱스, 근접 감지, 장치 간 거리 측정과 같은 애플리케이션에 적합한 소형의 실용적인 솔루션입니다. 적절히 설정하고 보정하면 일반적인 마이크로컨트롤러와 쉽게 인터페이스하면서 신뢰할 수 있는 단거리 거리 측정을 제공할 수 있습니다.


전체 구성, 설정 과정 및 실제 거리 범위 테스트 실험을 확인하고 싶다면 이 글 앞부분에 포함된 YouTube 동영상에서 전체 시연을 볼 수 있습니다. 링크는 다음과 같습니다: https://youtu.be/WTmuCWi43rc




STEP 9. 스폰서에게 감사드리며


스폰서에게 감사드리며


계속 진행하기 전에 먼저 감사의 말씀을 전하고 싶은 곳은 REYAX Technology 입니다. 테스트와 실험을 위해 이 모듈들을 보내 주셨습니다.

REYAX는 다음을 비롯해 다양한 유용한 무선 통신 모듈을 개발합니다:

  1. LoRa 모듈
  2. UWB 모듈
  3. GNSS 모듈
  4. BLE 모듈

이 모듈들은 다음 분야에서 널리 사용됩니다: IoT, 무선 통신 및 산업 분야.

REYAX의 더 많은 제품을 살펴보고 싶다면 공식 웹사이트를 확인해 보세요.

🏢 REYAX 공식 웹사이트:

➡️ https://reyax.com/

📦 REYAX RYUW122_Lite 제품 페이지:

➡️ https://reyax.com/products/RYUW122_Lite


이 영상에 소개된 모든 실험, 테스트, 결과 및 의견은 100% 실제이며, 정직하고 실제 현장 테스트를 기반으로 합니다.


원문: https://www.instructables.com/Reyax-RYUW122-Lite-Distance-Measurement-Module-How/

좋아요 0
게시판

회사명 공방유니언 주소 각 공방 주소 참조
사업자 등록번호 0000 대표 공방유니언 전화 019-60105846 팩스 0000 이메일 gongbangunion@gmail.com
통신판매업신고번호 0000 개인정보관리책임자 공방유니언
Copyright © 2017 공방유니언. All Rights Reserved.