아두이노(Arduino)와 초음파 거리 센서 HC-SR04를 이용하면 물체까지의 거리를 손쉽게 측정할 수 있습니다. 로봇 장애물 회피, 주차 보조 장치, 스마트 쓰레기통 등 다양한 DIY 프로젝트에 활용할 수 있죠. 오늘은 부품 준비부터 코드 설명, 테스트 방법까지 단계별로 정리해 보았습니다.
준비물
- Arduino Uno (또는 호환 보드)
- HC-SR04 초음파 센서 모듈
- 브레드보드, 점퍼 케이블
- USB 케이블(아두이노 연결용)
- (옵션) 서보모터, LCD 디스플레이 등
HC-SR04 센서 핀 설명
- VCC: 5V 전원
- GND: 그라운드
- Trig: 초음파 송신을 위한 트리거 핀
- Echo: 반사파 수신 결과(펄스폭) 출력
하드웨어 연결 방법
- Arduino 5V → HC-SR04 VCC
- Arduino GND → HC-SR04 GND
- Arduino 디지털 핀 9 → HC-SR04 Trig
- Arduino 디지털 핀 10 → HC-SR04 Echo

아두이노 코드 예제
// HC-SR04 초음파 거리 측정
const int trigPin = 9;
const int echoPin = 10;
long duration;
float distanceCm;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// Trig 핀에 10us 펄스 전송
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Echo 핀으로부터 펄스 폭(μs) 측정
duration = pulseIn(echoPin, HIGH);
// 거리 계산: (시간 × 음속(343m/s)) ÷ 2
distanceCm = duration * 0.0343 / 2;
// 시리얼 모니터에 출력
Serial.print("Distance: ");
Serial.print(distanceCm);
Serial.println(" cm");
delay(500);
}
코드 설명
- pulseIn(): Echo 핀에 HIGH 신호가 유지된 시간을 마이크로초 단위로 반환
- 0.0343 = (343 m/s) ÷ 10000 (cm/μs 변환)
/ 2
: 송신 ↔ 수신까지 왕복 시간 절반을 사용
테스트 및 결과 확인
- 아두이노 IDE에서 위 코드를 업로드
- 시리얼 모니터(9600 baud) 실행
- 센서 앞에 물체를 놓고 거리 값이 cm 단위로 나오는지 확인
정상적으로 동작하면 2~400cm 범위 내에서 실시간으로 값이 변하는 것을 볼 수 있습니다.
활용 예제 및 팁
- 장애물 회피 로봇: 거리 값이 일정 이하일 때 모터 방향 전환
- 주차 보조 시스템: LCD에 거리 표시 + 부저(Buzzer) 경고음
- 스마트 쓰레기통: 쓰레기통 뚜껑 자동 개폐
Tip) 소음이 심한 환경에서는 측정값이 튈 수 있으니, 여러 번 측정해 평균값을 사용하는 것이 좋습니다.
이처럼 HC-SR04 초음파 센서는 간단한 배선과 몇 줄의 코드만으로도 정확한 거리 측정이 가능합니다. 다양한 프로젝트에 적용해 보시고, 궁금한 점이나 응용 사례는 댓글로 공유해 주세요!