아두이노 나노 - 초음파 센서 | Arduino Nano - Ultrasonic Sensor
이 튜토리얼은 여러분이 아두이노 나노와 초음파 센서를 사용하여 장애물이나 물체까지의 거리를 측정하는 방법을 지시합니다. 자세히 말씀드리면, 우리는 배울 것입니다:
- 초음파 센서가 어떻게 작동하는지
- 초음파 센서를 아두이노 나노에 연결하는 방법
- 초음파 센서를 사용하여 거리를 측정하기 위해 아두이노 나노를 프로그래밍하는 방법
- 아두이노 나노 코드에서 초음파 센서의 거리 측정에서 소음을 필터링하는 방법
준비물
1 | × | Arduino Nano | Amazon | |
1 | × | USB A to Mini-B USB cable | 쿠팡 | Amazon | |
1 | × | Ultrasonic Sensor | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino Nano | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon |
초음파 센서에 관하여
HC-SR04 초음파 센서는 초음파를 이용하여 물체까지의 거리를 측정하는 데 사용됩니다.
초음파 센서 핀배열
HC-SR04 초음파 센서에는 네 개의 핀이 있습니다:
- VCC 핀: VCC(5V)에 연결해야 합니다.
- GND 핀: GND(0V)에 연결해야 합니다.
- TRIG 핀: Arduino Nano로부터 제어 신호(펄스)를 받습니다.
- ECHO 핀: 신호(펄스)를 Arduino Nano로 보냅니다. Arduino Nano는 펄스의 길이를 측정하여 거리를 계산합니다.
작동 원리
- 아두이노 나노는 초음파 센서가 초음파를 방출하도록 TRIG 핀에서 10-마이크로초 펄스를 생성합니다.
- 파동이 장애물에 부딪히면 반사됩니다.
- 초음파 센서는 반사된 파동을 감지하고 그 이동 시간을 측정할 수 있습니다.
- 센서는 초음파의 이동 시간과 같은 기간 동안 ECHO 핀으로 펄스를 생성합니다.
- 아두이노 나노는 ECHO 핀에서 펄스 기간을 측정하고 센서와 장애물 사이의 거리를 계산합니다.
초음파 센서로부터 거리를 얻는 방법
초음파 센서로부터의 거리를 계산하기 위해서는 아두이노 코드를 작성하여 두 단계(《How It Works》의 1과 6)만 수행하면 됩니다:
- 아두이노 나노는 TRIG 핀에서 10마이크로초 펄스를 생성합니다.
- 아두이노 나노는 ECHO 핀에서 펄스 지속 시간을 측정합니다.
- 그런 다음, 아두이노 나노는 측정된 펄스 지속 시간을 사용하여 센서와 장애물 사이의 거리를 계산합니다.
거리 계산
우리는 가지고 있습니다:
초음파의 이동 시간(μs): travel_time = pulse_duration
초음파의 속도: speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/μs
그래서:
초음파의 이동 거리(cm): travel_distance = 속도 × 이동 시간 = 0.034 × 펄스 지속 시간
센서와 장애물 사이의 거리(cm): 거리 = 이동 거리 / 2 = 0.034 × 펄스 지속 시간 / 2 = 0.017 × 펄스 지속 시간
아두이노 나노 - 초음파 센서
아두이노 나노의 핀은 10마이크로초 펄스를 생성하고, 펄스 기간을 측정할 수 있습니다. 이를 통해 울트라소닉 센서에서 물체까지의 거리를 결정하기 위해 아두이노 나노의 두 핀을 사용할 수 있습니다. 우리가 해야 할 일은 다음과 같습니다:
- 아두이노 나노의 한 핀을 초음파 센서의 TRIG 핀에 연결하십시오. 이 아두이노 나노 핀은 센서의 TRIG 핀에 10μs 펄스를 생성하는 데 사용됩니다.
- 아두이노 나노의 다른 핀을 초음파 센서의 ECHO 핀에 연결하십시오. 이 아두이노 나노 핀은 센서에서 오는 펄스를 측정하는 데 사용됩니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
초음파 센서를 위한 프로그래밍 방법
digitalWrite() 및 delayMicroseconds() 함수를 활용하여 아두이노의 3번 핀에서 10 마이크로초 펄스를 생성합니다. 예를 들어:
아두이노의 2번 핀에서 펄스 지속 시간(마이크로초 단위)을 pulseIn() 함수를 사용하여 측정하십시오. 예를 들어:
거리(센티미터)를 계산하십시오:
아두이노 나노 코드
사용 방법
- 코드를 복사하고 Arduino IDE로 열어주세요.
- 그런 다음, Arduino IDE에서 Upload 버튼을 클릭하여 코드를 컴파일하고 Arduino Nano로 업로드하세요.
- 시리얼 모니터를 엽니다
- 초음파 센서 앞에 손을 놓으세요
- 시리언 모니터에 센서와 손 사이의 거리가 표시되는 것을 확인하세요
코드 설명
소스 코드의 주석에 포함된 줄별 설명을 확인하세요!
초음파 센서의 거리 측정에서 잡음을 필터링하는 방법
초음파 센서의 측정 결과에는 소음이 포함될 수 있으며, 이는 일부 응용 프로그램에서 원치 않는 작동을 유발할 수 있습니다. 소음을 제거하기 위해, 다음 알고리즘을 사용할 수 있습니다:
- 여러 개의 측정값을 취하고 배열에 저장하세요.
- 배열을 오름차순으로 정렬하세요.
- 다음 방법으로 잡음을 제거하세요:
- 가장 작은 샘플은 잡음으로 간주되어 무시되어야 합니다.
- 가장 큰 샘플은 잡음으로 간주되어 무시되어야 합니다.
- 중간 샘플들의 평균을 취하세요.
- 가장 작은 표본 다섯 개를 무시하세요.
- 가장 큰 표본 다섯 개를 무시하세요.
- 다섯 번째에서 열네 번째까지 중간 표본 열 개의 평균을 구하세요.
아래 예제 코드는 20번의 측정을 수행합니다:
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
도전하세요
다음 프로젝트 중 하나에서 초음파 센서를 사용하십시오:
- 원격 제어 자동차용 충돌 회피 시스템 구축.
- 쓰레기통의 가득 찬 정도를 설정하기.
- 쓰레기통의 수준 추적하기.
- 쓰레기통을 자동으로 열고 닫기. 힌트: 아두이노 나노 - 서보 모터를 참조하세요.
초음파 센서 응용 분야
- 충돌 회피
- 만재 감지
- 수위 측정
- 근접 감지