레이저 거리측정기 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 uses 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

공유:

더 많은 게시물

How Do Laser Distance Sensors Work

How Do Laser Distance Sensors Work?

Learn how do laser distance sensors work, including TOF, phase shift, and triangulation principles, with accuracy factors, comparisons, and real-world examples.

메시지 보내기

문의 양식 바닥글

맨 위로 스크롤

연락하기

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

연락하기

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