산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino용 저렴한 레이저 거리 측정기 만들기

구성품 및 소모품

Arduino Nano R3
× 1
Elecrow OLED 0.96'' 128x64
× 1
X-40 레이저 줄자
× 1
LM2596 DC-DC 모듈
× 1

필요한 도구 및 기계

납땜 인두(일반)
ST-LINK 프로그래머

앱 및 온라인 서비스

STMicroelectronics ST-LINK 유틸리티

이 프로젝트 정보

Arduino 프로젝트를 위한 빠르고 저렴한 레이저 거리 측정기 모듈이 필요하십니까?

물론이 작업에 특수 모듈을 사용할 수 있지만 대부분은 큰 비용이 듭니다. VL53L0X/VL53L1X 모듈은 저렴하지만 시야가 매우 넓습니다.

그래서 해결책을 찾았습니다. 저렴한 "X-40" 레이저 줄자를 레이저 거리 측정기로 사용하는 것입니다. 이 장치의 가격은 20달러 이하이며 최대 40m의 거리를 ~3mm의 정확도로 측정할 수 있습니다. 그러나 두 가지 문제가 있습니다. 테이프에서 판독값을 얻을 수 있는 방법이 없고 측정이 느립니다(1Hz 미만).

그 문제를 해결하기 위해 나는 그 레이저 줄자를 리버스 엔지니어링하고 레이저 거리 측정기 모듈의 STM32 MCU용 펌웨어를 작성했습니다. 측정 속도는 저에게 중요했으며 ~60Hz에 도달할 수 있지만 최대 안정 거리는 ~6m로 감소했습니다(최대 최대 범위는 37m이지만 테스트하지 않았습니다).

거리 측정 정확도는 대상 색상과 거리에 따라 1mm에서 10mm까지 다를 수 있습니다.

모듈 크기:25x13x50mm.

중요 알림:원래 펌웨어를 잃게 되므로 나중에 장치를 레이저 테이프 측정기로 사용할 수 없습니다!

"X-40" 레이저 줄자는 레이저 거리 측정기 모듈의 다른 버전을 가질 수 있으며 내 펌웨어는 그 중 일부만 지원합니다!

"X-40"은 이러한 모듈이 있는 레이저 줄자의 유일한 이름이 아닙니다. 적절한 모듈이 있는 여러 다른 중국 레이저 줄자가 있다는 것을 알고 있습니다.

1단계:레이저 줄자 분해

레이저 거리 측정기 모듈을 얻기 위해 레이저 줄자를 분해합시다.

케이스에서 나사 7개를 풀어야 합니다.

분해된 레이저 줄자:

장치 케이스 내부에 작은 레이저 거리 측정기 모듈이 있습니다. 모듈에서 리본 케이블을 분리하고 케이스에서 모듈을 제거해야 합니다.

모듈은 "701A"로 표시됩니다. 내 펌웨어는 "512A" 및 "701A" 모듈 버전만 지원합니다. 여러 사용자가 "703A" 모듈도 작동함을 확인했습니다(테스트하지 않았습니다).

UPD 11/2019:
주의:최신 "x-40" 레이저 줄자는 "M88B" 모듈과 함께 제공되는 것으로 나타났습니다. 마킹은 MCU 근처 PCB에 "88B"입니다. 해당 모듈은 STM32F0 MCU(QFN-32 패키지 포함)를 기반으로 합니다. 내 펌웨어에서 해당 모듈을 지원하지 않습니다!

UPD 10/2021:
주의: U85B 모듈 지원 추가 :링크 참조! 최신 유형의 레이저 줄자에 사용됩니다.


귀하의 모듈이 지원되는 경우 모듈에서 전력선을 납땜 해제해야 합니다.

2단계:레이저 거리 측정기 모듈 프로그래밍

필요한 기능을 얻으려면 모듈의 MCU에 특수 펌웨어를 작성해야 합니다.

1. 먼저 MCU를 프로그래밍하기 위해 몇 가지 와이어를 납땜해야 합니다. 핀아웃은 그림에 표시됩니다:

키보드 커넥터의 핀 7-8을 연결합니다. 전원을 켜는 데 필요합니다.

라인 "GND" 및 "Vbat"는 전원에 연결되어야 합니다. 전원 전압 범위는 +2.7...+3.3V입니다. 모듈에 전원이 공급될 때 "Vdd" 라인에 +3.5V가 있어야 합니다.

라인 "GND", "SWDIO", "SWCLK", "NRST"는 ST-LINK 프로그래머에 연결되어야 합니다. "NRST" 라인은 매우 중요합니다. MCU의 원래 펌웨어는 잠겨 있으므로 이 라인은 MCU를 프로그래밍 모드로 전환하는 데 필요합니다.

일부 프로그래머는 이 라인을 가지고 있고 일부(저가)는 그렇지 않지만 이 문제에 대한 해결 방법이 있습니다.

또한 일부 프로그래머(예:원래 "ST-LINK/V2")는 프로그래머의 "VCC/TVCC" 라인과 연결하기 위해 "Vbat" 라인이 필요합니다.

연결 예(이 프로그래머는 "NRST" 행이 없음):

2. "ST-LINK 유틸리티"를 PC에 설치합니다. 해당 소프트웨어를 사용한 경험이 없다면 웹에 튜토리얼이 많이 있습니다.

유틸리티를 구성해야 합니다(대상 -> 설정):

