안녕하세요!! 드린이입니다 ::))
지난 포스팅을 통해서 아두이노(Arduino)의 디지털 출력을 이용하여 LED를 깜빡이는 예제에 대해 포스팅했었습니다. 오늘은 디지털 신호의 입력과 출력 가운데 초음파 센서에 대한 간단한 실행 예제를 통해서 후방감지기 즉, 거리측정기를 만들어 보도록 하겠습니다.
초음파?
초음파는 인간의 가청 주파수 즉, 귀로 들을 수 있는 소리보다 높은 20 MHz 이상의 높은 주파수를 가진 소리를 말하며, 초당 340m의 속도를 갖습니다. 참고로 사람의 귀로 들을 수 있는 음파의 주파수는 보통 16Hz ~ 20kHz의 사이라고 합니다.
초음파 센서?
초음파 센서는 이러한 초음파를 발신 및 수신할 수 있는 센서입니다. 또, 이를 이용하여 거리 측정, 사물 감지 등이 가능합니다. 흔히 사용되는 예를 보면 차량의 후방감지기가 있습니다. 또, 드론에서는 아래쪽 또는 전면부에 마치 스피커 모양의 초음파 센서를 볼 수 있습니다. 드론의 착륙 과정에서 지면과 일정 거리가 되면 잠시 멈추게 됩니다. 이런 현상은 초음파 센서를 이용해 거리를 측정하고 조종자에게 착륙하기에 안전한지 다시 한번 확인하라는 경고라 할 수 있습니다.
오늘 예제에서 다루어볼 초음파 센서는 HC-SR04 센서로 VCC와 GND 핀을 통해 5V, 15mA의 전원을 공급받아 동작하며, Trig 핀에 5V의 전원을 인가할 경우 초음파를 발신합니다. 발신된 초음파는 물체에 부딪혀 수신부로 돌아오게 되며, Echo 핀에서 5V를 출력합니다. 이러한 초음파 센서의 원리와 아래의 식을 웅용하면 거리를 측정할 수 있습니다.
거리 = 시간 × 속도
※초음파의 속도 초당 340m
즉, 거리 = (시간 × 340) ÷ 2
위의 식에서 2로 나누는 이유는 시간이 초음파가 측정 대상물까지 갔다가 온 왕복 거리의 시간을 입력했기 때문입니다.
아래의 그림과 같이 초음파 센서와 UNO 보드를 연결하고 코드를 입력합니다.
int trig = 1;
int echo = 2;
int distance;
void setup() {
Serial.begin(9600); // 시리얼통신 시작, 통신속도는 9600
pinMode(trig, OUTPUT); // trig핀(1번 핀)을 출력모드로 설정
pinMode(echo, INPUT); // echo핀(2번 핀)을 입력모드로 설정
}
void loop() { digitalWrite(trig, HIGH); //trig핀에 HIGH신호를 출력
delayMicroseconds(10); // 10마이크로초 동안 대기
digitalWrite(trig, LOW); // trig 핀에 LOW(0V)신호를 출력
distance = pulseIn(echo, HIGH) * 34 / 2 / 1000;
Serial.print(distance); // distance를 시리얼 모니터에 출력
Serial.println("cm"); // 문자열 cm을 시리얼 모니터에 출력
delay(100);
} |
코드 입력을 완료하고 보드에 업로드 하면, 시리얼 모니터에 초음파 센서에서 측정한 거리가 cm 단위로 계산되어 출력되는 것을 확인할 수 있습니다.
주요 함수를 보면
- Serial.begin (통신속도) : 시리얼 통신의 시작을 알리며,통신속도 설정
- Serial.println(값) : 시리얼 통신의 데이터를 시리얼 모니터에 출력 후 줄 바꿈
- pinMode(핀번호, 모드) : 사용할 디지털핀의 모드(입력 · 출력) 설정
- digitalWrite (핀번호, 신호) 설정 핀에 디지털 신호 출력
- digitalRead(핀번호) : 설정 핀에 디지털 신호를 입력
- pulseIn(핀번호, 신호) : 설정 신호를 다시 입력받을 때까지 걸리는 시간 측정
오늘은 아두이노(Arduino)의 초음파 센서를 이용하여 거리 측정기를 만드는 예제에 대해서 알아보았습니다. 다음 포스팅에서는 더 쉽고 간단한 예제를 가지고 돌아오도록 하겠습니다.
감사합니다::))