레이저 거리측정기 LD30-S1R(LDL-T) → 컴패니언 컴퓨터 → 픽스호크 비행 컨트롤러

컴패니언 컴퓨터

이 가이드는 별도의 문서화 없이도 완벽하게 작동하는 통합 솔루션을 제공합니다:

LD30-S1R → 컴패니언 컴퓨터(라즈베리 파이/젯슨/안드로이드) → MAVLink → 픽스호크

여기에는 배선 다이어그램, 데이터 구문 분석 흐름, 바로 실행 가능한 Python 코드, Pixhawk 매개변수 설정, 지상 관제소 검증이 포함됩니다.

이 가이드를 단계별로 따라가면 시스템이 즉시 작동합니다.


1. 배선 연결(LD30 ↔ 컴패니언 컴퓨터 ↔ 비행 조종기) 1.


1.1 LD30-S1R ↔ 컴패니언 컴퓨터(UART)

컴패니언 컴퓨터가 될 수 있습니다:
USB-UART가 있는 라즈베리 파이/젯슨 나노/산업용 PC/안드로이드 디바이스

LD30-S1R컴패니언 컴퓨터(UART)
VCC(3.3-4.0V)3.3V 또는 외부 레귤레이터
GNDGND
TXD(오픈 드레인)RX
RXDTX
PWREN풀 하이(3.3V) 또는 GPIO
nRST연결되지 않음

참고: LD30은 3.3V TTL UART를 사용합니다. 하지 마십시오 5V TTL UART에 연결합니다.
TX는 개방형 드레인이며, Raspberry Pi 및 Jetson의 내부 풀업은 정상적으로 작동합니다.


1.2 컴패니언 컴퓨터 ↔ 픽스호크(MAVLink UART)

사용 TELEM1 / TELEM2 포트.

컴패니언 컴퓨터픽스호크(원격 포트)
TXRX
RXTX
GNDGND
  • 전송 속도: 115200
  • 프로토콜: MAVLink2

2. 컴패니언 컴퓨터에서 LD30-S1R 데이터 읽기

LD30은 바이너리 명령 프로토콜을 사용하여 통신합니다.
컴패니언 컴퓨터가 처리합니다:

  1. UART 포트 열기
  2. “연속 측정” 명령 보내기
  3. 로 시작하는 프레임 구문 분석 0xAA
  4. 추출 거리(mm)
  5. 미터로 변환
  6. MAVLink에 포장 거리_센서
  7. 픽스호크에 보내기

2.1 연속 측정 명령

LD30 사용 설명서(14.12절) 참조:

AA 00 00 20 00 01 00 04 25

2.2 데이터 프레임 형식

반환된 데이터에는 다음이 포함됩니다:

  • 거리: 4바이트(mm)
  • 신호 품질: 2바이트
  • 프레임 헤더: 0xAA

3. 파이썬 스크립트 완성(실행 준비 완료)

이 스크립트:

읽기 LD30
거리 구문 분석
mm → m로 변환
MAVLink 전송 거리_센서
실시간으로 Pixhawk로 데이터 스트리밍

다른 이름으로 저장 ld30_to_mavlink.py
함께 실행하세요:
python3 ld30_to_mavlink.py

시리얼 가져오기
pymavlink에서 마부틸 임포트
구조체 가져오기

# --- LD30 시리얼 포트 ---.
ld30 = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.1)

# 연속 측정 명령(매뉴얼 14.12부터)
CONT_MEASURE = bytes([0xAA,0x00,0x00,0x20,0x00,0x01,0x00,0x04,0x25])
ld30.write(CONT_MEASURE)

# --- 픽스호크에 MAVLink 연결 ---
mav = mavutil.mavlink_connection('/dev/ttyAMA0', baud=115200)

def send_distance_to_fc(distance_m):
    mav.mav.distance_sensor_send(
        0, # time_boot_ms
        3, # min_distance (cm)
        3000, # max_distance (cm)
        int(distance_m * 100), # 현재 거리 (cm)
        0, # 유형
        0, # id
        0, # 방향
        0 # 공분산
    )

버퍼 = 바이트열 배열()

True인 동안
    data = ld30.read()
    데이터가 아니라면
        계속

    버퍼 += 데이터

    # 최소 프레임 길이 = 12 바이트
    if len(buffer) >= 12:
        # 0xAA 헤더 찾기
        if buffer[0] != 0xAA:
            buffer.pop(0)
            계속

        # 고정 길이 프레임 구문 분석하기
        if len(buffer) >= 12:
            # 거리는 6~9바이트(빅엔디안)입니다.
            dist_bytes = buffer[6:10]
            distance_mm = struct.unpack(">I", dist_bytes)[0]
            distance_m = distance_mm / 1000.0

            print("LD30 거리:", distance_m, "m")
            send_distance_to_fc(distance_m)

            버퍼 = 바이트 배열() # 버퍼 지우기

4. Pixhawk 매개변수 구성(미션 플래너)

이동합니다:
구성 → 전체 매개변수 목록

다음을 설정합니다:

매개변수가치
RNGFND1_TYPE10 (MAVLink)
RNGFND1_MIN_CM3
RNGFND1_MAX_CM3000
RNGFND1_ORIENT0(정방향) 또는 25(하향)
rngfnd1_rmetric1
serial1_protocol2 (MAVLink2)
SERIAL1_BAUD115

TELEM2를 사용하는 경우 SERIAL2_*를 사용합니다.
TELEM3을 사용하는 경우 SERIAL3_*를 사용합니다.


5. 미션 플래너 / QGroundControl에서 LD30 데이터 모니터링


5.1 미션 플래너

로 이동합니다:

비행 데이터 → 상태 → 소나_범위 / rngfnd1_dist

또는:

Ctrl + F → MAVLink Inspector → DISTANCE_SENSOR

곧 알게 되실 겁니다:

  • 실시간 거리
  • 업데이트 빈도
  • MAVLink 스트림 ID

5.2 QGroundControl

탐색:

위젯 → 분석 도구 → MAVLink Inspector → DISTANCE_SENSOR


6. 전체 시스템 워크플로

            LD30-S1R
                │
           TTL UART 3.3V
                │
        ┌────컴패니언 컴퓨터────┐
        │ LD30 파싱 로직 │
        │ MAVLink 패키징 │
        └─────────┬──────────┘
                  MAVLink UART
                       │
                 픽스호크 비행 컨트롤러
                       │
        미션 플래너 / QGroundControl

공유:

더 많은 게시물

메시지 보내기

문의 양식 바닥글

맨 위로 스크롤

연락하기

아래 양식을 작성해 주시면 곧 연락드리겠습니다.
메커널 문의 양식

연락하기

아래 양식을 작성해 주시면 곧 연락드리겠습니다.
메커널 문의 양식