라즈베리 파이 초음파 센서
이 튜토리얼은 라즈베리 파이와 초음파 센서를 사용하여 장애물이나 물체까지의 거리를 측정하는 방법을 안내합니다. 구체적으로, 우리는 다음을 배울 것입니다:
- 초음파 센서는 어떻게 작동하나요
- 초음파 센서를 라즈베리 파이에 연결하는 방법
- 초음파 센서를 사용하여 거리 측정을 위해 라즈베리 파이를 프로그래밍하는 방법
- 라즈베리 파이 코드에서 초음파 센서의 거리 측정값에서 노이즈를 필터링하는 방법
Hardware Preparation
1 | × | Raspberry Pi 4 Model B | Amazon | |
1 | × | Ultrasonic Sensor | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (추천) Screw Terminal Block Shield for Raspberry Pi | 쿠팡 | Amazon | |
1 | × | (추천) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B | Amazon | |
1 | × | (추천) Plastic Case and Cooling Fan for Raspberry Pi 4B | Amazon | |
1 | × | (추천) HDMI Touch Screen Monitor for Raspberry Pi | Amazon |
초음파 센서에 대하여
HC-SR04 초음파 센서는 초음파를 사용하여 물체까지의 거리를 계산하는 데 사용됩니다.
초음파 센서 핀아웃
HC-SR04 초음파 센서는 네 개의 핀이 있습니다:
- VCC 핀: VCC (5V)에 연결해야 합니다.
- GND 핀: GND (0V)에 연결해야 합니다.
- TRIG 핀: 이 핀은 Raspberry Pi로부터 제어 신호(펄스)를 받습니다.
- ECHO 핀: 이 핀은 Raspberry Pi로 신호(펄스)를 보냅니다. Raspberry Pi는 펄스의 길이를 측정하여 거리를 계산합니다.
작동 방식
- I. 마이크로컨트롤러는 TRIG 핀에 10마이크로초 펄스를 생성하여 초음파 센서가 자동으로 초음파를 방출하도록 합니다.
- I. 파동이 장애물에 부딪히면 다시 센서로 반사됩니다.
- I. 그 후 초음파 센서는 반사된 파동을 감지하고 이동 시간을 측정합니다.
- I. 결과적으로, 초음파 센서는 ECHO 핀에 펄스를 생성하며, 이 펄스의 지속 시간은 초음파의 이동 시간과 동일합니다.
- I. 마이크로컨트롤러는 ECHO 핀의 펄스 지속 시간을 측정하고 센서와 장애물 사이의 거리를 계산합니다.
초음파 센서로부터 거리 측정하는 방법
초음파 센서로부터의 거리를 계산하려면, "작동 원리" 섹션에 설명된 두 단계를 수행해야 합니다 (1단계 및 6단계):
- TRIG 핀에서 10마이크로초 펄스를 생성합니다.
- ECHO 핀에서 펄스 지속 시간을 측정합니다.
- 측정된 펄스 지속 시간을 사용하여 센서와 장애물 사이의 거리를 계산합니다.
거리 계산
우리는 가지고 있습니다:
- 초음파 파동의 이동 시간 (µs): travel_time = pulse_duration
- 초음파 파동의 속도: speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/µs
그래서:
- 초음파의 이동 거리(cm): 이동 거리 = 속도 × 이동 시간 = 0.034 × 펄스 지속 시간
- 센서와 장애물 사이의 거리(cm): 거리 = 이동 거리 / 2 = 0.034 × 펄스 지속 시간 / 2 = 0.017 × 펄스 지속 시간
라즈베리 파이 - 초음파 센서
Raspberry Pi의 핀은 10마이크로초의 펄스를 생성하고 펄스의 길이를 측정할 수 있습니다. 이를 통해 두 개의 Raspberry Pi 핀을 사용하여 초음파 센서로부터의 거리를 계산할 수 있습니다. 따라서 두 개의 Raspberry Pi 핀만 사용하면 됩니다:
- 하나의 핀은 초음파 센서의 TRIG 핀에 연결되어 10µs 펄스를 생성합니다.
- 다른 핀은 초음파 센서의 ECHO 핀에 연결되어 센서로부터의 펄스를 측정합니다.
Wiring Diagram
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
배선 구성을 간단하고 체계적으로 만들기 위해, Raspberry Pi용 스크루 터미널 블록 실드 사용을 권장합니다. 이 실드는 아래와 같이 더욱 안정적이고 관리하기 쉬운 연결을 제공합니다:
초음파 센서를 위한 프로그래밍 방법
- GPIO.output()와 time.sleep() 함수를 이용하여 Raspberry Pi의 핀 9에서 10마이크로초 펄스를 생성합니다.
- 예를 들어:
- DigitalWrite()로 핀 9를 HIGH로 설정하고 delayMicroseconds()로 10마이크로초 지연합니다.
- pulseIn() 함수를 사용하여 Raspberry Pi의 핀 8에서 펄스 지속 시간 (µs)을 결정합니다. 예를 들어:
- 거리를 측정하십시오 (cm):
라즈베리 파이 코드
Detailed Instructions
- 라즈비안 또는 다른 라즈베리 파이 호환 운영 체제가 Pi에 설치되어 있는지 확인하세요.
- 라즈베리 파이가 PC와 동일한 로컬 네트워크에 연결되어 있는지 확인하세요.
- 라이브러리를 설치해야 할 경우 라즈베리 파이가 인터넷에 연결되어 있는지 확인하세요.
- 처음으로 라즈베리 파이를 사용하는 경우 라즈베리 파이 설정 방법을 참조하세요.
- Linux 및 macOS의 기본 SSH 클라이언트 또는 Windows의 PuTTY를 사용하여 SSH를 통해 PC를 라즈베리 파이에 연결하세요. PC를 SSH를 통해 라즈베리 파이에 연결하는 방법을 참조하세요.
- RPi.GPIO 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않다면 다음 명령어를 사용하여 설치하세요:
- Python 스크립트 파일 ultrasonic_sensor.py을(를) 생성하고 다음 코드를 추가하세요:
- 파일을 저장하고 터미널에서 다음 명령어를 실행하여 Python 스크립트를 실행하세요:
- 초음파 센서 앞에 손을 놓으세요.
- 터미널에 표시된 센서와 손 사이의 거리를 확인하세요.
스크립트는 터미널에서 Ctrl + C를 누를 때까지 무한 루프로 계속 실행됩니다.
코드 설명
소스 코드의 주석에 포함된 줄별 설명을 확인하세요!
초음파 센서 거리 측정의 잡음 필터링 방법
초음파 센서의 측정 결과는 잡음을 포함할 수 있으며, 이는 일부 애플리케이션에서 원치 않는 작동을 초래할 수 있습니다. 이 잡음을 제거하기 위해 다음 알고리즘을 사용할 수 있습니다:
- 여러 번 측정하여 배열에 저장하십시오.
- 배열을 오름차순으로 정렬하십시오.
- 노이즈를 필터링하십시오:
- 가장 작은 샘플은 노이즈로 간주되어 무시해야 합니다.
- 가장 큰 샘플은 노이즈로 간주되어 무시해야 합니다.
- 중간 샘플의 평균을 측정 값으로 사용해야 합니다.
- 가장 작은 다섯 개의 샘플은 잡음으로 간주하므로 무시하세요.
- 가장 큰 다섯 개의 샘플도 잡음으로 간주하므로 무시하세요.
- 10개의 중간 샘플(5번째부터 14번째까지)의 평균을 구하세요.
다음 예제 코드는 20번 측정합니다:
Video Tutorial
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
스스로에게 도전하세요
초음파 센서를 활용하여 다음 프로젝트 중 하나를 완성하십시오.
- 원격 조종 자동차의 충돌 방지 시스템을 구축합니다.
- 쓰레기통의 재료 양을 측정합니다.
- 쓰레기통의 레벨을 모니터링합니다.
- 쓰레기통을 자동으로 열고 닫습니다. 힌트: 라즈베리 파이 - 서보 모터를 참조하십시오.
초음파 센서 응용 분야
- 충돌 방지
- 만재 감지
- 레벨 측정
- 근접 감지