brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Dec 14. 2020

54. 열네 번째 장난감 : 아두이노 레이더 만들기

초음파 센서로 레이더 (실제로는 소나) 만들기.

초음파 센서를 이용하여 이미 여러 가지 장난감을 만들어 보았다.

사람이 가까이 가면 꼬리를 치는 강아지나 자율 주행 자동차 등이 그들이다.

이번에는 53번 글(PC 프로그램으로 아두이노 컨트롤 하기)에서 만들었던 구성을 가지고 레이더를 시뮬레이션하는 장치를 만들어 보려고 한다.

PC 쪽 코드는 앞서와 마찬가지로 Visual Studio와 C#으로 만들어서 이해하기 어렵겠지만 이러한 작품을 만들 수 있는 아이디어 만이라도 공유해 보려고 한다.

PC 화면에서는 다음과 같은 화면을 연출할 수 있다. 

마치 진짜 레이더의 화면을 보고 있는 느낌을 줄 것 같은 화면이다.


먼저 우리가 만들어 보려고 하는 장치는 엄밀히 말하자면 레이더가 아니라 레이더를 시뮬레이션하는 소나(Sonar, SOund Navigation And Ranging, 음파탐지기, 음향탐지기) 장치이다. 레이더는 마이크로파의 전자기파를 발사하지만 우리는 초음파를 발사하여 장애물을 검색하는 장치이기 때문이다.

장치는 앞선 글에서 사용한 장치와 동일하다. 단, 네오픽셀은 설치되어 있지만  사용하지 않았다.

레이더 화면을 구현하는 장치는 PC이기 때문에 아두이노 장치에는 간단히 초음파 센서와 서보모터만을 이용한 다.  


좌우로 회전하는 서보모터 위에 초음파 센서가 작동하고, 서보모터의 현재 각도와 장애물까지의 거리만을 시리얼 포트로 전달해 주면 된다. PC에서는 시리얼 포트로 전달된 이러한 정보를 화면상에 그래픽으로 보여주는 프로그램이 필요하게 된다.


어떻게 데이터를 전달하느냐까지만이 이번 이야기의 주제이기 때문에 아두이노 사이드의 코드를 가지고 설명해 보겠다.

서보모터는 9 번핀

초음파 센서의 Trig 핀은 10번 Echo 핀은 11번에 연결되어 있다.

서보모터는 20도에서 160도까지의 앞을 오가며 매 1도마다 앞에 있는 장애물의 거리를 측정하여 이를 PC에 보내게 된다.

현재까지 배운 방법은 Serial 통신을 통하여 보내는 방법뿐이므로 Serial.println 함수를 이용하여 데이터를 보내는 것이다.

구성은 각도가 커지는 경우에는 "+"를 앞세우고 작아지는 방향으로 움직일 때는 "-"를 앞세운다.

그리고 그 뒤를 따라 현재의 각도, 장애물의 거리를 순서대로 보내게 된다. 각 데이터의 사이에는 ";"를 넣어 데이터를 구분한다. 그런데 거리가 500cm 이상일 경우에는 거리 값을 -1로 지정하여 이 부분에서 오는 데이터는 무시한다.

이렇게 간단한 코드를 이용하여 데이터를 PC로 보내고 PC에서 이를 분석하여 레이더를 시뮬레이션하면 된다.

동작 화면은 아래와 같다.

PC에서의 분석과 그래픽 화면의 구현은 차후에 C# 강좌를 열 수 있다면 그 때 자세히 설명하도록 하겠다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari