-
[Raspberry Pi] 초음파 센서 동작 + LED 센서Raspberry Pi/Build with Pi 2026. 4. 4. 14:19
오늘은 초음파 센서 동작과 초음파 센서 값을 활용해 LED를 켰다 껐다 해보겠다.
1. 초음파 센서 동작
먼저 초음파 센서는 다음과 같이 생겼다.

초음파센서 먼저 이 녀석을 또 라즈베리 파이와 연결을 해야한다.
초음파 센서 핀을 보면, VCC, GND, Trig, Echo라고 적혀 있는데 각각 어디에 연결해야하는지 봐보자.

먼저 초음파센서의 VCC는 5V Power(2번)에 연결해주고, Gnd는 Ground(6번), Trig는 GPIO24, Echo는 GPIO23에 연결해준다. 연결하면 다음과 같이 연결하면된다.

초음파센서 연결 이제 연결을 했으니 초음파 센서가 동작하는지 먼저 확인을 해보자.
라즈베리파이를 켜고 연결을 해준다음 아래 코드를 작성해 준다.
import RPi.GPIO as GPIO import time TRIG = 23 ECHO = 24 GPIO.setmode(GPIO.BCM) GPIO.setup(TRIG, GPIO.OUT) GPIO.setup(ECHO, GPIO.IN) GPIO.output(TRIG, False) time.sleep(2) def measure_once(): GPIO.output(TRIG, False) time.sleep(0.0002) GPIO.output(TRIG, True) time.sleep(0.00001) GPIO.output(TRIG, False) timeout = time.time() pulse_start = time.time() # 초기화 pulse_end = time.time() # 초기화 # Echo LOW → HIGH 기다림 while GPIO.input(ECHO) == 0: pulse_start = time.time() if pulse_start - timeout > 0.05: return None timeout = time.time() # Echo HIGH → LOW 기다림 while GPIO.input(ECHO) == 1: pulse_end = time.time() if pulse_end - timeout > 0.05: return None pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 if distance < 2 or distance > 400: return None return round(distance, 2) def get_distance(): values = [] for _ in range(5): d = measure_once() if d is not None: values.append(d) time.sleep(0.05) if not values: return None values.sort() return values[len(values)//2] try: while True: dist = get_distance() if dist is None: print("측정 실패") else: print(f"Distance: {dist} cm") time.sleep(0.5) except KeyboardInterrupt: print("종료") finally: GPIO.cleanup()코드를 작성하고 실행을 하면 초음파 센서가 측정하는 거리가 뜰 것이다. 손이나 물체를 가까이 가져가면 Distance가 줄어드는것이 정상적으로 작동하고 있다는 의미이다.
2. 센서 + LED 제어
이제 초음파 센서의 거리값에 임계값을 지정해주고, 임계값 이하이면 LED를 켜고, 이상이면 LED를 끄도록 설계를 해보자
먼저 기존 상태에서 LED를 연결을 해주고 약간의 코드를 수정만 해주면 된다. LED 센서 제어는 이전 포스팅에 올려두었다.
https://yeontachi.tistory.com/18
[Raspberry Pi] 라즈베리 파이 LED 제어하기
오늘은 LED ON/OFF를 실습했다.두 가지 방식으로 진행을 했는데,먼저 프로그램 없이 명령어로 LED 제어하기, 그 다음은 프로그램을 이용한 LED 제어이다.(Python을 사용했다.)먼저 LED 제어를 위해서는 G
yeontachi.tistory.com
이제 센서와 LED를 같이 연결해서 동작 테스트를 해보자.
먼저 연결은 아래 이미지를 참고하면 된다.


초음파센서 + LED 회로 구성 이 상태로 연결해두고, 다시 아래 코드를 작성해서, 실제로 손을 가까이 가져다대면, LED불이 켜지는지 확인을 해보자.
(내가 실습할 때는, 초음파 센서 거리감각이 똥망이라 센서에 손을 정말 가까이 가져다 놓아야 LED 불이 켜졌다...)
import RPi.GPIO as GPIO import time TRIG = 23 ECHO = 24 LED = 17 GPIO.setmode(GPIO.BCM) GPIO.setup(TRIG, GPIO.OUT) GPIO.setup(ECHO, GPIO.IN) GPIO.setup(LED, GPIO.OUT) GPIO.output(TRIG, False) GPIO.output(LED, False) time.sleep(2) def distance(): # TRIG 초기화 GPIO.output(TRIG, False) time.sleep(0.0002) # 10us 펄스 GPIO.output(TRIG, True) time.sleep(0.00001) GPIO.output(TRIG, False) pulse_start = time.time() pulse_end = time.time() timeout = time.time() # LOW → HIGH 기다림 while GPIO.input(ECHO) == 0: pulse_start = time.time() if pulse_start - timeout > 0.05: return None timeout = time.time() # HIGH → LOW 기다림 while GPIO.input(ECHO) == 1: pulse_end = time.time() if pulse_end - timeout > 0.05: return None pulse_duration = pulse_end - pulse_start dist = pulse_duration * 17150 if dist < 2 or dist > 400: return None return dist try: while True: d = distance() if d is None: print("측정 실패") GPIO.output(LED, False) else: print(f"Distance: {d:.1f} cm") if d <= 150: GPIO.output(LED, True) # LED ON else: GPIO.output(LED, False) # LED OFF time.sleep(0.3) except KeyboardInterrupt: print("종료") finally: GPIO.cleanup()이제 코드를 실행하고, 손을 가져다 대면 LED가 켜질 것이다....!
https://youtube.com/shorts/3hOs6GszZp4?feature=share
다음은, 온도 습도 센서 동작으로 돌아오도록 하겠다:)
'Raspberry Pi > Build with Pi' 카테고리의 다른 글
[Raspberry Pi] MQTT로 원격 LED 제어하기 (0) 2026.04.27 [Raspberry Pi] 온도 습도 센서 동작 + 7 segment (0) 2026.04.04 [Raspberry Pi] 라즈베리 파이 LED 제어하기 (0) 2026.04.04 [Raspberry Pi] Raspberry Pi OS 설치 및 필수 초기 설정 (0) 2026.03.22