2017 멀티캠퍼스/Raspberry Pi

#10 라즈베리파이 Ultrasonic (초음파 센서)

꿈꾸는어린이 2018. 1. 30. 16:06

//

일시 : 2018.01.10

내용 : Ultrasonic Sensor(초음파 센서)

//

Ultrasonic Sensor (초음파 센서)

  • 초음파를 방사한 후 물체에 반사되어 돌아오는 시간을 계산해 거리를 파악. (Peri0 2cm ~ 400cm 거리 측정 가능)

  • 10마이크로 초 동안 Trigger핀에 High 신호 전달(StartTime) -> 초음파 발생시킴

  • 되돌아온 초음파를 감지하면 echo핀은 high에서 low출력으로 변함(endTime)

    따라서 echo 핀의 high 레벨 펄스는 거리에 해당.

  • 초음파 수신 시간(duration) = endTime - startTime

  • 물체와의 거리 = duration * 17000




실습

거리 측정하여 출력하기

  • 돌아온 시간을 초음파 센서는 알고 있음.

    echo 핀을 통해 rasp에서 cpu로 알려주는 것.

      import RPi.GPIO as GPIO
    import time

    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)

    trig = 0
    echo = 1

    GPIO.setup(trig, GPIO.OUT)
    GPIO.setup(echo, GPIO.IN)

    try:
       while True:
           GPIO.output(trig, False) # trig핀 low로 유지
           time.sleep(0.5)
           
           ## trig핀 high로 만들어서 초음파 보냄. 10ms동안 유지
           GPIO.output(trig, True)
           time.sleep(0.00001)
           GPIO.output(trig, False)
           
           while GPIO.input(echo) == False: # echo핀 low일 때 시간 출력
               pulse_start = time.time()
               
           while GPIO.input(echo) == True: # echo핀 high일 때 시간 출력
               pulse_end = time.time()
               
           pulse_duration = pulse_end - pulse_start # high로 유지한 시간 (거리)
           distance = pulse_duration * 17000
           distance = round(distance, 2)
           ##소수점 둘째자리까지
           
           print("Distance : ", distance, "cm")
           
    except:
       GPIO.cleanup()