아두이노 초음파 거리측정기 (I2C LCD 사용)

HC-SR04 초음파 센서 모듈과 I2C 모듈을 적용한 LCD 디스플레이를 결합하여 측정한 거리가 LCD에 출력되도록 만들었습니다.

HC-SR04

사람이 들을 수 있는 소리의 주파수는 약 20 ~ 20만Hz입니다. 20만Hz 보다 높은 음은 초음파라고 합니다. 초음파는 사람이 직접 들을 수 없습니다. 박쥐의 경우는 이 초음파가 반사되는 메아리를 이용하여 장애물을 피한다고 알려져 있습니다.
초음파는 직진성이 강하기 때문에 주변부의 메아리와 잘 혼동되지 않는다는 장점도 있습니다. 즉, 원하는 방향에서만 메아리가 되돌아 옵니다.

이와 같이 초음파을 이용하여 거리를 측정하는 센서는 많이 판매되고 있습니다.
가장 대표적인 HC-SR04는 인터넷 몰에서 흔하게 볼 수 있으며, 가격도 많이 저렴합니다.

I2C 모듈

LCD 디스플레이를 작동시키기 위해서는 상당히 많은 케이블을 연결해야 합니다.
LCD용 I2C 모듈은 통신 프로토콜을 변형시켜 적은 수의 케이블로도 LCD를 동작시키게 해 줍니다.
아래 사진의 왼쪽이 일반적인 LCD 디스플레이이고, 오른쪽이 I2C 모듈이 적용된 디스플레이입니다.

라이브러리 설치

I2C 모듈을 쉽게 제어하기 위한 라이브러리를 추가합니다. (이미 설치된 경우 건너뜁니다.)

  1. https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library에 접속하여 라이브러리 zip 파일을 다운로드 합니다.
  2. Arduino-LiquidCrystal-I2C-library-master.zip 라이브러리 파일을 아두이노에 추가합니다.
    아두이노 > 스케치 > 라이브러리 포함하기 > .ZIP 라이브러리 추가…

연결 방법

소스 코드

#include  
#include 

LiquidCrystal_I2C lcd(0x3F, 16, 2);

int trigPin = 3;
int echoPin = 2;

void setup()
{
  lcd.begin();
  lcd.backlight();

  pinMode(trigPin, OUTPUT); // 센서 Trig 핀
  pinMode(echoPin, INPUT);  // 센서 Echo 핀
}

void loop()
{
  digitalWrite(trigPin, HIGH);  // 센서에 Trig 신호 입력
  delayMicroseconds(10);        // 10us 정도 유지
  digitalWrite(trigPin, LOW);   // Trig 신호 off

  long duration = pulseIn(echoPin, HIGH);    // Echo pin: HIGH->Low 간격을 측정
  long distance = duration / 29 / 2;         // 거리(cm)로 변환

  char buf[20];
  snprintf(buf, sizeof(buf), "Distance %4d cm", distance);
  lcd.setCursor(0, 0);
  lcd.println(buf);

  delay(200);
}

만약 디스플레이가 제대로 표시되지 않으면, 소스 파일의 네번째 줄을 다음과 같이 수정합니다. (접속 어드레스 변경 작업)

LiquidCrystal_I2C lcd(0x29, 16, 2);

을 아래와 같이 수정

LiquidCrystal_I2C lcd(0x3F, 16, 2);

목차