본문 바로가기

아두이노 고성능 라이다 거리센서 LIDAR-Lite v4 LED

반응형

서론


아두이노 작품을 만들다 보니 거리를 측정해야하는 경우가 많았고, 그 중에서도 광범위하면서 비교적 정확하게 거리를 측정해야하는 경우가 많았습니다. 거리센서에는 여러가지 종류가 있으며, 각각의 센서들은 서로의 장단점이 존재하여 상황에 맞게 선택하는 것이 중요합니다. 아두이노에서 자주 사용되는 거리센서로는 다음 3가지가 있습니다.

초음파 거리센서

적외선 거리센서

라이다 거리센서

각 센서들의 장단점은 다음과 같습니다.

센서 장점 단점
초음파 거리센서 가격이 싸며, 근거리에서 비교적 정확함 거리 측정시 약간의 시간 딜레이가 있음
적외선 거리센서 거리 측정 시 시간 딜레이가 없음 초음파보다 측정 범위가 작음
라이다 거리센서 넓은 범위 측정 가능 비쌈

 

초음파 거리센서는 1~150cm 범위의 거리를 측정할 때 안성맞춤이며, 가성비가 좋은 것으로 알려져 있습니다. 단점으로는 음파를 사용하는 것이기 때문에 거리 측정 시, 시간 딜레이가 존재합니다. 따라서 실시간 고속 처리가 필요한 분야에서는 사용할 수 없으며, 또한 도플러 효과 때문에 움직이는 물체를 측정하는데 한계가 있습니다.

 

적외선 거리센서는 5 ~ 60cm 범위의 거리를 측정할 때 적절하며, 빛의 강도를 이용하여 거리를 측정하는 것이기에 시간적인 딜레이 없습니다. 또한 움직이는 물체와의 거리를 측정하는데도 적합하죠. 단점으로는 짧은 측정 범위이 있으며 또한 적외선의 영향을 많이 받는다는 것입니다.

 

라이다 거리센서는 빛의 왕복 주기를 계산하여 거리를 측정하는 방식입니다. 측정 범위는 대게 초음파보다 넓으며, 정확도는 1cm정도를 보입니다.

 

 

본론


제가 사용했던 센서는 라이다 거리센서이며, 레이저 대신 LED를 사용하기 때문에 눈의 건강에도 비교적 좋았습니다. 측정 범위는 5cm ~ 1200cm 정도였으며, 거리에 따라 다르지만 정확도는 보통 1cm를 보였습니다.

거리 측정 센서 Garmin LIDAR-Lite v4 LED [SEN-15776] / 디바이스마트 (devicemart.co.kr)

 

해당 제품은 I2C 통신으로 거리 정보를 제공하며, 다행히도 Adafruits에서 Library를 풀어 놨기에 쉽게 데이터를 얻을 수 있습니다. 

*주의* 해당 제품은 5v를 공급 받지만, 3.3v로 통신하기에 Level shifter가 필요합니다!

 

아두이노와의 연결은 다음과 같습니다

Sensor Level shifter Arduino Uno
5v   5v
SDA 3.3v <-> 5v A4
SCL 3.3v <-> 5v A5
GND   GND

SDA, SCL만 Level shifter를 거지고, 나머지 전원 선들은 바로 연결합니다.

 

 

코드는 다음과 같습니다.

#include <Wire.h>
#include "LIDARLite_v4LED.h"

LIDARLite_v4LED myLidarLite;

#define FAST_I2C

float  distance;
byte liddarLiteAddress = 0x62;

void setup() {
  // put your setup code here, to run once:
  pinMode(2, OUTPUT);
  pinMode(11, OUTPUT);
  ledOff();
  buzzerOff();

  // Initialize Arduino serial port
  Serial.begin(115200);

  myLidarLite.configure(0);

}

void loop() {

  if (myLidarLite.getBusyFlag() == 0)
  {
    // Trigger the next range measurement
    myLidarLite.takeRange();

    // Read new distance data from device registers
    distance = myLidarLite.readDistance();
  }
  Serial.print("Sensor distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  delay(100);


}

 

 

 

동영상


다음은 100cm 이하로 거리가 측정되었을 때, 부저와 LED를 On하는 영상입니다.

 

 

반응형