ESP8266 - 초음파 센서 | ESP8266 - Ultrasonic Sensor
이 튜토리얼은 여러분에게 ESP8266과 초음파 센서를 사용하여 장애물이나 물체까지의 거리를 측정하는 방법을 지시합니다. 구체적으로, 우리는 배울 것입니다:
- 초음파 센서가 어떻게 작동하는가
- 초음파 센서를 ESP8266에 연결하는 방법
- 초음파 센서를 사용하여 거리를 측정하기 위해 ESP8266을 프로그래밍하는 방법
- ESP8266 코드에서 초음파 센서의 거리 측정값에서 잡음을 제거하는 방법
준비물
1 | × | ESP8266 NodeMCU | Amazon | |
1 | × | Micro USB Cable | Amazon | |
1 | × | Ultrasonic Sensor | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 5V Power Adapter for ESP8266 | Amazon | |
1 | × | (Optional) Screw Terminal Expansion Board for ESP8266 | 쿠팡 | Amazon |
초음파 센서에 대하여
HC-SR04 초음파 센서는 초음파를 이용해 물체까지의 거리를 측정하는 데 사용됩니다.
초음파 센서 핀배열
HC-SR04 초음파 센서에는 4개의 핀이 있습니다:
- VCC 핀: VCC(5V)에 연결해야 합니다.
- GND 핀: GND(0V)에 연결해야 합니다.
- TRIG 핀: 이 핀은 ESP8266에서 오는 제어 신호(펄스)를 받는 곳입니다.
- ECHO 핀: 이 핀은 신호(펄스)를 ESP8266에 보냅니다. ESP8266은 펄스의 길이를 측정하여 거리를 계산합니다.
작동 방식
- 마이크로컨트롤러는 TRIG 핀에서 10-마이크로초 펄스를 생성하여 초음파 센서가 초음파를 방출하도록 합니다.
- 초음파는 장애물에 부딪힌 후 반사됩니다.
- 초음파 센서는 반사된 초음파를 감지하고 그 이동 시간을 측정합니다.
- 초음파 센서는 ECHO 핀으로 펄스를 생성하고, 펄스 지속 시간은 초음파의 이동 시간과 같습니다.
- 마이크로컨트롤러는 ECHO 핀에서 펄스 지속 시간을 측정하고 센서와 장애물 사이의 거리를 계산합니다.
초음파 센서에서 거리를 얻는 방법
초음파 센서로부터 거리를 계산하기 위해서는 두 단계를 거쳐야 합니다(작동 원리 섹션의 1과 6):
- TRIG 핀에 10마이크로초의 펄스를 발생시킵니다.
- ECHO 핀에서 펄스 지속 시간을 측정합니다.
- 센서와 장애물 사이의 거리를 계산합니다.
거리 계산
우리는 가지고 있습니다:
초음파의 이동 시간(μs): travel_time = pulse_duration
초음파의 속도: speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/μs
그래서:
- 초음파의 이동 거리(cm): travel_distance = speed × travel_time = 0.034 × pulse_duration
- 센서와 장애물 사이의 거리(cm): distance = travel_distance / 2 = 0.034 × pulse_duration / 2 = 0.017 × pulse_duration
ESP8266 - 초음파 센서
ESP8266의 두 핀을 사용하여 초음파 센서로부터의 거리를 측정할 수 있습니다: 하나의 핀은 10μs 펄스를 생성하기 위해 TRIG 핀에 연결되고, 다른 핀은 센서로부터의 펄스를 측정하기 위해 ECHO 핀에 연결됩니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP8266의 핀 배치 및 ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.
초음파 센서 프로그래밍 방법
digitalWrite() 및 delayMicroseconds() 함수를 활용하여 ESP8266의 D5 핀에서 10-마이크로초 펄스를 생성하십시오. 예를 들어:
- DigitalWrite()로 핀을 HIGH로 설정한 후, delayMicroseconds()로 10 마이크로초 동안 지연시킨 다음, digitalWrite()로 핀을 LOW로 설정하십시오.
아두이노의 D6 핀에서 펄스 지속 시간(µs)을 측정하기 위해 pulseIn() 함수를 사용하십시오. 예를 들어:
거리 계산하기 (cm):
ESP8266 코드
사용 방법
아두이노 IDE에서 ESP8266을 시작하는 방법은 다음과 같은 단계를 따르세요:
- ESP8266을 처음 사용하는 경우 Arduino IDE에서 ESP8266 환경 설정 방법 튜토리얼을 확인하세요.
- 다이어그램에 표시된 대로 구성 요소를 연결하세요.
- USB 케이블을 사용하여 ESP8266 보드를 컴퓨터에 연결하세요.
- 컴퓨터에서 Arduino IDE를 엽니다.
- 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하세요.
- 코드를 복사하고 Arduino IDE에서 엽니다.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 ESP8266에 컴파일 및 업로드하세요.
- 시리얼 모니터를 엽니다
- 초음파 센서 근처에서 손을 움직입니다
- 시리얼 모니터에 표시된 센서와 손 사이의 거리를 확인합니다
코드 설명
소스 코드의 주석에 포함된 줄별 설명을 확인하세요!
초음파 센서의 거리 측정에서 잡음을 필터링하는 방법
초음파 센서의 측정 결과에는 잡음이 포함될 수 있으며, 이는 특정 응용 프로그램에서 원치 않는 작동으로 이어질 수 있습니다. 잡음을 제거하기 위해 다음 알고리즘이 사용될 수 있습니다:
- 여러 측정값을 취하고 배열에 저장하십시오.
- 배열을 오름차순으로 정렬하십시오.
- 잡음을 필터링하십시오.
- 가장 작은 샘플 중 일부는 잡음으로 간주됩니다 → 무시하십시오.
- 가장 큰 샘플 중 일부는 잡음으로 간주됩니다 → 무시하십시오.
- 중간 샘플의 평균을 계산하십시오.
- 가장 작은 5개의 샘플은 무시해야 합니다.
- 가장 큰 5개의 샘플은 무시해야 합니다.
- 5번째에서 14번째까지의 중간 10개 샘플의 평균을 구해야 합니다.
아래 예제 코드는 20번의 측정을 수행합니다:
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
도전하세요
다음 프로젝트 중 하나에 초음파 센서를 사용하세요:
- 원격 제어 자동차를 위한 충돌 방지 시스템을 구축하세요.
- 쓰레기통의 가득 찬 정도를 추정하세요.
- 쓰레기통의 수준을 모니터하세요.
- 쓰레기통의 개폐를 자동화하세요. 힌트: ESP8266 - 서보 모터를 참조하세요.
초음파 센서 응용 분야
- 충돌 방지
- 용량 추정
- 높이 추정
- 근처 객체 식별