초보자를 위한 “초음파 센서 SR-04 거리 측정”
아두이노 코딩의 소중한 경험을 라즈베리에서도 계속 살려서 사용하고 싶으신가요?
이 책에서 해답을 찾으세요.
교보문고에서 판매중입니다.
_____________________up to here, Commercial!___________________________________________________
거리 측정을 위한 초음파 센서 SR-04는 아두이노 센서 중에서 가장 핵심적인 센서 중의 하나이다. 초음파 센서의 구조는 크리스탈 발진회로에 의해서 40kHz 주파수를 만들어 Triggering 하여 쏜 다음 벽면으로부터의 반사파 즉 echo를 수신하는데 그 사이 경과 시간을 정밀하게 측정하여 공기 중의 초음파 속도와 곱하여 거리를 환산한다.
사진에 설치된 초음파 센서는 고정하기가 마땅치 않아 4개의 커넥터 플라스틱 부분을 스카치 데이프로 처리하였으니 참조하기 바란다.
초음파 센서는 주둥이형 센서의 높이가 1cm 정도이므로 50cm 거리 측정 실험에서 이 정도의 오차 범위 내에 있어야 한다. 최대 측정 거리는 수직으로 마주한 벽면을 대상으로 500 cm 이며 그 이상의 거리에서는 0 cm 라는 결과를 보여 준다. 한편 반사파가 돌아오지 못할 정도로 벽면에 기울여 초음파를 발사하는 경우에도 0 cm 라는 결과를 줄수 밖에 없다. 주변 환경 에서 보면 울퉁불퉁 튀어 나온 부분이 많기 때문에 갑자기 이상한 숫자를 보여 줄 수도 있음에 유의하자.
초음파 센서의 배선은 Vcc 는 반드시 5V 에 배선한다. 3.3V에서도 동작할 수 있다고는 하나 측정 거리가 짧아질 수 도 있음에 유의하자.
Trig 와 Echo는 각각 2번과 3번에 배선하도록 한다.
초음파 센서를 사용하기 위한 특별한 라이브러리 지원은 별도로 없다.
TRIG를 2번 ECHO를 3번 디지털 핀으로 설정한다.
마이크로 세컨드 단위로 경과 시간 정수형 변수 us를 설정한다.
cm 단위로 하는 대상물과의 거리를 정수형 변수 cm 으로 설정한다.
setup()에서 통신 속도와 TRIG 및 ECHO 핀의 모우드를 설정한다. TRIG 는 초음파를 발사하라는듀티 신호를 SR-04 보드에 보내야 하므로 출력 즉 OUTPUT 이다. 반면에 ECHO 핀은 SR-04 보드로부터 듀티 신호를 받는 핀이므로 INPUT 으로 설정해야 한다. TRIG 듀티의 시간 폭은 10 마이크로 세컨드로서 delayMicroseconds()를 사용한다. 경과 시간은 pulseln(ECHO,HIGH,50000) 명령에서 ECHO 핀이 LOW에서 HIGH 로 변화 시작을 체크하여 지속이 끝나고 LOW로 가는 시점까지 경과 시간을 50,000 마이크로 세컨드 이내에서 측정한다. 단순히 us = pulseIn(ECHO,HIGH) 로 코딩해도 좋다.
초음파 거리 실험의 간단한 예로서 모니터 까지의 거리를 측정하다가 모니터 넘어 맞은 벽까지의 거리를 측정하고 다시 각도를 조정해 모니터까지의 거리를 잰 사례이다.
주변에 장해가 많다면 천정까지의 거리를 재보는 것도 괜찮을 것이다.