HC-SR04 超音波感測器

HC-SR04 是一款超音波測距的模組,它可以探測的距離在 2 公分到 4 公尺之間,精確度大約是 0.3 公分,感應角度為 15 度。由於它的形狀就像兩隻機器眼睛,所以常被裝在自走車或機器人上,兼俱實用又美觀的功能。它的運作方式很容易理解,我們先在 TRIG 這支 GPIO 接腳對它 toogle high(即 pull high 之後再 pull low)。接著 HC-SR04 會發出 8 個 40k Hz 的音波訊號出去,並且將 ECHO 這支 GPIO 接腳的訊號 pull high。等到音波訊號回來,會再將 ECHO 的 GPIO pull low。

聲音在空氣中的傳播速度大約是每秒 340 公尺,傳播速度會受溫度影響,溫度愈高傳播速度愈快。

假設以 340 公尺計算,1000000 / 340 * 100 = 29.4 ms,四捨五入後,可知聲音傳播 1 公分所需的時間為 29 microseconds (百萬分之一秒)。

由於超音波從發射到返迴是兩段距離,因此在計算時必須將結果除以 2 才是正確的物體距離。所以我們可以利用底下的公式算出物體距離(距離單位為公分,其中 timing 是測量得到的音波傳播時間):

timing / 29 / 2

實驗材料

  1. 樹莓派主機(2或3代B+)
  2. 麵包板 + T型GPIO擴展板(T-Cobbler)
  3. 電阻 1kΩ x 1 與 2kΩ x 1
  4. HC-SR04 超音波感測器 x 1
  5. 杜邦線 x 5

接線指南

實作練習:偵測物體距離

Python 程式檔名:lab301.py

import RPi.GPIO as GPIO
import time

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

TRIG = 23
ECHO = 24

GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)

def get_distance():

    GPIO.output(TRIG, False)
    time.sleep(2)
    GPIO.output(TRIG, True)
    time.sleep(0.00001)
    GPIO.output(TRIG, False)

    while GPIO.input(ECHO)==0:
        start = time.time()

    while GPIO.input(ECHO)==1:
        end = time.time()

    return (end - start) * 17150

while True:
    print get_distance(), "cm"
    time.sleep(1)

GPIO.cleanup()

results matching ""

    No results matching ""