본문 바로가기
코딩/아두이노

아두이노 초음파 센서(HC-SR04) 로 거리 측정을 해보자

by 어릴적 꿈은 미친과학자 2019. 11. 9.

안녕하세요. 전자공이 입니다.

본문에서는 초음파 센서를 이용해 아두이노로 거리를 측정하는 것을 해보려고 합니다.

 

 

 

초음파 센서

이번에 사용할 초음파 센서입니다.

HC-SR04 모델로 사양과 다르게 거리 측정 시 각이 잘 맞으면 5cm~120cm까지 거리 측정이 되는 모듈입니다.

 

 

센서 작동 설명

초음 차 센서가 동작하는 원리는 간단하게 위의 그림처럼 두 개의 철망으로 덮인 구멍이 있는데

이 구멍 중 1개는 초음파를 발생시키고 다른 한 구멍은 초음파가 부딪혀 되돌아오는 것을 받아들이는 구멍입니다.

보낸 초음파 각도가 돌아올 때 받아들이는 각도와 조금이라도 다르면 인식이 안되거나 거리가 갑자기 멀게 측정이 됩니다.

 

 

 

-준비물-

아두이노

브레드 보드

HC-SR04 초음파 센서

점퍼선

 

 

 

-회로 구성-

-----------------------------------------------------------------------------------------------------------------------------------

아두이노------------------<>------------------초음파 센서

pin2------------------<>------------------Trig

pin3------------------<>------------------Echo

VCC(5v)------------------<>------------------VCC

GND------------------<>------------------GND

-----------------------------------------------------------------------------------------------------------------------------------

 

 

 

-코딩 및 설명-

-----------------------------------------------------------------------------------------------------------------------------------

초음파 코딩 부분

int echo = 2; // echo는 아두이노 2번 핀 설정
int trig = 3; // trig는 아두이노 3번 핀 설정

void setup() {
  Serial.begin(9600); // 시리얼 9600바이트 속도 설정
  pinMode(trig, OUTPUT); // trig OUTPUT설정
  pinMode(echo, INPUT);  // echo INPUT 설정
}

void loop() {
  
    digitalWrite(trig, LOW); //trig를 LOW로
    digitalWrite(echo, LOW); //echo를 LOW로
    delayMicroseconds(2); //딜레이를 마이크로초 단위로 설정
    digitalWrite(trig, HIGH);  //trig를 HIGH로
    delayMicroseconds(10); //딜레이를 마이크로초 단위로 설정
    digitalWrite(trig, LOW);  //trig를 LOW로

    unsigned long duration = pulseIn(echo, HIGH);  //echo를 HIGH로
 
  float distance = ((float)(340 * duration) / 10000) / 2;   // 값을 계산하여 cm로 산출하기 위한 식
  
  Serial.print(distance); // 시리얼로 거리 값을 표시함
  Serial.println("cm"); // cm단위로 표시
  delay(1000); // 시리얼에 값이 표시되는 딜레이 설정
}

-----------------------------------------------------------------------------------------------------------------------------------

코드를 업로드하고 시리얼 모니터를 띄우게 되면 이렇게 표시된다.

 

시리얼

값이여러 개 떠있는 데 이는 내가 거리를 바꾸며 띄웠기 때문이다.

아마 위의 코딩 그대로 사용한다면 정신없이 값이 뜰 것이니 코드의 마지막 부 딜레이를 100에서 1000으로 놓고 거리가 잘 바뀌는지 보는 것도 좋다.

 

 

위의 방법으로 초음파 센서를 이용해 거리를 측정했다면 활용할 수 있는 부분도 많으니 응용을 해보는 것을 추천한다.

 

약간의 응용

아두이노 초음파 센서와 LED를 이용 하여 거리를 측정 해보자

 

아두이노 초음파 센서와 LED를 이용 하여 거리를 측정 해보자

안녕하세요. 전자공이 입니다. 본문에서는 초음파 센서를 이용해 아두이노로 거리를 측정을 하고 LED를 이용해 거리가 얼마나 줄어들었는지 눈으로 볼 수 있도록 만들어 보려고 합니다. -준비물- 아두이노 브레드..

nova1004.tistory.com

 

 

 

 

-아두이노 초음파 센서 끝-

댓글


page contents