프로그래머가 "NRST" 출력을 가지고 있다면 전원을 켜고 유틸리티에서 "Target -> Connect"를 누르기만 하면 됩니다.

해당 줄이 없으면 다음 단계를 수행해야 합니다.

<울>
  • 전원을 켭니다.
  • 모듈의 "NRST" 라인을 GND에 연결합니다.
  • 유틸리티에서 "대상 -> 연결"을 누르십시오.
  • GND에서 "NRST" 회선을 빠르게 분리합니다.
  • 유틸리티는 연결을 표시해야 합니다.
  • 그런 사진을 받아야 합니다:

    3. MCU 플래시는 읽기를 위해 잠겨 있으므로 "읽기 보호"를 비활성화해야 합니다. 이 단계에서 원본 펌웨어를 잃게 됩니다!

    대상 -> "옵션 바이트" 메뉴를 엽니다. 다음과 같은 설정이 있어야 합니다.

    "Read Out Protection"을 "Disabled"로 전환하고 "Unselect all" 버튼을 누른 다음 "Apply" 버튼을 누릅니다. 전원을 차단하여 모듈을 다시 시작하십시오.

    대상 -> 연결을 누릅니다. 로그 창에 성공적인 연결에 대한 정보가 있어야 하고 0xFF로 채워진 메모리 내용이 표시되어야 합니다. 이제 MCU에 맞춤형 펌웨어를 로드할 수 있습니다.

    4. 필요한 펌웨어는 다음 위치에 있습니다. https://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast

    모듈에 적합한 HEX 파일을 선택하고 "ST-LINK 유틸리티"를 사용하여 MCU 플래시에 다운로드하십시오.

    3단계:레이저 거리 측정기 모듈을 Arduino에 연결

    보드의 TX 패드에 와이어 또는 일부 커넥터를 납땜해야 합니다.

    아래의 연결 회로도를 참조하십시오.

    먼저 거리 측정기 모듈이 제대로 작동하는지 확인해야 합니다. 이 단계에서는 OLED 디스플레이를 Arduino에 연결할 필요가 없습니다. 레이저 거리 측정기 모듈의 TX 라인을 Arduino의 TX 라인에 연결하고 모듈의 전원 라인을 +3V 전원에 연결하기만 하면 됩니다.

    빈 스케치를 만들고 Arduino에 로드합니다. Arduino IDE에서 "직렬 모니터"를 엽니다. 전송 속도 선택:250000

    거리 측정기 모듈이 제대로 작동하면 동일한 데이터를 얻을 수 있습니다.

    사실, 이 테스트에는 특수 USB-UART 변환기를 사용하는 것이 좋습니다. 유틸리티에서 256000 baudrate를 선택합니다(x-40 MCU의 실제 baudrate입니다).

    둘째, 디스플레이와 함께 전체 회로도를 조립해야 합니다.

    레이저 거리 측정기 모듈의 TX 라인을 Arduino의 RX 라인에 연결합니다(Arduino에 프로그램을 로드하는 동안 해당 와이어를 분리해야 함).

    모든 것이 제대로 작동하면 동일한 결과를 얻을 수 있습니다.

    3개의 숫자로 표시되는 것을 볼 수 있습니다:

    <울>
  • "COUNT" - 수신된 값의 카운터
  • "AMPL" - 신호의 진폭. 아래의 기호 막대("<--->")는 진폭을 그래픽으로 표시합니다(로그 스케일).
  • 가장 큰 값 - 미터 및 밀리미터 단위의 거리
  • 4단계:영점 보정

    처음 시작한 후 레이저 거리 측정기 모듈을 보정해야 합니다.

    모듈에서 특정 거리에 흰색 물체를 배치해야 합니다. 이 물체까지의 거리는 거리계 모듈의 경우 0 거리가 됩니다. 보정 프로세스를 시작하려면 레이저 줄자에서 키보드를 연결하고 가장 낮은 버튼을 눌러야 합니다. 모듈은 보정 시작 시와 종료 시 두 번 신호음을 울립니다(보정 시간은 거의 10초임).

    이제 이 레이저 거리 측정기 모듈을 사용할 수 있습니다.

    링크:

    1. Github - 리버스 엔지니어링 결과 및 소스 코드.

    2. Habr.com - Google에서 레이저 줄자 역공학 프로세스에 대한 기사를 번역했습니다.

    제 영어에 대해 죄송합니다. 저는 영어를 사용하지 않는 국가에서 왔습니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • Arduino 스케치
  • Arduino 스케치Arduino
    미리보기 없음(다운로드만 가능).
    깃허브
    레이저 테이프용 코드https://github.com/iliasam/Laser_tape_reverse_engineering

    회로도

    브레드보드 조립도

    제조공정

    1. OpenSensor의 공기질 측정 방법
    2. 레이저 절단기는 무엇에 사용됩니까?
    3. 학교를 위한 SMART 온도 모니터링
    4. Arduino용 8비트 IO 포트 라이브러리
    5. Arduino용 64키 프로토타이핑 키보드 매트릭스
    6. Arduino Nano용 TFT Shield - 시작
    7. Arduino용 절연 아날로그 입력
    8. 저가용 Arduino Breath 컨트롤러(USB-MIDI)
    9. 멋진 실내 내비게이션용 로봇
    10. 제조 분야의 5G 사례 만들기