-
아두이노 | 초음파센서 모듈 HC-SR04Technology/Arduino 2023. 11. 24. 18:00
1. 모듈
모듈(module)은 특정 기능을 구현하기 위해 여러 요소를 조합해 하나로 모아놓은 것을 말한다. 사용자 입장에서는 여러 요소를 직접 조합할 필요가 없이 모듈을 구매하여 사용하면 되므로 특정 기능을 빠르고 간편하게 도입할 수 있다. 아두이노 플랫폼에도 다양한 모듈이 존재하며, 아두이노 하드웨어를 중심으로 여러 모듈을 조합해 다채로운 기능을 가진 시스템을 구현할 수 있다.
2. 초음파센서 모듈 HC-SR04
초음파센서 모듈은 초음파를 외부로 보내는 초음파 송신부와 초음파를 감지하는 초음파 수신부로 구성되어 있으며, 사람이 들을 수 없는 높은 주파수(20 kHz 이상)의 소리를 외부로 보낸 다음 물체에 부딪혀 되돌아오는 소리를 감지한다. 모듈 HC-SR04의 경우 4개의 단자를 가지고 있다. 트리거(Trigger) 신호 단자에 디지털 신호를 가하면 초음파가 발생하며, 에코(Echo) 신호 단자로 초음파를 감지할 수 있다. 초음파센서 모듈 HC-SR04는 아래 링크로 접속하면 구매할 수 있다.
3. 동작 원리
트리거 신호 단자에 10 µs 동안 HIGH를 유지하는 디지털 신호가 입력되면 송신부에서 초음파를 내보내고, 초음파가 수신부로 되돌아올 때까지 에코 신호 단자에서 HIGH 디지털 신호가 출력된다. 아두이노 플랫폼에서 제공하는 함수를 이용해 송신부에서 내보낸 초음파가 수신부로 되돌아오기까지 걸린 시간을 측정하면, 상온 25°C에서 소리의 속력 346.13 m/s를 고려하여 물체까지의 거리를 다음과 같이 계산할 수 있다. 아래 식에서 물체까지의 거리의 단위는 cm, 왕복 시간의 단위는 µs이다.
4. 예제
4.1. 회로 구성
4.2. 프로그램 작성
void setup() { pinMode(12, OUTPUT); // 디지털 12번 핀을 출력(OUTPUT) 모드로 설정 pinMode(11, INPUT); // 디지털 11번 핀을 입력(INPUT) 모드로 설정 Serial.begin(9600); // 시리얼 통신 시작 (통신 속도: 9600 bps) } void loop() { digitalWrite(12, HIGH); // 디지털 12번 핀에 디지털 신호 HIGH 출력 delayMicroseconds(10); // 10 µs 대기 digitalWrite(12, LOW); // 디지털 12번 핀에 디지털 신호 LOW 출력 // 정수형 변수 선언 후 디지털 11번 핀이 디지털 신호 HIGH를 유지한 시간을 µs 단위로 변수에 저장 long Duration = pulseIn(11, HIGH); // 실수형 변수 선언 후 초음파가 횡단한 거리를 계산하여 변수에 저장 float Distance = 346.13 * Duration / 10000 / 2 ; Serial.print("Distance: "); // 시리얼 모니터에 문자열을 출력 Serial.print(Distance); // 시리얼 모니터에 변수에 저장된 값을 출력 Serial.println(" cm"); // 시리얼 모니터에 문자열을 출력한 뒤 줄 바꿈 delay(100); // 100 ms 대기 }
[함께 읽으면 좋은 페이지]
참고문헌
- 최훈. (2022). 팅커캐드 & 아두이노. 길벗캠퍼스.
- Wikipedia contributors. (2023). Speed of sound. Wikipedia. https://en.wikipedia.org/wiki/Speed_of_sound. 2023.10.23.
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 시리얼 통신: 데이터 입력 (1) 2023.12.08 아두이노 프로젝트 | 자동차 후방 감지기 (0) 2023.12.01 아두이노 프로젝트 | 젤다의 전설 시간의 오카리나 (0) 2023.11.17 아두이노 프로젝트 | 디지털 피아노 (0) 2023.11.10 아두이노 | 피에조 부저 (1) 2023.11.03