아두이노용 초저가 DIY 레이저 거리계: X-40 테이프 측정기 해킹
프로젝트 동기
아두이노 프로젝트에 빠르고 저렴한 레이저 거리계 모듈이 필요하지만, 전용 모듈(VL53L0X/VL53L1X)은 시야각(FOV)이 너무 넓고, 산업용 모듈은 고가입니다. 해결책: 중국산 "X-40" 레이저 줄자(약 $20 이하)를 분해해 내부 STM32 기반 레이저 모듈을 추출하고, 커스텀 펌웨어를 플래싱해 고속 UART 출력 모듈로 변환합니다.
성능 사양 (개조 후)
| 항목 | 사양 |
| 측정 범위 | 최대 37m (안정적 6m @ 60Hz, 저속 모드에서 40m) |
| 정확도 | 1-10mm (대상 색상, 거리, 반사율에 따라 변동) |
| 측정 속도 | 최대 ~60Hz (고속 모드), 기본 1Hz 미만 → 대폭 향상 |
| 모듈 크기 | 25×13×50mm |
| 통신 | UART TX 출력, 256000 baud (실제 보드레이트) |
| 전원 | 2.7-3.3V (내부 LDO로 3.5V 생성) |
⚠️ 중요 경고
- 원본 펌웨어 영구 손실: 이 개조 후에는 일반 레이저 줄자로 사용 불가능
- 모듈 리비전 호환성: 모든 X-40이 동일하지 않음. 지원되는 PCB 마킹: 512A, 701A, 703A(미검증), U85B(2021년 10월 추가 지원)
- 비지원 리비전: M88B / 88B (STM32F0 QFN-32 패키지, 2019년 말 이후 생산분) - 펌웨어 호환 안 됨
- 레이저 클래스 2 제품: 눈에 직접 조사하지 마세요.
필요한 부품 및 도구
| 구분 | 항목 | 비고 |
| 전자 부품 | 아두이노 나노 R3 | 메인 컨트롤러 |
| 0.96" OLED 128x64 (I2C/SPI) | Elecrow 제품 등, 결과 표시용 |
| X-40 레이저 줄자 | 분해 대상, PCB 마킹 확인 필수 |
| LM2596 DC-DC 강압 모듈 | 12V→3.3V 변환용 (모듈 전원용) |
| 도구 | 인두기 | 배선/핀 헤더 납땜용 |
| ST-LINK 프로그래머 | STM32 SWD 프로그래밍용 (NRST 핀 필수 권장) |
| 소프트웨어 | ST-LINK Utility (ST 공식) | 펌웨어 플래싱용 |
작업 단계
1단계: X-40 레이저 줄자 분해
- 케이스 나사 7개 풀기
- 내부 소형 레이저 모듈(PCB) 꺼내기 - 리본 케이블 분리
- PCB 마킹 확인: "512A", "701A", "703A", "U85B" 중 하나여야 함. "M88B"/"88B"면 중단
- 모듈 전원선(배터리 단자) 언솔더링
2단계: 레이저 모듈 프로그래밍 (ST-LINK 필요)
- 프로그래밍용 배선 납땜 (키보드 커넥터 핀아웃 참조):
- 핀 7-8 쇼트 → 모듈 파워업 인에이블
- GND, Vbat → 외부 3.3V 전원 (또는 LM2596 출력)
- GND, SWDIO, SWCLK, NRST → ST-LINK 연결
- ST-LINK Utility 설치 및 설정:
- Target → Settings → SWD 모드, 400kHz, Reset Mode: Hardware Reset
- NRST 핀 있는 프로그래머: 전원 켠 후 Connect
- NRST 핀 없는 저가 프로그래머: 전원 켠 후 NRST→GND 쇼트 → Connect → 즉시 NRST 분리
- Read Out Protection (RDP) 해제: Target → Option Bytes → RDP "Disabled" → Unselect All → Apply → 재부팅 후 Connect → 메모리가 0xFF로 채워진 것 확인
- 커스텀 펌웨어 HEX 플래싱:
https://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast
본인 모듈 리비전에 맞는 HEX 파일 선택 (512A/701A/703A/U85B별 상이)
3단계: 아두이노 연결 및 테스트
- 모듈 TX 패드에 와이어 납땜
- 1차 테스트: 모듈 TX → 아두이노 TX (임시), 3.3V 전원 공급 → 아두이노 빈 스케치 업로드 → 시리얼 모니터 250000 baud 설정 → 데이터 수신 확인
- 2차 테스트 (완전 구성): 모듈 TX → 아두이노 RX (핀 0, 업로드 시 분리 필요), OLED 연결 (I2C: A4/SDA, A5/SCL 또는 SPI) → 전체 스케치 업로드
4단계: 제로 캘리브레이션
- 흰색 물체를 모듈 앞 일정 거리에 고정 (이 거리가 '0' 기준점이 됨)
- 원래 줄자의 키보드 연결 후 최하단 버튼 누르기
- 모듈에서 삐- 소리 2번 (시작/끝), 약 10초 소요
- 이제 해당 거리를 0으로 하는 상대 거리 측정 가능
아두이노 스케치 데이터 파싱
모듈 출력 형식 (바이너리/텍스트 혼합): 프레임당 거리(mm), 진폭, 카운터 포함. 제공된 스케치는 이를 파싱해 OLED에 표시:
- COUNT: 수신 프레임 카운터
- AMPL: 신호 진폭 (로그 스케일 바 그래프로 표시)
- 거리: 미터/밀리미터 단위 큰 숫자로 표시
소스 코드 및 참고 자료
응용 아이디어
- 로봇/드론 고도/장애물 센서 (고속 60Hz 활용)
- 자동화 라인 물체 위치 감지
- 3D 스캐너/거리 매핑 (서보/스테퍼와 결합)
- 수위/적설량 모니터링
- 주차 보조/차고 진입 감지
비용 비교
| 방식 | 추정 비용 | 비고 |
| 이 프로젝트 (X-40 개조) | 약 $25-30 | 줄자 $20 + 아두이노/OLED/부품 |
| VL53L0X 모듈 | 약 $15-20 | FOV 넓음(27°), 최대 2m |
| TF-Luna / TFmini-S | 약 $35-50 | 정식 LiDAR, 좁은 FOV, 긴 거리 |
| 산업용 레이저 변위계 | $200+ | 고정밀, 산업 환경용 |
예산이 한정되고 좁은 FOV, 고속 측정이 필요한 메이커/연구자에게 매력적인 대안입니다.