초음파 센서(HC-SR04): 두 판 사이의 차이
편집 요약 없음 |
편집 요약 없음 |
||
(같은 사용자의 중간 판 40개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
{{#seo:|title=아두위키 : 초음파 센서(HC-SR04)|keywords=아두이노, 초음파센서, HC-SR04|description=아두이노에서 초음파 센서를 사용하는 방법}}[[파일:초음파대표이미지1.jpg|가운데|class=coders70]] | |||
초음파를 사용하여 거리를 측정하는 센서 입니다. | 초음파를 사용하여 거리를 측정하는 센서 입니다. | ||
4번째 줄: | 6번째 줄: | ||
'''[초음파 발생 -> 초음파 반사 -> 되돌아온 초음파 감지]''' 순서로 거리 값을 측정합니다. | '''[초음파 발생 -> 초음파 반사 -> 되돌아온 초음파 감지]''' 순서로 거리 값을 측정합니다. | ||
== '''센서 작동 방식''' == | == '''센서 작동 방식''' == | ||
1. trig로 초음파를 발생시킨다. | |||
2. 초음파 발생 종료 직후 echo에 HIGH 상태를 유지시킨다. | |||
3. 발생시킨 초음파가 되돌아와서 감지될 경우 echo를 LOW로 변경한다. | |||
4. pulseIn(echoPin, HIGH); 을 사용하여 초음파가 갔다가 돌아오는 시간을 얻어낸다. | |||
5. 이후 식에 대입하여 거리를 측정한다. | |||
== '''거리 측정 | == '''거리 측정''' == | ||
{| class="wikitable" | {| class="wikitable" | ||
| colspan="1" rowspan="1" |초음파 속도 | | colspan="1" rowspan="1" |초음파 속도 | ||
26번째 줄: | 33번째 줄: | ||
<math>y = \frac{17}{10^3}x[cm]</math> | <math>y = \frac{17}{10^3}x[cm]</math> | ||
| |||
| |||
== '''사양''' == | == '''사양''' == | ||
* 작동 전압 : 5V | |||
* 작동 전류 : 15mA | |||
* 작동 주파수 : 40Hz | |||
* 초음파 주파수 : 40kHz | |||
* 최대 감지 거리 : 4m | |||
* 최소 감지 거리 : 2cm | |||
* 측정 각도 범위 : 15 degree | |||
* Trigger Input : 10µs TTL pulse | |||
== '''필요 하드웨어''' == | == '''필요 하드웨어''' == | ||
* | |||
* | * 초음파 센서(HC-SR04) | ||
* | * [[아두이노(Arduino)|아두이노 보드]] | ||
* [https://gongzipsa.com/shop/1699939304 점퍼 케이블] | |||
== '''연결''' == | == '''연결''' == | ||
Trig, Echo는 원하는 핀번호로 설정하여 사용합니다.(본문에서는 D3, D4핀으로 사용) | |||
[[파일:초음파_센서_연결.png|가운데|class=coders100]] | |||
{| class="wikitable" | {| class="wikitable" | ||
62번째 줄: | 78번째 줄: | ||
| colspan="1" rowspan="1" |D4(변경 가능) | | colspan="1" rowspan="1" |D4(변경 가능) | ||
|} | |} | ||
== '''예제 코드''' == | == '''예제 코드''' == | ||
* | 시리얼 모니터로 거리를 확인하는 예제입니다.<syntaxhighlight lang="c++" line="1"> | ||
#define trigPin 3 | |||
#define echoPin 4 | |||
//초음파가 되돌아 오기까지의 시간을 담을 변수 생성 | |||
double pulseTime; | |||
void setup() | |||
{ | |||
//각 핀별 사용방법 설정 | |||
pinMode(trigPin, OUTPUT); | |||
pinMode(echoPin, INPUT); | |||
//9600 설정 | |||
Serial.begin(9600); | |||
delay(2000); | |||
Serial.println("연결 성공"); | |||
delay(500); | |||
//trig신호 초기화 | |||
digitalWrite(trigPin, LOW); | |||
} | |||
void loop() | |||
{ | |||
//초음파 시작 | |||
digitalWrite(trigPin, HIGH); | |||
//센서 사양대로 10µs 동안 초음파 발생 | |||
delayMicroseconds(10); | |||
digitalWrite(trigPin, LOW); | |||
//초음파 왕복 시간 측정 | |||
pulseTime = pulseIn(echoPin, HIGH); | |||
//물체와의 거리 계산 | |||
double distance_cm = pulseTime * 17 / 1000; | |||
double distance_m = distance_cm / 100; | |||
//센서 사양을 벗어날 시 error 표기 | |||
if ((distance_cm < 400) && (distance_cm > 2)) | |||
{ | |||
Serial.print("거리(cm) = "); | |||
Serial.println(distance_cm); | |||
Serial.print("거리(m) = "); | |||
Serial.println(distance_m); | |||
Serial.println("--------------------------------------------------"); | |||
} | |||
else | |||
{ | |||
Serial.println("제품 사용 가능범위 초과"); | |||
} | |||
delay(1000); | |||
} | |||
</syntaxhighlight> | |||
== '''구매 링크''' == | |||
* [https://gongzipsa.com/shop/1699939274 '''공집사몰'''] | |||
* [https://smartstore.naver.com/gongzipsa/products/7375895506 '''공집사 스마트스토어'''] |
2023년 12월 14일 (목) 17:00 기준 최신판
초음파를 사용하여 거리를 측정하는 센서 입니다.
환경에 따라 사용 가능 범위에 오차가 발생합니다.
[초음파 발생 -> 초음파 반사 -> 되돌아온 초음파 감지] 순서로 거리 값을 측정합니다.
센서 작동 방식
1. trig로 초음파를 발생시킨다.
2. 초음파 발생 종료 직후 echo에 HIGH 상태를 유지시킨다.
3. 발생시킨 초음파가 되돌아와서 감지될 경우 echo를 LOW로 변경한다.
4. pulseIn(echoPin, HIGH); 을 사용하여 초음파가 갔다가 돌아오는 시간을 얻어낸다.
5. 이후 식에 대입하여 거리를 측정한다.
거리 측정
초음파 속도 | 340m/s |
초음파 왕복 시간 | x |
물체와의 거리 | y |
사양
- 작동 전압 : 5V
- 작동 전류 : 15mA
- 작동 주파수 : 40Hz
- 초음파 주파수 : 40kHz
- 최대 감지 거리 : 4m
- 최소 감지 거리 : 2cm
- 측정 각도 범위 : 15 degree
- Trigger Input : 10µs TTL pulse
필요 하드웨어
연결
Trig, Echo는 원하는 핀번호로 설정하여 사용합니다.(본문에서는 D3, D4핀으로 사용)
HC-SR04 | Arduino UNO |
GND | GND |
VCC | 5V |
Trig | D3(변경 가능) |
Echo | D4(변경 가능) |
예제 코드
시리얼 모니터로 거리를 확인하는 예제입니다.
#define trigPin 3
#define echoPin 4
//초음파가 되돌아 오기까지의 시간을 담을 변수 생성
double pulseTime;
void setup()
{
//각 핀별 사용방법 설정
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
//9600 설정
Serial.begin(9600);
delay(2000);
Serial.println("연결 성공");
delay(500);
//trig신호 초기화
digitalWrite(trigPin, LOW);
}
void loop()
{
//초음파 시작
digitalWrite(trigPin, HIGH);
//센서 사양대로 10µs 동안 초음파 발생
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
//초음파 왕복 시간 측정
pulseTime = pulseIn(echoPin, HIGH);
//물체와의 거리 계산
double distance_cm = pulseTime * 17 / 1000;
double distance_m = distance_cm / 100;
//센서 사양을 벗어날 시 error 표기
if ((distance_cm < 400) && (distance_cm > 2))
{
Serial.print("거리(cm) = ");
Serial.println(distance_cm);
Serial.print("거리(m) = ");
Serial.println(distance_m);
Serial.println("--------------------------------------------------");
}
else
{
Serial.println("제품 사용 가능범위 초과");
}
delay(1000);
}