아두이노 초음파센서 HC-SR04 연결하기. (아두이노 HC-SR04 센서 알아보기.) pulseln() 함수 알아보기. 아두이노 초음파거리센서(아두이노 센서)
초음파 거리센서 (HC-SR04)에 대해 알아보고, 이 센서를 응용하여 아두이노와 연결하는 방법에 대해 알아보도록 할게요. ①. 아두이노와의 연결을 통해 센서의 출력값을 시리얼 모니터로 확인하기. ②. 초음파 거리센서 출력값을 LED램프로 나타내기. ③. 초음파 거리센서를 이용해 인원 계수 (지나가는 사람 수) 구하기.
1. 초음파 거리센서 HC-SR04 알아보기
- 초음파 센서란? - 초음파란 사람의 귀에 들리지 않을 정도로 높은 주파수 (약 20 kHz 이상)의 소리를 말하며, 이를 이용한 것이 초음파 센서입니다. 이번에 이용하는 HC-SR04는 초음파를 이용해 거리를 측정하는 센서이며, 이외에도 초음파를 이용하여 속도 측정, 농도와 점성도 측정, 수위나 적설 측정 등 여러가지가 가능합니다.
[초음파센서 : HR-SR04]
- 스펙 - 동작전압 DC 5V 동작전류 15mA 동작 주파수 40Hz 발생 주파수 40kHz 측정 거리 2cm ~ 400cm 정밀도 0.3cm 측정 각도 15도 크기 45x20x15mm
- 핀 정보 - Vcc : 전원 공급 Trig : 초음파 발신 Echo : 초음파 수신 Gnd : 접지 (선 연결)
- 초음파 센서의 원리 - Trig핀에서 특정 파형을 만들고, 일정 파형을 만들면 Echo핀이 High 상태로 변경됩니다. 이때 초음파를 감지하게되면 다시 Low상태로 변합니다. 이 사이의 시간으로 값을 측정합니다. 이 측정 값을 계산하는 식을 아두이노 코드로 만들면 원하는 단위로 센서값을 출력할 수 있습니다.
초음파센서 HR-SR04 데이터시트 : http://micropik.com/PDF/HCSR04.pdf
2-①. 센서의 출력값을 시리얼 모니터로 확인하기
- 준비물 - (1) 아두이노 보드 (2) HC-SR04 센서 (3) 브레드보드 (4) USB 케이블 (5) 점퍼 케이블 (클릭시 구매사이트 이동)
- 회로도 -
- 소스코드 - 아래는 코드에 대한 해석입니다.
int distance = pulseln(3,HIGH) * 17 / 1000;
이식은 초음파센서의 출력값을 cm단위로 받기위한 식입니다. distance의 값에 pulseln(3,HIGH) * 17 / 1000; 값을 대입한다는것인데 이게 어떻게 cm단위로 변하는 걸까요?
거리 = 시간 x 속도 이식을 대입한 것입니다.
먼저 pulseln()에 대해 알아보겠습니다.
pulseln(pin, HIGH또는LOW) pin이 HIGH(또는LOW)가 될 때까지의 시간을 불러옴. 즉 Echo가 HIGH가 될때까지의 시간을 불러온다는 것입니다. pulseln(echo,HIGH)가 나타내는것은 발신됬던 신호가 수신되기까지의 시간. 이유는 글 윗부분 초음파 센서의 원리를 참조해주세요. 결과값의 단위는 microseconds.
17 / 1000 초음파의 속도는 초당 340m. = 파장이 돌아온 시간 x 340 / 나누기2 (왕복거리) = 파장이 돌아온 시간 x 170 pulseln의 결과값의 단위가 microseconds기 때문에 cm로 결과값을 받기위해서는 170 x 0.0001 = 17/1000
- 동영상 -
2-②. 센서의 출력값을 LED램프로 나타내기
- 준비물 - (1) 아두이노 보드 (2) 점퍼 케이블 (3) HC-SR04 (4) LED램프 x3 (5) 220옴 저항 x3 (6) USB 케이블 (7) 브레드보드 - 회로도 -
-소스코드- 아래는 코드에 대한 해석입니다.
- 동영상 -
2-③. 센서를 이용해 인원 계수 (지나가는 사람 수) 구하기
빛의 속도가 소리의 속도보다 빠르기 때문에 적외선 센서가 더 유리할 수도 있겠지만, 저가의 초음파센서 HC-SR04를 이용해도 큰 문제없이 인원계수를 할 수 있었어요. 보다 정확한 시스템을 위해서는 다수의 HC-SR04센서를 사용해주세요. 본 시스템을 구현하면서 가정한 바는 다음과 같아요.
1) 한번에 한사람씩 지나간다. 2) 사람과 사람이 지나갈 때의 시차는 2초가 넘는다. 3) 센서앞에 사람이 2초이상 머무르지 않는다. 준비물, 회로도는 2-①과 동일해요. 소스코드만 살짝 바꿔주도록 할게요.
-소스코드-
즉, 80cm 안쪽으로 출력값이 나올경우 +1 을 해주는 방식으로,
중복계산을 막기위해 딜레이 2초를 넣어줬어요. Serial.begin(57600) 확인하시고~ 시리얼 모니터에서 57600보드레이트로 변경해주세요.
-동영상-
3. 초음파 거리센서(HC-SR04) 사용후기
HC-SR04 초음파 센서는 저가의 센서로 가격대비 거리가 BEST인 제품입니다. 이 제품의 측정 최대거리는 4m이지만 물체의 표면 거칠기 및 패턴에 따라 반사되는 음파의 양상이 달라지기 때문에 4m까지 측정이 어려울 수도 있습니다.
중간에 노이즈 등의 값이 들어올 경우에는 소프트웨어적으로 해결하는것이 최선책이며, 보다 좋은 센서도 존재하지만 센서는 정밀도, 분해능에 따라 가격이 천차만별입니다. 적외선 센서와의 sensor intergration도 생각할 수 있습니다. HC-SR04에 비해 정밀한 거리를 센싱하는 제품으로는 Maxbotix LV-EZ1 등이 있습니다.
글 마무리..
여기까지 아두이노와 초음파센서 HC-SR04의 연결에 대해 알아봤습니다. 이외에도 아두이노를 어떻게 활용하느냐에 따라 다양한 방식으로 센서의 값을 이용할 수 있습니다. LCD를 활용해 출력해준다던지, 센서 값에 따라 변하는 무언가를 만든다던지, 와이파이 모듈을 이용해 서버로 값을 받는다던지 등등 여러가지 방법으로 말이죠.
여러분들의 무한한 상상력으로 다양한 아이디어를 구현해보도록합시다. ^^
|
최신댓글