본문 바로가기

Arduino/응용 프로젝트(1학기)

초음파 센서를 이용한 후진보조센서 만들기

초음파 센서를 이용해서 차량의 후진보조센서를 만들어 보자

1. 초음파 센서란??

초음파 센서란 초음파 센서 내에 있는 파원에서 발사된 초음파 펄스가 측정물의 표면에서 반사되어 다시 초음파 센서로 되돌아올 때까지의 시간을 측정하여 측정 대상에 따른 정보를 얻는 방법을 사용 한다. 즉, 초음파를 송신 후 되돌아 올 때까지의 지연시간을 측정하는 방법을 사용 하는 것이다. 일반적으로 공기 중에서의 음속은 약 340m/s인 것을 이용하여 측정 시간의 반에 음속을 곱해서 거리를 알아낼 수 있다.

2. 아두이노와 초음파 센서를 이용한 거리측정

후진보조센서를 만들기 전 먼저 초음파 센서와 아두이노를 연동하는 법을 익혀보자. 아두이노에 사용할 초음파 센서 모델은 SRF05로 이 초음파 센서가 아두이노와 연결이 되는 모습은 아래와 같다.



 위의 초음파 센서를 보면 아두이노와 연결해야 하는 곳이 구멍이 뚫려 있는 것을 볼 수 있다.

이럴 때는 당황하지 말고 옆의 아두이노용 직각 행 핀 헤더를 이용해서 구멍에 맞도록 5개를 따로 떼어낸 뒤 초음파 센서와 납땜을 해서 브래드 보드에 연결을 하면 더 편리하게 초음파 센서를 사용할 수 있다.

 

다음은 초음파 센서와 아두이노 이용해 거리와 그 상태를 표시할 때 아두이노에 사용할 수 있는 코드이다.


이 코드는 아두이노와 초음파 센서를 이용해서 일정 범위의 거리에 따라 그 상태를 말해주는 것이다.


비록 이 코드가 길어보일 수도 있지만 반복되는 부분이 많아 그리 긴 코드는 아니다. 먼저 컴퓨터와 시리얼 통신을 할 포트를 설정을 해 준 뒤에 아두이노의 핀 중 하나를 초음파가 나가는 신호를 주는 핀으로 또 다른 핀은 초음파가 들어오는 신호를 받는 핀으로 설정을 한다. 그 다음에 초음파 센서를 이용해 나온 시간을 측정하여 물체까지의 거리를 계속적으로 측정하면 그 거리를 범위를 나눠 위험, 주의, 안전을 표시해 준다.

*위의 코드를 이용하면 아두이노와 컴퓨터가 서로 시리얼 통신을 하고 있기 때문에 시리얼 모니터를 이용해 실행 값들을 볼 수 있다.



3.자동차의 후진보조장치 만들기

이제 본격적으로 자동차의 후진보조센서를 만들어 보도록 하자. 자동차를 타 보면 후진을 할 때 물체와의 거리에 따라서 소리가 나는 주기가 달라지는 것을 알 수 있다. 우리가 초음파 센서를 이용해 후진보조장치를 만들 때는 피에조 부저와 부저가 울리는 주기를 이용해서 운전자에게 주의를 주도록 하자.

*피에조 부저란?


 (우리가 사용할 피에조 부저의 사진)

피에조 부저를 아두이노에 연결하는 방법은 아래를 참고하자.



다음은 코드를 살펴보도록 하자.

이 코드도 그리 긴 코드가 아니다. 위에 나와있는 아두이노와 초음파센서를 이용할 때 사용한 코드에서 각각의 상황에 따라 피에조 부저가 울리는 주기만 바꿔주면 그만이다. 따라서 위의 코드와 달리진 것은 피에조 부저를 사용할 핀을 정해준 것과 피에조 부저를 울리기 위해 사용한 코드이다. 각각의 상황에 따라 달라진 것은 duration을 다르게 설정해 준 것 뿐이다. 이 duration은 재생 시간으로써 위에서 말한 주기에 해당한다고 볼 수 있다.

   

(완성된 후진보조장치의 모습)

 

 

(후진보조장치의 작동 모습)

*동영상을 보실 때는 소리를 키우고 보시는게 이해하시기에 좋습니다.


4. 웹에 초음파 센서의 상태 업로드

위의 작업까지 손쉽게 할 수 있었다면 이번에는 웹에 초음파 센서의 값을 업로드 해 보자.(물론 이 작업은 따로 코딩도 필요가 없을 뿐더러 난이도가 높은 작업은 아니다.) 웹에 초음파 센서의 상태를 업로드 하는 것은 매우 간단하다. 먼저 웹에 업로드 할 때는 우리가 웹에 업로드를 할 수 있도록 도움을 주는 Bloom이라는 프로그램을 이용하자.



Bloom 프로그램의 역할은 시리얼 포트를 통해 받은 정보들을 오픈 TCP/IP 소켓 연결로 변환을 시키는 것이다. 옆에 그림에 나와있듯이 여러 시리얼 포트들을 통해 많은 기기가 연결된 host pc에서 Bloom 프로그램을 실행 시키면 다른 기기들에서 TCP/IP 연결을 통해 접근이 가능하도록 해 준다. 이런 점을 이용하여 초음파 센서의 값을 인터넷으로 보내 다른 컴푸터에서 볼 수 있도록 하자.






옆의 사진은 Bloom 프로그램을 실행 시켰을 때의 사진이다. 여기서는 TCP/IP 포트를 지정해 준 뒤에 컴퓨터와 연결이 되어 있는 시리얼 포트를 입력을 한다. 그리고 서로 통신을 할 통신 속도를 정해 주면 인터넷으로 초음파 센서의 값과 상태를 업로드 시킬 수 있다. 


(Bloom을 이용해 인터넷에 초음파 센서의 값과 상태를 올린 결과사진)



5. 결론 및 제언

 초음파 센서와 함께 피에저 부저를 이용하여 후진보조센서를 만들어 보니 초음파 센서가 거리를 표현하는데 오류가 잦은 것을 알게 되었고 이에 따라 소리가 잘 나지 않는 경우도 잦았다. 그 이유에 대해서 생각해 보니 초음파 센서가 거리를 측정하기 위해 초음파를 발생시킬 때 이 발생하는 초음파가 직선이 아닌 부채꼴 형태로 퍼져 나가면서 거리를 측정하는 원리를 이용하기 때문이었다. 즉 내가 원하는 사물이 아닌 다른 사물의 거리를 측정하는 경우가 발생하여 오차가 발생했다고 생각했다. 그래서 다음에는 직진으로 나아가며 사물을 측정하는 센서를 이용해서 더 정확하고 오차율이 적은 후진 보조 센서를 만들어 보고 싶다.


초음파 센서와 아두이노연결 방법 사진출처 

http://jheonk.tistory.com/category/%EC%A0%84%EC%9E%90%EA%B3%B5%ED%95%99/Arduino

피에조 부저 사진 출처

:http://www.planetarduino.org/?cat=404

Bloom 사진 출처

:https://sensormonkey.eeng.nuim.ie/index.php/site/page?view=support.bloom