카테고리 없음

아두이노 초음파센서 활용 예제

abc0123 2017. 9. 15. 10:48
반응형

아두이노 초음파센서

초음파를 이용해서 거리를 측정할 수 있는 초음파센서에 대해서 알아보고 이 녀석을 활용한 예제를 만들어볼 텐데 예제는 우리 일상생활에서도 자주 듣는 소리 중의 하나인 자동차 후진 경고음 정도로 이해하면 좋을듯하다. 자동차 후진을 할 때 뒤쪽에 사람이나 물건이 있으면 소리를 내주다가 그것과 가까워질수록 그 주기가 짧은 아주 다급한(?) 경고음이 울리는 걸 누구나 들어봤을 것이다. 직접 만들어보면서 그 원리를 이해해보자.

 

초음파센서

 

▲ 초음파센서는 위 사진처럼 생겼는데 마치 ET의 눈 같다. ㅎㅎ 하지만 꽤 유용하게 쓰이는 녀석이니 우습게 생각하지 말고 신중하게 관찰을 해보자. 사진에서 확인할 수 있듯이 두 개의 커다란 눈(?)과 네 개의 작은 다리(?)들이 있는데 한쪽 눈에서 초음파를 쏘고 반사돼서 돌아오는 신호를 다른 한쪽에서 받아서 그 거리를 측정하는 역할들을 하며 아래쪽에 작은 다리는... 사진을 자세히 보면 그 역할들이 글자로 쓰여있는 걸 알 수 있다. 위 사진을 기준으로 가장 왼쪽은 VCC로 (+)이며 가장 오른쪽은 GND인 (-)이다. 즉, 양쪽 두 개는 전류 담당이고 가운데는 초음파를 쏘는 Trig와 그 신호를 받아들이는 Echo로 그 값을 아두이노 보드에 보내는 역할들을 한다.

 

 

이렇게 그 구조를 살펴봤으니 예제를 만들어볼 텐데 이 초음파센서와 앞쪽 글에서 정리했던 피에조스피커를 연결해서 자동차 후방 센서와 같이 사물의 거리에 따라서 각각 소리가 달라지는 걸 확인해보자.

 

자동차후방센서

 

▲ 준비물은 초음파센서와 피에조 스피커 그리고 아두이노 보드 및 빵판과 적당한 케이블 등이다. 이제 이것들로 회로를 만들어본다.

 

회로전체

 

▲ 먼저 디지털 핀부터 보자면 빨간선으로 GND 음극이 나갔으며 12번 초록색 선을 통해서 피에조 스피커로 전기 신호를 보낼 것이다. 그리고 그라운드에서 흰색과 노란색 선을 통해서 각각 피에조 스피커와 초음파센서로 음극을 보내고 있으며 센서의 양극(+)은 검은색 선을 이용해서 따로 5V를 공급해주고 있다.

 

빵판쪽

 

▲ 그리고 디지털 핀 8번과 9번에서 각각 초음파 센서의 TRIG와 ECHO로 주황색선과 파란색 선을 이용해서 연결을 했다. (이런 회로 만드는 건 몇 번 해보니 이제 많이 익숙해졌다.) 다음은 이 녀석들을 제어할 스케치 프로그램을 작성해보자.

 

 

거리에따른코딩

 

▲ 먼저 초음파를 쏘고 받아들일 TRIG와 ECHO를 각각의 핀번호 상수로 선언(1)을 했으며 setup() 구간(2)에서는 각각의 핀을 OUTPUT과 INPUT으로 초기화를 했다. 앞에서도 잠깐 언급했듯이 TRIG는 신호를 쏘기 때문에 OUTPUT으로 ECHO는 신호를 받아들이기 때문에 INPUT으로 설정을 했다.

 

그리고 반복 구간인 loop() 함수에서는 초음파센서를 끄고 켜기를 반복(3) 해서 초기화하고 있으며 초음파가 반사되는 거리를 계산해서 저장하기 위해서 distance라는 이름의 long 변수를 선언(4) 하고 거리를 저장하고 있다. (거리 계산하는 방법에서 나눈 값 58.2는 각 센서별로 그 값이 다르기 때문에 해당 센서에 맞는 값으로 계산을 해야 한다.)

 

그리고 마지막으로 if 문을 활용해서 거리별로 다른 소리가 나도록 tone() 함수에 값을 전달하고 있다.(5) 전달된 값 중 12는 피에조 스피커가 연결된 디지털 핀 번호이며 두 번째 인자인 3000/ 2000 / 1000은 소리의 종류이다. 그리고 마지막 20은 음의 길이이다. 즉, 거리가 10/ 20 / 30 일 때 각각 다른 소리가 나도록 하고 있는 내용이며 0.2초마다 소리를 내기 위해서 delay 값에 200을 입력했다. 이제 이 소스 코드를 아두이노 보드에 업로드하고 테스트를 해보자.

 

 

▲ 마치 자동차 후방 센서와 같이 거리에 따라서 서로 다른 소리가 들리는 걸 확인할 수 있다.

 

이렇게 해서 아두이노 초음파센서의 기본 개념 및 간단한 예제를 만들어봤는데 이걸 활용하면 어떤 사물과의 거리에 따라서 다양한 물리적인 움직임도 만들 수 있을 거 같으니 앞으로 꽤 유용하게 사용할 녀석이 될 것 같다.

반응형