1. 모듈 설명

이번에는 Time of Flight(TOF), 거리 측정 센서로 불리우는 것에 대해서 살펴보겠습니다.

이렇게 생겼으며, 실제로 사용할 때는 가운데 센서 부분의 보호 필름을 제거하고 사용하시면 됩니다.

(참고 구매처: https://www.aliexpress.com/item/TZT-VL53L0X-Time-of-Flight-ToF-Laser-Ranging-Sensor-Breakout-940nm-GY-VL53L0XV2-Laser-Distance-Module/32960610502.html)

모델명은 VL53L0X 입니다. 제가 구매한 것은 그것의 V2 버전으로 VL53L0X-V2 라고 하네요. 기본동작은 기존 것과 비슷합니다.


레이저를 이용해 거리를 측정하며, 최대 측정 거리는 2미터, 1mm 단위로 측정이 가능하다고 합니다.

I2C 통신을 사용합니다. (I2C 주소: 0x29)


핀 정보(pinout)

 VIN 

 작동 전압: 3~5V

 GND

 GND

 SCL

 I2C Clock 핀

 SDA

 I2C Data 핀

 GPIO1

 interrupt용. 센서가 데이타를 가르쳐 줄 준비가 되었을 때 사용. 

 XSHUT

 센서를 끄는 용도. 디폴트로 HIGH로 풀업되어 있습니다. 이 핀에 LOW를 주면 센서가 셧다운 모드에 들어간다고 합니다.

(참고: https://learn.adafruit.com/adafruit-vl53l0x-micro-lidar-distance-sensor-breakout/pinouts)


일반적으로는 위쪽 4개의 핀만 사용하면 충분할 것 같습니다.


2. 회로도 및 실제 연결도

일반적인 I2C 연결로 하면되니 회로도는 생략하겠습니다.


핀 연결 정보

 TOF 모듈

 아두이노 나노

 VIN

 5V 

 GND

 GND

 SCL

 A5 (나노의 SCL은 A5)

 SDA

 A4 (SDA)


연결 후 I2C 주소 확인을 위해 I2C Address Scan을 해봅니다.

0x29 로 나왔습니다.


3. 테스트용 예제 작성

먼저 스케치의 라이브러리 매니저에서 VL53 으로 검색하여 Adafruit의 VL53L0X 라이브러리를 설치해 줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "Adafruit_VL53L0X.h"
 
Adafruit_VL53L0X TOF = Adafruit_VL53L0X();
 
void setup() {
  Serial.begin(9600);
  Serial.println("VL53L0X test");
 
  // 일반적으로는 I2C 주소와 디버그 모드 설정값을 넘겨줘서 시작.
  // boolean Adafruit_VL53L0X::begin(uint8_t i2c_addr, boolean debug ) 
  
  if (!TOF.begin()) { // VL53L0X 기본 I2C 주소:0x29, 디버그 모드:false로 센서 준비.
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
}
 
 
void loop() {
  VL53L0X_RangingMeasurementData_t measure; // 측정값을 담을 구조체 변수
    
  Serial.print("Reading a measurement... ");
  
  TOF.rangingTest(&measure, false); // true를 주면 디버그용 데이터를 받아옴
 
  // 이번 측정의 상태값. 장치 의존적인 값. 일반적으로 4면 에러. 0이면 측정값이 정상임을 나타냄.
  if(measure.RangeStatus != 4) {  
    Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
  } 
  else {
    Serial.println(" out of range ");
  }
    
  delay(1000);
}
cs

예제는 추가한 라이브러리의 vl53l0x 예제를 참고해서 작성했습니다.


4. 결과



레이저를 사용하는 것이라 그런지 꽤나 정확합니다. 초음파센서를 이용한 거리측정과는 비교가 안되네요.

역으로 레이저를 사용하기에 센서의 방향이나 물체의 굴곡 등에 민감하게 영향을 받습니다.


5. 마무리

짧은 거리의 측정에 있어서는 최선의 선택이 될 모듈입니다. 라이브러리도 잘 되어 있어서 사용법도 간단한 편에 속한다고 생각합니다.

드디어 원하던 부품들이 모였으니 3개월 전에 시작했던 프로젝트를 다시 시도해 봐야겠습니다.

'아두이노' 카테고리의 다른 글

[모듈] 3색 신호등 LED  (0) 2019.05.07
[모듈] 옥토퍼스 2 채널 Tracking 모듈  (0) 2019.04.29
[모듈] 동작감지 센서  (0) 2019.04.23
[모듈] 물 수위 센서  (0) 2019.04.22
[모듈] BMI160 6축 센서  (0) 2019.04.22

+ Recent posts